所谓的
chain loader (
开机管理程序的链½
)
½是在½控制权½给下一个
boot loader
而已,
所以
grub2
并不需要认识与找出
kernel
的檔名
,『
他只是½
boot
的控制权½给下一个
boot sector
或
MBR
内的
boot loader
而已
』
所以通常他也不需要去查验下一个
boot loader
的文件系统!
一般来说,
chain loader
的设定只要两个就够了,一个是预计要前往的
boot sector
所在的分区槽
代号,
另一个则是设定
chainloader
在那个分区槽的
boot sector (
第一个扇区
)
上!假设我的
Windows
分区槽在
/dev/sda1
,且我又只有一颗硬盘,那么要
grub
½控制权½给
windows
的
loader
只要这样就够了:
menuentry "Windows" {
insmod chain
#
你得要先加
载
chainloader
的模
块对
吧?
insmod ntfs
#
½
议
加入
windows
所在的文件系
统
模
块½
佳!
set root=(hd0,1)
#
是在哪一
个
分区
槽~最重要的
项
目!
chainloader +1
#
请
去
boot sector
½
loader
软
件
读
出
来
的意思!
}
透过这个项目我们就可以让
grub2
½出控制权了!
问:
假设你的测试系统上面使用
MBR
分区
槽,并且出现如下的数据:
[root@study ~]#
fdisk
-
l /dev/vda
Device Boot Start End Blocks Id System
/dev/vda1 2048 10487807 5242880 83 Linux
/dev/vda2 * 10487808 178259967 83886080 7 HPFS/NTFS/exFAT
/dev/vda3 178259968
241174527 31457280 83 Linux
其中
/dev/vda2
使用是
windows 7
的操作系统。现在我需要增加两个开机选项,一个是取得
windows 7
的开
机选单,一个是回到
MBR
的预设环境,应该如何处理呢?
答:
windows 7
在
/dev/vda2
亦即是
hd0,msdos2
这个地方,而
MBR
则是
hd0
即可,不需要加上
分区
槽啊!因
此整个设定会变这样:
[root@study ~]#
vim /etc/grub.d/40_custom
menuentry 'Go to Windows 7'
--
id 'win7' {
insmod chain
insmod ntfs
set root=(hd0,msdos2)
chainloader +1
}
menuentry 'Go to MBR'
--
id 'mbr' {
insmod chain
set root=(hd0)
chainloader +1
}
[root@study ~]#
grub2
-
mkconfig
-
o /boot/grub2/grub.cfg