[已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

启动讨论 grub/grub2/syslinux/grub4dos/Lilo
回复
netstree
帖子: 29
注册时间: 2006-09-17 20:43

[已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#1

帖子 netstree » 2010-02-04 11:08

多系统共存,昨日xp中毒,重新安装xp后,mbr被覆盖,
原来安装在ubuntu alternate 9.10下用来引导多系统的grub2不起作用了。

我想使用ubuntu alternate 9.10的光盘进行恢复grub:

使用ubuntu的alternate 9.10光盘启动,顺利进入救援模式。
选择键盘语言国家之后,到硬盘分区检测完毕,按返回键,进入主菜单,选择shell:
(xp安装在/dev/sda1,freebsd安装在/dev/sda3,ubuntu 安装在/dev/sda4
slackware安装在/dev/sda5,debian 安装在/dev/sda6,
open suse安装在/dev/sda7,mandriva安装在/dev/sda8

依次使用以下命令:
#mkdir /mnt/a
#mount /dev/sda4 /mnt/a -t reiserfs
#chroot /mnt/a
#grub-install /dev/sda

在grub-install /dev/sda时出错:
grub-probe: error: cannot find a device for boot/grub.
No path or device is specified.
Try ``grub-probe --help'' for more information.

怎么办?

我后来在还是用光盘启动进入救援模式,在硬盘分区检测完毕后,按返回键,进入主菜单,选择救援系统。想在列出的分区列表中选择/dev/sda4作为根目录,然后"执行安装grub",但是选择/dev/sda4作为根目录失败。
又尝试在列出的分区中选择其它linux系统分区(比如/dev/sda5,6,7,8)作为根目录,挂载可以成功,但是“执行安装grub”时又失败
(最后还是选择挂载mandriva分区作为根目录,不选择“执行安装grub”,而是选择“在根目录中执行shell”,执行命令grub- install,成功安装mandriva系统中的grub到mbr,顺利进入mandriva系统,再进一步修改其menu.lst,增加其它 linux系统的引导项,重新启动电脑,在grub启动菜单中选择ubuntu 9.10救援模式,安装grub-install)。
上次由 netstree 在 2010-02-04 17:38,总共编辑 2 次。
FreeBSD=优雅的女人, Solaris=高贵的女人, Linux=年轻的女人, windows=午夜下班的女人

IBM ThinkPad x31:
XP SP3+Freebsd8.0+Ubuntu11.10+Qimo(儿童Linux)+Doudoulinux(儿童Linux)+Fedora16+Slackware13.0+Debian 5.03+OpenSUSE 11.2+Mandriva 2010
hunter108
帖子: 112
注册时间: 2009-11-02 10:29

Re: ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#2

帖子 hunter108 » 2010-02-04 15:55

之所以出现以上错误,估计是你chroot到那个目录了,其实并不需要chroot进去

用livecd修复grub

用ubuntu9.10的livecd启动后,打开终端

假如你的ubuntu的 / 分区是sda4,又假如 /boot分区是 sda6,用livecd启动,在终端下输入
sudo -i
mount /dev/sda4 /mnt
mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)
grub-install --root-directory=/mnt /dev/sda


如果grub.cfg己丢失,或grub.cfg出现错误,需要重建的继续执行下面操作:

mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys

#如果需要chroot的,不要忘了上面的三步,不然就有可能出错
chroot /mnt update-grub
umount /mnt/sys
umount /mnt/dev
umount /mnt/proc

exit
netstree
帖子: 29
注册时间: 2006-09-17 20:43

Re: ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#3

帖子 netstree » 2010-02-04 17:18

hunter108 写了:之所以出现以上错误,估计是你chroot到那个目录了,其实并不需要chroot进去

用livecd修复grub

用ubuntu9.10的livecd启动后,打开终端

假如你的ubuntu的 / 分区是sda4,又假如 /boot分区是 sda6,用livecd启动,在终端下输入
sudo -i
mount /dev/sda4 /mnt
mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)
grub-install --root-directory=/mnt /dev/sda
感谢hunter108!在你的提示下,我终于成功了,有两种解决方法:

我用虚拟机做了试验,我还是使用alternate 9.10光盘启动系统,进入shell:
安装grub6
安装grub6
错误1
错误1
错误2
错误2
(1)这样没成功。
mount /dev/sda2 /mnt -t reiserfs
grub-install --root-directory=/mnt /dev/sda
出错:/bin/sh: grub-install: not found
错误3
错误3
看来还得需要chroot啊!于是推倒重来,这样做:
(2)这样可以成功!
mount /dev/sda2 /mnt -t reiserfs
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
chroot /mnt
grub-install --root-directory=/mnt /dev/sda
又出错:grub-probe: error : Cannot find a GRUB drive for /dev/sda2. Check your device.map.
错误4
错误4
这个时候,不带 --root-directory=参数,
修改成:grub-install /dev/sda

终于成功了,有图有真相:
成功
成功
(3)这样也可以成功。还简单些:
还是使用alternate 9.10光盘启动系统,不进入shell,而是使用救援方式,图形界面下成功恢复grub,要注意的是选择安装grub的地方应该是/dev/sda或者(hd0),而不应该是/dev/hda:
有图有真相!
安装grub1
安装grub1
安装grub2
安装grub2
安装grub3
安装grub3
安装grub4
安装grub4
安装grub5
安装grub5
5.JPG (11.71 KiB) 查看 8709 次
FreeBSD=优雅的女人, Solaris=高贵的女人, Linux=年轻的女人, windows=午夜下班的女人

IBM ThinkPad x31:
XP SP3+Freebsd8.0+Ubuntu11.10+Qimo(儿童Linux)+Doudoulinux(儿童Linux)+Fedora16+Slackware13.0+Debian 5.03+OpenSUSE 11.2+Mandriva 2010
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#4

帖子 billbear » 2010-02-05 1:17

hunter108 写了:之所以出现以上错误,估计是你chroot到那个目录了,其实并不需要chroot进去

用livecd修复grub

用ubuntu9.10的livecd启动后,打开终端

假如你的ubuntu的 / 分区是sda4,又假如 /boot分区是 sda6,用livecd启动,在终端下输入
sudo -i
mount /dev/sda4 /mnt
mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)
grub-install --root-directory=/mnt /dev/sda


