[已解决] 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
einstl
帖子: 14
注册时间: 2008-11-17 22:01

[已解决] 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#1

帖子 einstl » 2009-03-10 19:55

win+ubuntu双系统,由于后来重装winxp搞的原grub失效。
起初看到简单的方法是找个grub4dos,然后找个读linux文件格式的工具,把menu.lst拷过来就ok。结果发现找了几个工具都认不出原来的linux分区。
接着找了张livecd(是Kubuntu的,不知道有没有影响),拷贝那个grub下的menu.list回去到grub4dos那里,失败。
然后在grub4dos那个启动菜单下按c进入命令行,root (hd0, "tab" ... 是能看到linux那个分区的(是6),但是root (hd0,6)后setup(hd0)出错说找不到stage1。进livecd系统以后mount了那个分区后/boot/grub/stage1是有的。但是在这个终端下用sudo grub,find /boot/grub/stage1找不到。
之后google半天找到这个:http://skies123.gofreeserve.com/2009/01 ... in-ubuntu/
我的grub版本是0.97,文件格式ext2,用里面的方法3:
sudo mount /dev/sdaX /mnt
sudo grub-install /dev/sda –root-directory=/mnt
提示的却不是OK而是...or not a block device。

折腾很长时间了,求助大家了
上次由 einstl 在 2009-03-14 10:58,总共编辑 1 次。
头像
old_fish
帖子: 12
注册时间: 2009-03-07 22:13

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#2

帖子 old_fish » 2009-03-10 20:12

我感觉应该是:
1)用live CD进入ubuntu,运行grub,执行命令:
root (hd0,6) //如果linux的分区确实是6的话
setup (hd0)//这是把grub引导程序写入MBR

2)修改/boot/grub/menu.lst,添加:
title windows XP
root (hd0,0)
makeacttive
chainloader+1
torres9x
帖子: 7
注册时间: 2009-03-09 21:45

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#3

帖子 torres9x » 2009-03-10 20:22

你把menu.list内容贴出来给大家看看
einstl
帖子: 14
注册时间: 2008-11-17 22:01

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#4

帖子 einstl » 2009-03-11 8:47

title Ubuntu 8.10, kernel 2.6.27-8-generic
uuid 066e64f2-034b-4248-86be-e980661bfd6d
kernel /boot/vmlinuz-2.6.27-8-generic root=UUID=066e64f2-034b-4248-86be-e980661bfd6d ro quiet splash
initrd /boot/initrd.img-2.6.27-8-generic
quiet

title Ubuntu 8.10, kernel 2.6.27-8-generic (recovery mode)
uuid 066e64f2-034b-4248-86be-e980661bfd6d
kernel /boot/vmlinuz-2.6.27-8-generic root=UUID=066e64f2-034b-4248-86be-e980661bfd6d ro single
initrd /boot/initrd.img-2.6.27-8-generic

title Ubuntu 8.10, kernel 2.6.27-7-generic
uuid 066e64f2-034b-4248-86be-e980661bfd6d
kernel /boot/vmlinuz-2.6.27-7-generic root=UUID=066e64f2-034b-4248-86be-e980661bfd6d ro quiet splash
initrd /boot/initrd.img-2.6.27-7-generic
quiet

title Ubuntu 8.10, kernel 2.6.27-7-generic (recovery mode)
uuid 066e64f2-034b-4248-86be-e980661bfd6d
kernel /boot/vmlinuz-2.6.27-7-generic root=UUID=066e64f2-034b-4248-86be-e980661bfd6d ro single
initrd /boot/initrd.img-2.6.27-7-generic

title Ubuntu 8.10, memtest86+
uuid 066e64f2-034b-4248-86be-e980661bfd6d
kernel /boot/memtest86+.bin
quiet

### END DEBIAN AUTOMAGIC KERNELS LIST

# This is a divider, added to separate the menu items below from the Debian
# ones.
title Other operating systems:
root


# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sda1
title Microsoft Windows XP Professional
root (hd0,0)
savedefault
makeactive
chainloader +1

