排除 GRUB 的问题
假若一个系统的 GRUB 设置出现问题(成因包括:不正确地修改 GRUB 配置文件、安装另一个操作系统、硬件上或 BIOS 内的改动引致设置的排序不相同),导致 GRUB 不能找到它的配置文件,你可能会面对 grub 的开机提示符而无从着手。普遍来说,第一步是要找出 GRUB 配置文件的位置。GRUB 的 find 指令可以为你效努。
grub> find /grub/grub.conf find /grub/grub.conf (hd0,2) (hd1,2)
这里告欣我们有两个 /boot 分区,有可能源自软件 RAID 或不同操作系统。头一个位于第一个硬盘的第三个分区,而另一个位于第二个硬盘的第三个分区。假若要将第一个项目的 GRUB 设置重新安装到 MBR:
grub> root (hd0,2) grub> setup (hd0)
如果你安装了其它 Linux 版本,例如 Ubuntu,它也设只有 menu.lst 档而没有 grub.conf,但由于 CentOS 利用连结把 menu.lst 指向 grub.conf,因此在这两款系统上寻找 menu.lst 亦可行:
grub> find /grub/grub.conf find /grub/grub.conf (hd0,0) grub> find /grub/menu.lst find /grub/menu.lst (hd0,0) (hd0,1)
这里告欣我们有两个 /boot 分区,头一个位于第一个硬盘的第一个分区,很可能正是 CentOS,而另一个 Linux 的 /boot 位于第一个硬盘的第二个分区。
要查看 grub.conf 及 menu.lst 档的内容,可使用 GRUB 的 cat 指令:
grub> cat (hd0,0)/grub/grub.conf ... 显示文件内容 ... grub> cat (hd0,1)/grub/menu.lst ... 显示文件内容 ...
要是首轮尝试找不到文件,很可能 /boot 分区并不存在,而 grub 被安装在主目录内。你可试用
grub> find /boot/grub/grub.conf (hd0,0) (hd1,4)
同样地,这个例子里有两个 GRUB 安装。头一个在第一个硬盘的第一个分区,而另一个在第二个硬盘的第五个分区 —— 亦即首个扩展分区。
若果要撤消第二个项目并将 GRUB 的开机程序安装在第一个硬盘的 MBR 上:
grub> root (hd1,4) grub> setup (hd0)
要是你不清楚主目录的位置时,你可以尝试寻找 /etc 内的一个文件。譬如:
grub> find /etc/fstab (hd0,1)
由此我们得知 / 位于第一个硬盘的第二个分区上 —— 采用 SCSI 或 SATA 等于 /dev/sda2,而采用 PATA 等于 /dev/hda2。
GRUB 的指令壳还有很多功能,并且在 GRUB 的 info 档内有详情记载,请利用 info grub 来访问它们。
其它 GRUB 文章:
这页的英文版由 PhilSchaffner 创建及维护。欢迎其它 Wiki 贡献者作出更正、添加或修改。
Translation of revision 6