静是从容,淡是境界
分类: LINUX
2006-09-14 12:23:58
一般地,启动设备就是硬盘,硬盘与启动相关的东西有两样:硬盘的主引导记录MBR,硬盘各分区的引导记录(标识为可引导的分区)。当系统从硬盘启动时,过程是这样:BIOS装入MBR,根据MBR决定跳转到操作系统启动程序,或者是继续跳转到可引导的分区并由分区引导记录决定跳转到操作系统的启动程序。优先顺序:MBR、分区引导记录、系统启动程序
当把引导器安装到MBR时,MBR的引导过程就是执行引导器的过程;将引导器安装到分区时,启动分区的过程就是执行引导器的过程。
最常见的情况:MBR上安装的是NT loader或者是GRUB,当引导器执行时,找到可引导的分区并装入系统启动程序,系统启动程序装入系统核心,然后继续……
特殊的情况:当电脑上装有多个系统时,这里说最简单的双系统的情况:MBR上装有Nt loader或者是Grub,引导器执行后出现引导菜单,由用户来选择启动某个系统,当选择一个系统后,引导器就跳转到装有这个系统的分区,这个分区一定是可引导的,然后从这个引导分区装入系统启动程序,启动系统。
最特殊的情况:MBR上和可引导的分区上都装有引导器,执行顺序就会这样:MBR上的引导器出现引导菜单,选择某菜单后,假定这个菜单指向的是那个装有引导器的可引导的分区,那么就会执行那个引导分区上的引导器,会再出现一个引导菜单,再次选择某个菜单后可以跳转到系统启动程序,正式启动操作系统。也可以选择某个菜单后再跳回MBR,再次执行MBR上的引导器,再次出现引导菜单,这就算是返回上级引导菜单。
NT Loader不能识别Linux系统,却可以识别可引导的分区,Linux的boot分区就是可引导分区,所以将Linux的boot分区引导记录复制下来存成文件,将将文件放到NT Loader可读的文件系统下,比如FAT32或者是NTFS文件系统的分区下,比如C盘下,再修改boot.ini文件,加入C:\bootlinux(Linux分区引导记录文件),当出现NT loader菜单时,选择这一项,就会跳转到Linux的引导分区,从而实现用Nt Loader来引导Linux的目的。这样也可以避免重装Windows系统后不能引导Linux的问题。这时只要Linux分区是可引导的,不装Grub引导器都可以,因为分区本身就是可引导的。
当把Grub装到引导分区而非MBR时,就是第三种情况,在Nt Loader中添加了启动Linux项目的前提下,当选择了启动Linux项目,则会执行可引导分区上的Grub,出现Grub菜单,这时grub菜单只有Linux系统,如果是超过多个系统的话,grub这时有可能存在引导其他操作系统的菜单项。
在Grub不支持跨硬盘的跳转,比如:系统装有双硬盘,一个硬盘上装有Windows,一个装有Linux,假设Linux硬盘是主硬盘,GRub装在主硬盘的MBR上,出现启动菜单后选择启动Windows,多半会卡住,好多Linux发行版默认装grub时都有这个问题,解决方法就是将两块硬盘逻辑映射交换一下,骗过Grub就可以顺利引导Windows,在Windows菜单项后加入:
map (hd0) (hd1)
map (hd1) (hd0)
完整Windows菜单项如下:
rootnoverify (hd1)
chainloader +1
map (hd0) (hd1)
map (hd1) (hd0)
Tips:出现grub菜单时,按e,可以编辑某项菜单引导参数,编辑完后,直接按b就可按照修改后的参数引导系统。这对于学习熟悉grub很有好处。
以上是卖柴的对系统启动的理解,如有错漏之处,请发邮件或站内短消息,谢谢!