;;;;;;;;;;;;;;;
后来试了试把前面加上root (hd0,6) 也不行的,提示Error 2 : "Bad file or directory type"
einstl
帖子: 14
注册时间: 2008-11-17 22:01

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#5

帖子 einstl » 2009-03-11 9:15

old_fish 写了:我感觉应该是:
1)用live CD进入ubuntu,运行grub,执行命令:
root (hd0,6) //如果linux的分区确实是6的话
setup (hd0)//这是把grub引导程序写入MBR

2)修改/boot/grub/menu.lst,添加:
title windows XP
root (hd0,0)
makeacttive
chainloader+1
;;;;;;;;
这样的话到setup那句话的时候就报错了
提示找不到/grub/stage1
torres9x
帖子: 7
注册时间: 2009-03-09 21:45

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#6

帖子 torres9x » 2009-03-11 16:55

我这两天也在搞grub4dos启动,根据我的经验,楼主可以这样操作:

1.COPY三个文件(grldr,grub.exe,menu.lst)到C盘根目录

2.编辑C盘下boot.ini文件,增加一行 C:\GRLDR="Ubuntu"(冒号里随便写什么)

3.编辑你的menu.lst
在缺少root的地方增加root即可

我看你的menu.lst里部分内容是这样的:
title Ubuntu 8.10, kernel 2.6.27-8-generic
uuid 066e64f2-034b-4248-86be-e980661bfd6d
kernel /boot/vmlinuz-2.6.27-8-generic root=UUID=066e64f2-034b-4248-86be-e980661bfd6d ro quiet splash
initrd /boot/initrd.img-2.6.27-8-generic
quiet

那么在title后加一行变成这样:
title Ubuntu 8.10, kernel 2.6.27-8-generic
root (hd*,*)
uuid 066e64f2-034b-4248-86be-e980661bfd6d
kernel /boot/vmlinuz-2.6.27-8-generic root=UUID=066e64f2-034b-4248-86be-e980661bfd6d ro quiet splash
initrd /boot/initrd.img-2.6.27-8-generic
quiet

注,root (hd*,*)是指你的系统所在位置,第一个硬盘的第一个分区为root (hd0,0),以此类推

这样修改后我想应该可以从grub4dos启动了
头像
bigsun
帖子: 301
注册时间: 2009-01-11 16:05

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#7

帖子 bigsun » 2009-03-12 10:43

einstl 写了:
old_fish 写了:我感觉应该是:
1)用live CD进入ubuntu,运行grub,执行命令:
root (hd0,6) //如果linux的分区确实是6的话
setup (hd0)//这是把grub引导程序写入MBR

2)修改/boot/grub/menu.lst,添加:
title windows XP
root (hd0,0)
makeacttive
chainloader+1
;;;;;;;;
这样的话到setup那句话的时候就报错了
提示找不到/grub/stage1
也遇到了这个问题,情况是这样的,要重新分区安装arch,原来装的是xp,gentoo双系统,当在win下把最后的ntfs分区调整大小,添加了两个新分区后,进不了系统,好像提示grub error 17之类的。要重新安装grub,就遇到上述问题
解决办法是:用fdisk将两个新分区删除,再安装grub,正常没报错,然后再用fdisk添加两个分区hda9,hda10。安装arch。
好奇怪的问题。
grub 0.97
einstl
帖子: 14
注册时间: 2008-11-17 22:01

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#8

帖子 einstl » 2009-03-13 9:12

bigsun 写了:
einstl 写了:
old_fish 写了:我感觉应该是:
1)用live CD进入ubuntu,运行grub,执行命令:
root (hd0,6) //如果linux的分区确实是6的话
setup (hd0)//这是把grub引导程序写入MBR

