凡是都有局限,grub也不例外,它不能引导所有的操作系统,比如windows它就不能引导。
鉴于以上的情况,grub为了支持引导不支持的操作系统,开发了一种chainloader的引导方法,这种chainloader引导的不是操作系统,而是另外一个引导程序,下面以grub引导windows为例来讲述grub的chainloader功能。
chainloader是不能引导windows操作系统的,首先需要做的是进入grub命令行界面(目前基本上的linux发行版都是用的grub):
-
grub > ls ---列出该硬盘的的所有分区设备
-
grub > insmod ntfs ----加载ntfs功能模块,grub的功能以功能模块的方式存放在/grub/xxx.mod
-
grub > insmod chain ----加载chainloader功能模块
-
grub > set root=(hd0,1) ----该硬盘上的第一个分区为XP系统分区
-
grub > boot ----启动XP引导
上面的几句简单的命令并不是那么简单,grub对大多数人是很神秘的,这是第一个问题。其二,必须要清楚GRUB是以模块的方式来加载功能体的,和linux的内核模块是一样的,可以用lsmod列出已经加载的模块。
网上有很多这方面的资料,但是很多是不对的,有可能是版本的差异问题,我没有去深究,我这里学习的是第二个版本,比如:
1.加载模块
grub > insmod xxxx/nfts.mod
grub > insmod xxxx?insmod chainloader.mod
我擦,这些东东是不行的,很想喷下了。
2.关于引导
首先必须明确加载GRUB的是MBR,而MBR是和任何操作系统无关的,一张硬盘只有一个MBR,所以chainloader不是引导的MBR,而且GRUB是不能引导GRUB本身的,上面是我测试的windows,在windows当中是可以的,虽然没有完全引导起来(出现XP界面,我认为是XP系统的问题)。于是得到一个结论,GRUB可以引导WINDOWS的引导程序。而这个引导程序在通常情况下是应该有MBR来引导的,多种情况的引导图:
-
grub引导:
-
-
1.MBR->GRUB->linux
-
2.MBR->GRUB->chainloader
-
-
windows引导:
-
1.MBR->windows引导程序(和windows系统放在一起)
-
-
grub引导windows:
-
MBR->GRUB->chainloader->windows引导程序
由于讨论的是grub的基础知识,就不讨论另外的引导情况了。windows当然也能引导linux,比如用wubi安装的ubuntu,就是可以用windows的引导程序引导的。
阅读(1740) | 评论(0) | 转发(0) |