我有分寸

硬盘分区调整导致grub无法引导的修复

gnawux bootgrubworks

1. 定位 boot 分区:
==================
"grub>"提示符下运行如下命令:
grub> find /grub/stage1
(hd0,4)
如果得到类似上述的结果,则表明存在单独的 /boot 分区,这是 Red hat 的典型
风格,记为(*),相应的记 /dev/hda5 为 (*')。(*)到(*')的映射遵循如下规律
(hdm,n)-->(/dev/hdck)
m=0,1,2,3 ---> c=a,b,c,d
k=n+1
如果没有得到有用结果,则表明不存在 /boot 分区,那么运行如下命令
grub> find /boot/grub/stage1
(hd0,4)
记此结果为 (**),对应的 (**') 使用同样的方式转换而成
(*) 或 (**) 就是对应的 grub 的分区的位置,记为 (grub)
2. 定位根分区:
==============
如果存在(**') 则这个就是根分区,如果存在(*),则运行如下命令
grub> find /etc/fstab
(hd0,6)
记上述结果为 (***) 并用同样规则,相应得到 (***')
(**') 或 (***') 就是的根分区的位置,记为 (root')
3. 引导系统:
一共需要三到四条命令:
a) grub>root (grub)
例如
grub> root (hd0,4)
b) kernel (vmlinuz) root=(root') ro
这里(vmlinuz)以如下方式确定
如果(*)
grub> kernel /vmlinuz
如果(**)
grub> kernel /boot/vmlinuz
输入上面内容后,*不要回车*,连按tab键,可以得到匹配文件名列表,选择一个
合适的,输入完整,格式如下
grub> kernel /vmlinuz-2.6.10-1 root=/dev/hda5 ro

grub> kernle /boot/vmlinuz-2.6.10-1 root=/dev/hda7 ro
c) initrd (initrd)
同样按照上面同样的命令行补全方式,输入,例如
grub> initrd /initrd-2.6.10-i386.img

grub> initrd /boot/initrd-2.6.10-i386.img
d) boot
grub> boot
至此,系统启动
4. 修复引导程序:
a)首先使用(root')和(boot')更新 /etc/fstab 里面的 / 和 /boot 的设备号,
如果有其它分区,相应调整。
b) 修改 /boot/grub/menu.lst 或 grub.conf
按照步骤3里面的数据修改此文件
c) 重新安装 grub
以root用户
# grub
grub> root (boot)
grub> setup (hd0)
大概就是这样了,没有实验,直接写的,恐怕有些地方有些疏漏,请大家指正。

gnawux
me!#$!@#$@#$wangxu!@#$%^&*()_me