在分区概念章节里,我们已经介绍了 Linux 系统中表示分区的方法 /dev/sda5
/dev/sdMN M 为 a 起始的小写字母,表示硬盘序号;N 为 1 起始的数字,表示分区序号
Grub 中使用的表示方法为 hd0,1
hdX,Y X 为 0 起始的数字,表示硬盘序号;Y 为 0 起始的数字,表示分区序号
留意它们之间的区别:
举例来说:
分区分布 | 主分区 | 主分区 | 逻辑分区 | 逻辑分区 | 主分区 |
---|---|---|---|---|---|
/dev/sdMN | sda1 | sda2 | sda5 | sda6 | sda3 |
hdX,Y | hd0,0 | hd0,1 | hd0,2 | hd0,3 | hd0,4 |
现在我们来看 root 和 setup 命令的使用,sudo grub
进入 Grub 交互模式:
grub>root (hd0,1) grub>setup (hd0)
为 Grub 配置文件 grub/menu.lst
和stage[39]
文件所在分区。假如您单独为 /boot
目录挂载了一个分区,那么 Grub 的根分区通常为您系统中 /boot
目录所在的分区。
搞错了根分区,Grub 就不能正确读取配置文件,自然不能正确引导。[40]
Linux 根目录 /
的挂载分区。Linux 系统的分区挂载信息保存在文件系统分配表 /etc/fstab
文件中
Grub 首先读取根分区[41]中的 /boot/grub/menu.lst
文件,并转到引导分区,如果是 Windows 等系统,则将控制权移动分区引导扇区中的启动管理器。如果是 Linux 系统,则加载内核和设备,并根据 /etc/fstab
文件的内容挂载文件系统。
看这个例子:(假设 Grub 安装在 MBR 中,Grub 的安装位置为 (hd0)
)
title Linux root (hd0,0) kernel (hd0,1)/vmlinuz-2.6.15-25-686 root=/dev/sda3 ro splash vga=0x31b initrd (hd0,1)/initrd.img-2.6.15-25-686 boot