2)修改/boot/grub/menu.lst,添加:
title windows XP
root (hd0,0)
makeacttive
chainloader+1
;;;;;;;;
这样的话到setup那句话的时候就报错了
提示找不到/grub/stage1
也遇到了这个问题,情况是这样的,要重新分区安装arch,原来装的是xp,gentoo双系统,当在win下把最后的ntfs分区调整大小,添加了两个新分区后,进不了系统,好像提示grub error 17之类的。要重新安装grub,就遇到上述问题
解决办法是:用fdisk将两个新分区删除,再安装grub,正常没报错,然后再用fdisk添加两个分区hda9,hda10。安装arch。
好奇怪的问题。
grub 0.97
可是我当初重装win的时候并没有改变分区大小,还有没提示grub error 17
ps. 最近有时候ubuntu论坛等不上去……不知为何
1234qw
帖子: 389
注册时间: 2007-12-31 11:40

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#9

帖子 1234qw » 2009-03-13 10:27

用live CD进入ubuntu用分区编辑器查看/分区所在,另一方法把boot文件复制到C盘然后:
root (hd0,0)
setup (hd0)
einstl
帖子: 14
注册时间: 2008-11-17 22:01

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#10

帖子 einstl » 2009-03-14 9:34

1234qw 写了:用live CD进入ubuntu用分区编辑器查看/分区所在,另一方法把boot文件复制到C盘然后:
root (hd0,0)
setup (hd0)
能看到分区6为原linux系统分区,但是setup的时候出错,find /boot/grub/stage1也找不到

是不是stage那个文件坏了,难道只能重装系统了?
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#11

帖子 billbear » 2009-03-14 10:21

你的 ubuntu 是什么版本,8.10?
livecd 又是什么版本,8.04?
找的 grub4dos 又是什么版本,0.4.3?

8.04 的 livecd 不能用来修复 8.10 的 grub
grub4dos 0.4.3 也不能读取 8.10 的 ext 分区
这都是由于 8.10 使用了与以往不同的 ext 格式
起初看到简单的方法是找个grub4dos,然后找个读linux文件格式的工具,把menu.lst拷过来就ok。结果发现找了几个工具都认不出原来的linux分区。
你受到了误导。你不必从 linux 分区拷贝任何文件。如果已经拷贝了 menu.lst,现在把它们删除,确保只有 linux 分区里有唯一的 menu.lst,然后到 http://download.gna.org/grub4dos/ 下载最新的 grub4dos,目前是 grub4dos-0.4.4-2009-03-07.zip ,解开后只需要里面的一个文件, grldr,放在 c 盘根目录,如果有旧版本的 grldr,请用新版覆盖,然后在 boot.ini 里添加 c:\grldr=ubuntu 就可以了。如果没有改动过 linux 分区里的文件,应该就能启动了。
einstl
帖子: 14
注册时间: 2008-11-17 22:01

Re: 求助——修复grub出现error 15, 但/boot/grub/stage1确实还在

#12

帖子 einstl » 2009-03-14 10:56

billbear 写了:你的 ubuntu 是什么版本,8.10?
livecd 又是什么版本,8.04?
找的 grub4dos 又是什么版本,0.4.3?

8.04 的 livecd 不能用来修复 8.10 的 grub
grub4dos 0.4.3 也不能读取 8.10 的 ext 分区
这都是由于 8.10 使用了与以往不同的 ext 格式
起初看到简单的方法是找个grub4dos,然后找个读linux文件格式的工具,把menu.lst拷过来就ok。结果发现找了几个工具都认不出原来的linux分区。
你受到了误导。你不必从 linux 分区拷贝任何文件。如果已经拷贝了 menu.lst,现在把它们删除,确保只有 linux 分区里有唯一的 menu.lst,然后到 http://download.gna.org/grub4dos/ 下载最新的 grub4dos,目前是 grub4dos-0.4.4-2009-03-07.zip ,解开后只需要里面的一个文件, grldr,放在 c 盘根目录,如果有旧版本的 grldr,请用新版覆盖,然后在 boot.ini 里添加 c:\grldr=ubuntu 就可以了。如果没有改动过 linux 分区里的文件,应该就能启动了。
:em11 搞定了!把menu.lst删掉,把grldr换成新的就好了。非常感谢

开始自己没把ubuntu是810而livecd是804的问题提出来真是不应该,原来以为这东西无所谓的……
回复