如果grub.cfg己丢失,或grub.cfg出现错误,需要重建的继续执行下面操作:

mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys

#如果需要chroot的,不要忘了上面的三步,不然就有可能出错
chroot /mnt update-grub
umount /mnt/sys
umount /mnt/dev
umount /mnt/proc

exit
grub2 的 grub-install 还是 chroot 比较稳当,--root-directory 这种用法在 grub2 经常不行的。1 楼没有成功主要是没有 bind /dev 进去,也就谈不上安装到 /dev/sda
头像
missing
帖子: 1470
注册时间: 2008-03-28 20:52
系统: QNX

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#5

帖子 missing » 2010-02-05 1:30

学习一下0(∩_∩)0
missing is i missing you...
netstree
帖子: 29
注册时间: 2006-09-17 20:43

Re: ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#6

帖子 netstree » 2010-02-05 8:58

billbear 写了:
hunter108 写了:之所以出现以上错误,估计是你chroot到那个目录了,其实并不需要chroot进去

用livecd修复grub

用ubuntu9.10的livecd启动后,打开终端

假如你的ubuntu的 / 分区是sda4,又假如 /boot分区是 sda6,用livecd启动,在终端下输入
sudo -i
mount /dev/sda4 /mnt
mount /dev/sda6 /mnt/boot (如果没 /boot 单独分区这步跳过)
grub-install --root-directory=/mnt /dev/sda


如果grub.cfg己丢失,或grub.cfg出现错误,需要重建的继续执行下面操作:

mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys

#如果需要chroot的,不要忘了上面的三步,不然就有可能出错
chroot /mnt update-grub
umount /mnt/sys
umount /mnt/dev
umount /mnt/proc

exit
grub2 的 grub-install 还是 chroot 比较稳当,--root-directory 这种用法在 grub2 经常不行的。1 楼没有成功主要是没有 bind /dev 进去,也就谈不上安装到 /dev/sda
有道理!
总结我的修复grub2过程,
我觉得关键是这几句:
mount --bind /proc /mnt/proc
mount --bind /dev /mnt/dev
mount --bind /sys /mnt/sys
chroot /mnt
只是还不明白是啥意思?

至于--root-directory=确实比较古怪:
我在虚拟机上grub-install时加上--root-directory=不行,去掉就可以,
而我在家里的真实机器上,不加--root-directory=就不行,非得加上--root-directory=/mnt
FreeBSD=优雅的女人, Solaris=高贵的女人, Linux=年轻的女人, windows=午夜下班的女人

