LiveLinux系列(2)–使用Grub2启动不同媒介

  • Post author:
  • Post category:Ubuntu
  • Post comments:2评论

上一篇文章介绍了如何在U盘上安装grub2,这篇讲解一下如何编写grub.cfg文件来启动不同的启动媒介,包括启动安装好的操作系统,Linux光盘镜像,PE光盘镜像等。

1.启动已安装的WinXP/Vista/Win7系统

menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
	insmod part_msdos
	insmod ntfs
	set root='(/dev/sda,msdos1)'
	chainloader +1
}

核心的部分是

	set root='(/dev/sda,msdos1)'
	chainloader +1

set root 语句是设置安装Windows系统的分区,'(/dev/sda,msdos1)’等价于(hd0,1)。

2.启动已安装的Linux系统

menuentry 'Ubuntu, with Linux 2.6.38-11-generic' --class ubuntu --class gnu-linux --class gnu --class os {
	insmod part_msdos
	insmod ext2
	set root='(/dev/sda,msdos3)'
	linux	/boot/vmlinuz-2.6.38-11-generic root=UUID=9fbd205b-1151-41c8-b48f-c8e0887f8d60 ro   quiet splash vt.handoff=7
	initrd	/boot/initrd.img-2.6.38-11-generic
}

上述给出的比较详细的写法,实际上可以写的更加简单一些:

insmod part_msdos
insmod ext2
set root='(/dev/sda,msdos3)'
linux /boot/vmlinuz-2.6.38-11-generic root=UUID=9fbd205b-1151-41c8-b48f-c8e0887f8d60 ro
initrd /boot/initrd.img-2.6.38-11-generic

linux是代替grub中的kernel指令,该指令后面的root参数必不可少,root参数后面要给出linux系统安装分区的位置,可以用uuid表示,如给出的例子所示,也可以用(hd0,3)这种传统的方法表示。

3.启动WinPE文件

menuentry 'Win7PE' --class windows --class os {
        set root='(/dev/sda,msdos4)'
        ntldr /boot/win7pe.bin
}

直接使用使用ntldr启动即可。

4.启动Dos镜像文件

Dos镜像文件一般为img格式,需要通过memdisk来启动,一般img会带上对应的memdisk文件。对于大于1.44Mb
的img文件,还需要添加c h s参数。实例如下:

menuentry 'DTSTool' --class dos --class os {
        set root='(/dev/sda,msdos4)'
        linux16  /boot/isolinux/memdisk  c=147 h=5 s=36 floppy
        initrd16 /boot/imgs/DTStool.IMA
}

使用linux16和initrd16来启动Dos镜像,c,h,s参数的设置方法可以参考:
http://www.syslinux.org/wiki/index.php/MEMDISK

继续阅读LiveLinux系列(2)–使用Grub2启动不同媒介