一、安装到mbr(mbr=Master Boot Records,主引导记录区)
: u8 w: y8 @8 B' d8 Y a4 Z: V2 F& s 因为安装windows,或者不小心删除/改变了mbr,都有可能导致启动时看不到grub的引导菜单或者提示出错,下面是恢复的办法4 i$ g% A0 Q4 T! c
(写于Ubuntu下,但应该可适用于其它系统)
1 x+ `" w) A7 o/ a: J 使用Ubuntu livdCD启动,出现桌面后,打开一个终端,输入:4 T& _* d, ~7 {; f6 I& [
sudo grub1 \1 u- e: B# ^- a
然后在grub>下输入8 ?& t6 R+ } W* c: u
grub>find /boot/grub/stage1
/ ~) l: B3 Q/ `& l 查找到grub的文件所处的位置,如果安装了多个linux系统,会全部显示出来,看好Ubuntu的/boot/grub/所在的位置,然后
. x; i% C' v6 _* ~ grub>root (hd?,?)
2 T, o1 }4 ~* G; z5 m (hd?,?)中的问号用Ubuntu下的/boot/grub/位置取代,比如上面的find命令查找结果是hd(0,1),那这儿就是root(hd0,1)( C* y# H% _3 {- N$ ^! u
使用下面的命令把grub安装到mbr上:2 ]9 H$ ]$ c8 S/ p. Y# @! g: A
grub>setup (hd0)
, }$ h7 P& ?4 t% z* v. \# y 退出
$ W( n0 G+ J1 d. J: x. K grub>quit4 ~% v" B |# R1 H. B- B) @
解释一下:$ U3 F3 ?$ P+ Z) F' U$ s
sudo grub得到grub命令解释器
w5 [' m0 Y' j; J, V& F find /boot/grub/stage1用来查找stage1文件的位置,它告诉我们grub的文件在哪儿。只有一小部分grub放在mbr上,其它部分位于你的boot文件夹。grub需要这些文件来安装。3 M6 C" c ~1 n) n' ^/ O! Y. S" Y
最后setup(hd0)把grub安装到hd0。当使用hd0参数而没有提供具体分区时,grub安装到mbr。grub认为hd0是第一个硬盘的mbr区标志。
9 \ h2 m4 I) d5 A" g" R% ]: y) o' b 二、安装到其它分区
. U% N( g l8 P" t2 _" } thanks to 5-HT3 B, W, T9 H$ ]8 J0 m
如果想把grub安装到一个分区而不是mbr上,把setup (hd0)改成setup (hdx,y)。X表示是第几块硬盘,Y是这块硬盘上的第几个分区。grub的计数方法是从0开始(如hd0,1表示第一块硬盘上的第2个分区)
8 a$ ?4 s8 C; ] d4 R4 x 三、如果grub找不到stage1文件或认不出硬盘
$ z# O; \* J, Y* A- @ thanks to TOSK8 `( {) }. |* X0 y% R0 ^
1.使用livdCD加载/root分区9 Q; f8 P) v( A0 M8 I$ s9 C8 }4 y
sudo mkdir /mnt/root' _% t2 b, ^5 m H
sudo mount -t ext3 /dev/sda6 /mnt/root
n! G }4 c, \+ v$ p) G/ G 2.在/mnt/root下加载proc与udev# p& c* M, g+ r8 a& [* k
sudo mount -t proc none /mnt/root/proc- t& a9 e, Y8 n1 p- b4 {
sudo mount -o bind /dev /mnt/root/dev2 q8 L: ~ b4 ^& I
这样grub能认出你的驱动器乐。下一步:
B$ L+ ?/ }* o( F% ^ sudo chroot /mnt/root /bin/bash
3 R2 m- K! I+ ?4 U% Q+ W( g 关于chroot,参见:
1 s8 Y: V5 h0 Y, x2 U# F 什么是chroot6 F4 P8 N7 h$ v% T
linuxfocus.org/ChineseGB/January2002/article225.shtml" target=_blank>chroot linux中所有的服务, D: \% O: ?3 ?3 q# q0 y9 I
然后如果想安装grub到mbr上" f1 Y; |8 n/ l
(一)安装到mbr上,这台机器上有3个os,都能良好运行。1 _- B# ^/ ~# E$ _8 {/ C
(二)安装到一个分区,这台机器上也有3个os,俺安装到hd(2,0)上,结果刚开始时grub菜单没出现,因为电脑是默认从hd0上找启动器的,后来改成从hd2启动,就解决问题了。 |