GRUB命名约定和链式加载引导项

2.GRUB命名约定

GRUB使用的设备符和之前在你的操作系统中见过的有点不同,而且你需要了解它以便你能够指定驱动器或者分区。
请看如下例子和解释:

(fd0)

首先,GRUB需要设备名称附上左右括号()。“fd”部分代表这是一个软盘(floppy disk)。数字“0”代表它的驱动器编号为0。这个表达式意味着GRUB将会使用整个软盘。

(hd0,msdos2)

在这里,“hd”代表这是一个硬盘(hard disk)。第一个整数“0”表示驱动器号,也就是说这是第一块硬盘,字符串“msdos”表示分区结构,整数“2”表示分区号(或者是BSD术语中的PC切片号)。分区号从1开始计数,不是从0计数的(就像从前的GRUB版本一样)。这个表达式代表第一块硬盘的第二分区。在这种情况下,GRUB使用的是磁盘中的一个分区,而不是整个磁盘。

(hd1,msdos1,bsd1)

这代表BSD“a”分区在第二块硬盘的第一个分区上。
当然,要使GRUB能访问磁盘或分区,你需要在命令行中使用设备规范语法规则,像“set root(fd0)”或“parttool (hd0,msdos3) hidden-”。为了帮你找出哪个数字是你想要的分区号,GRUB命令行(详情见Command-line interface)选项有完整的参数提示。这代表着,例如,你只需要去打set root=(然后按TAB键,GRUB将会列出所有的驱动器,分区,或者文件名。因此,就算你对语法不太了解,这样应该也会非常容易找出你想要的分区。
注意,GRUB不区分IDE和SCSI-它简单地从0开始计算驱动器号,不管它们的类型是什么。通常来说,任何IDE驱动号都小于SCSI驱动号,但如果你通过在你的BIOS中交换IDE和SCSI驱动器来改变引导序列,那就不对了。
现在问题是,如何指定文件?再来思考一个例子:

(hd0,msdos1)/vmlinuz

这个例子指定了名为“vmlinuz”的文件,它是在第一块硬盘的第一个分区找到的。注意完整的参数提示也适用于文件名。

5.1.2 链式加载引操作系统

不支持多引导和没有在GRUB中有特殊说明的操作系统(Linux,FreeBSD,NetBSD和OpenBSD可以使用特定支持)必须被链式加载,这需要加载另一个引导加载程序并跳转到真正的操作系统中去。
链式加载命令就是被用于加载这种操作系统的。加载一些GRUB模块和设置合适的根设备通常来说是很有必要的。把这些放在一起,我们得到这样的东西,对于在第一块硬盘的第一个分区的Windows操作系统来说:
menuentry “Windows”{
insmod chain
insmod ntfs
set root=(hd0,1)
chainloader +1
}
在多硬盘的系统上,可能需要额外的变通方法。
链式加载仅在PC的BIOS和EFI平台支持。


文章源自[1]:https://www.gnu.org/software/grub/manual/grub/grub.html#Role-of-a-boot-loader

猜你喜欢

转载自blog.csdn.net/yabaj/article/details/79666018
今日推荐