IBM ThinkPad x31:
XP SP3+Freebsd8.0+Ubuntu11.10+Qimo(儿童Linux)+Doudoulinux(儿童Linux)+Fedora16+Slackware13.0+Debian 5.03+OpenSUSE 11.2+Mandriva 2010
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#7

帖子 smallapple » 2010-02-05 9:58

在 livecd 下可以直接用 grub-install --root-directory
Alternative下只能用 chroot
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#8

帖子 billbear » 2010-02-05 18:21

grub2 最好 chroot
grub 最好不 chroot
引用我的站内短信,
ptptptptptpt 写了:我看到 lub 里面这样写:

代码: 全选

grub1(){
	grub-install --root-directory="$tgt" $grubdev
	grub-install --root-directory="$tgt" $grubdev
	# grub-install (onto reiserfs) sometimes fails for unknown reason. Installing it twice succeeds most of the time.
	target_cmd "$tgt" update-grub -y
	sed -i "s/^hiddenmenu/#hiddenmenu/" $tgt/boot/grub/menu.lst
	windowsentry
}

grub2(){
	target_cmd "$tgt" grub-install $grubdev
	target_cmd "$tgt" update-grub
}
为何 grub1 不使用 target_cmd "$tgt" grub-install $grubdev 呢??
billbear 写了:老 grub 记得以前试过这种写法,但是好像工作不正常,具体是装不上还是什么情况忘记了。你试试看。
grub2 正相反,不 chroot 进去的话,安装到 mbr 没有问题,但是安装到分区不是装不上就是装上了启动不了,不知道为什么。你试试你那边是不是这样。我注意到每次安装到分区的时候 grub2 都会抱怨这是个 bad idea。
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#9

帖子 smallapple » 2010-02-05 18:30

grub2 正相反,不 chroot 进去的话,安装到 mbr 没有问题,但是安装到分区不是装不上就是装上了启动不了,不知道为什么。你试试你那边是不是这样。我注意到每次安装到分区的时候 grub2 都会抱怨这是个 bad idea。
grub2安装到分区时,就是在系统的root下操作也老是说 bad idea。这个应该和是否chroot没关系。

代码: 全选

# grub-install /dev/sda3
/usr/sbin/grub-setup: warn: Attempting to install GRUB to a partition instead of the MBR.  This is a BAD idea..
/usr/sbin/grub-setup: warn: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and its use is discouraged..
/usr/sbin/grub-setup: error: if you really want blocklists, use --force.
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#10

帖子 billbear » 2010-02-05 19:00

grub2安装到分区时,就是在系统的root下操作也老是说 bad idea。这个应该和是否chroot没关系。
是的,我说这个的意思是 grub2 对安装到分区的支持可能有限,以致在 livecd 用 --root-directory 并安装到分区时通常无法启动。但是 chroot 进去安装总能成功,尽管它也抱怨 bad idea。
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#11

帖子 smallapple » 2010-02-05 19:04

熊大,你安装到逻辑分区的能成功吗?
我试过N多次,只有一次成功的装在逻辑分区上。 :em06
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#12

帖子 billbear » 2010-02-05 21:22

我在调试 lub 的时候,用 lub 恢复备份并安装 grub2 到逻辑分区,记得是成功的。
用的是 chroot "$target" grub-install $grubdev, vmware
不过有时候这个命令要执行 2 次才能成功,后来改了脚本。
安装 grub2 到 reiserfs 分区印象中有时候有毛病。

我想用 livecd 也应该可以成功吧,虽然没试过。
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#13

帖子 smallapple » 2010-02-05 21:36

我不是用livecd的,是在系统中直接grub-install,加了 --force,最后提示也是no error ,但是在逻辑分区用g4dos的chainloader +1就是启动不了,现在用主分区的,grub-install 方法一样,就能安装成功。
billbear
帖子: 3681
注册时间: 2008-05-03 23:42

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#14

帖子 billbear » 2010-02-05 22:04

我不记得我有没有测试过逻辑分区了 :em06
头像
smallapple
论坛版主
帖子: 7868
注册时间: 2009-03-28 15:12

Re: [已解决]ubuntu 9.10 Alternate光盘进入救援模式如何重新安装grub?

#15

帖子 smallapple » 2010-02-05 22:21

billbear 写了:我不记得我有没有测试过逻辑分区了 :em06
我现在也转移到主分区了 :em04
回复