多系统引导 两篇文章

从系统启动原理分析怎样修复多系统引导

【http://blog.sina.com.cn/s/blog_6830050a0100jt5l.html】

一、硬盘结构
    pc的bios系统决定了pc的硬盘结构,在pc里,可以有三个以下的主分区和一个扩展分区,也可以是4个主分区。
    硬盘的区块表示方法是,磁道,柱面和扇区。
    0磁道,0柱面1扇区就是mbr,0磁道1柱面1扇区被成为是第一分区的启动扇区pbr,其他分区的第一个扇区也被称为pbr。1个扇区的大小是512B。

二、pc系统加电启动原理
    post上电,bios自检——从cmos设置中确定第一启动设备为硬盘后——将启动接力棒交给mbr。

三、各种系统的启动过程
    msdos和win9x:       mbr——pbr——io.sys——msdos.sys——command.com或是win.com
        nt内核2003以下:      mbr——pbr——ntldr——boot.ini——hal.dll
        vista,win7和win2008:mbr——pbr——bootmgr——bcd——winload.com
        软改bios激活的win7:  mbr——pbr——修改过的grldr——bootmgr——bcd——winload.com
        linux:                mbr——pbr——grub引导程序——grub.conf,menu.lst,grub.cfg等配置文件——内核
    grub4dos:           由其他引导程序引入——grldr——menu.lst
        wubi:                由其他引导程序引入——wubildr——ubuntu
             mbr和pbr都可以保存为一个512b大小的文件,可以被ntldr,bootmgr和grldr启动,不过这类文件会在分区变化后被影响。

四、各种多系统引导分析。
    1、win2000以上的系统之所以可以启动98,就是因为在2000安装的过程中,保存了原先98的pbr。并在boot.ini增加了pbr保存文件的路径
      fdisk/mbr的意义,纠正了mbr数据,但没有改变pbr的内容。在差不多所有的win里,mbr的内容是一致的,就是把下一步启动交给活动主分区的pbr。再由pbr决定引导在活动主分区的其他引导程序。
      format/s和sys c:命令执行之后,改变的是pbr的内容,让pbr只引导io.sys了。
      ghost分区备份里是包含了第一扇区的内容的,但mbr的内容没有改变。
    
    2、win2000,xp,win2003之间的兼容问题。
       这三个系统虽然都是用ntldr文件来读取boot.ini启动系统的,但是ntldr文件一直在变。所以xp的ntldr是引导不了2003的。
       如果boot.ini里指定的路径是无效的,不管是分区信息还是pbr文件备份,提示永远是hal.dll未找到。
       故障恢复控制台有很多非常有用的命令:
       fixmbr,修复mbr用的。
       fixboot,修复pbr用的,效果跟bootsect是一样的。
       bootcfg/rebulid,当boot.ini被删除,或者出错后的修复命令。

     3、ntldr is missing,hal.dll is missing,bootmgr is missing。
        关于这些,除了是部分硬件问题,文件真的丢失以外,ntldr和bootmgr可能是mbr,或是pbr错误。
        当变色龙安装到非ntfs分区时也会出现ntldr is missing的情况。
        当活动主分区被压缩之后,也会出现bootmgr is missing的情况。
        hal.dll一般是boot.ini写的不对的原因

     4、bootsect.exe是win7和vista光盘里用于修改pbr启动ntldr还是bootmgr的工具。可以在xp,winpe等32位环境下运行

     5、bootmgr的引导项目被放进了bcd里,无法再用文本编辑工具来修改,bcdedit命令行的方式太复杂了,只能通过一些辅助工具了,例如easybcd。
        boomgr也可以读取boot.ini的内容来启动,在boot.ini里的c:\ntldr也是可以被识别的。不过这里也有个问题,win7和vista一直坚持把自己的系统文件夹安装目录强制为c盘,造成了活动主分区被移到其他分区去,这里的盘符变动会有很大的麻烦。

     6、linux的gurb启动windows的方法:chainloader +1,也就是把启动权直接教了pbr,不过很可惜,无论是grub1还是grub2,都不能像grub4dos那样直接启动类似,ntldr,bootmgr,io.sys这样的文件,也无法启动pbr的备份文件。

     7、grub4dos,这是一个很强大的工具,可以引导几乎所有的操作系统,连没有备份pbr的98也可以启动。当然了io.sys还是应该在主分区上。


其他的关于双硬盘,mbr独立两套的情况,都是很复杂的,有grub里的map硬盘映射,以及您希望 Windows XP Embedded 从第二个 IDE 磁盘(IDE0 次驱动器)的第二个分区启动。ARC 路径将如下所示:
multi(0)disk(0)rdisk(1)partition(2)\WINDOWS="Microsoft Windows XP Embedded" /fastdetect



细说双系统的安装和启动原理

[http://www.educity.cn/windows/471235.html]

98/ME和2000/XP双系统的安装和启动原理
  
  先来说说MBR(主引导扇区)和系统引导扇区:
  
  主引导扇区位于硬盘的首部,负责搜索硬盘可以启动的分区,对于DOS来说,它是由Fdisk生成的;而系统引导扇区位于每个分区的首部,用来引导本分区相应的操作系统,它是由sys命令负责的。
  
  其次来说说系统的启动:
  
  一般来说,Win98的启动是由5个文件负责的:io.sys,msdos.sys,,autoexec.bat和config.sys。
  
  而Win2000和WinXP的启动是由Ntldr和Ntdetect两个文件负责。
  
  Win98和Win2000/WinXP双系统启动的时候就比较复杂,是由OS Loaer来引导启动,用户可以选择启动哪个系统,若用户选择了启动Win2000/WinXP,那么就装载Ntldr和Ntdetect两个文件启动到Win2000/WinXP下;如果用户选择启动Win98,那么就装载Bootsect.dos这个文件,Bootsect.dos文件其实就是Win98引导扇区的镜像。
  
  这里顺便说一句:Win2000和WinXP里都有 Ntldr和Ntdetect两个文件,但是却是不同的,如果你的双系统里缺少这两个文件,你可以从Win2000或WinXP安装盘里的I386目录下拷贝。如果是Win2000的话,可以采用Win2000或WinXP的都行;如果是WinXP的话,必须采用WinXP光盘里的,用Win2000盘里的这两个文件是不能引导WinXP的,这一点在安装包含Win2000和WinXP在内的多系统里表现得尤为明显,比如你重装了Win2000以后,照样无法启动WinXP,原因就是你用Win2000的Ntldr和Ntdetec这两个文件覆盖了WinXP的Ntldr和Ntdetec这两个文件。因此一定要注意!
  
  再次来说说Windows的多操作系统引导管理工具:OS Loader。每一种多操作系统引导管理工具都有所不同,比如BootMagic和System Commander是常驻于MBR的;而OS Loader
  
  则是常驻于系统引导扇区的;而Linux的多系统引导工具LILO或GRUB既可位于MBR,也可位于系统引导扇区。
  
  以上是一些理论知识,既然都说清楚了,下面进入理论分析阶段,看看格式化C盘重新安装Win98后,为什么不能双启动了:
  
  其实原因很简单,当你把C盘重新安装Win98后,你的C盘中比以前少了四个文件,分别是:Ntldr, Ntdetec,Bootsect.dos和boot.ini(多系统启动的配置文件)。但是在重装之前仅仅备份这四个文件,重装之后再拷贝回来,同样是不能实现双启动的!原因在于你的C盘的系统引导扇区已经被Win98给覆盖了:它将以前的由OS Loader控制的系统引导扇区变成了Win98的系统引导扇区,因此尽管你拷贝回了那四个文件,因为引导扇区依然没有恢复成双启动时的样子,所以你依然不能实现双启动。
  
  知道了原因,解决起来才有了思路和目标。那就是想办法恢复系统引导扇区。方法有好几种,
  
  方法一:
  
  可以在重装Win98之前备份系统引导扇区,需要用到DEBUG命令!
  
  备份命令为:
  
  a:\>debug
  
  -L 100 2 0 1
  
  -na:\OSLoader.REC
  
  -rcx
  
  CX:0000
  
  :200
  
  -rbx
  
  BX:0000
  
  :0
  
  -w
  
  -q
  
  这时软盘上生成的OSLoader.REC文件就是OS Loader引导扇区的备份,如果不小心删除了Bootsect.dos文件,可用类似的方法生成该文件,只需把第三行的保存文件的名称改为Bootsect.dos即可。
  
  只要把以上生成的OSLoader.REC文件重新写如硬盘引导扇区就可以恢复OS Loader的引导功能。命令为:
  
  A:\>debug
  
  -Na:\ Bootsect.dos
  
  -L
  
  -w100 2 0 1
  
  -q
  
  OS Lode菜单修复以后,如果C盘缺少Bootsect.dos文件,可以将上述生成的Bootsect.dos文件拷贝到C盘下(注意:不同机器上生成的Bootsect.dos文件不能通用)。
  
  方法二:
  
  用Win2000或WinXP的故障控制台来恢复引导扇区:
  
  进入故障控制台,输入:
  
  Fixboot c:
  
  Exit
  
  重起计算机即可。
  
  当然,这两种方法都是在提前备份并恢复了以上四个文件的前提下才能成功实现找回双启动功能的,如果事先没有备份这几个文件,就比较麻烦了,简单一点的方法是用Win2000或WinXP安装盘修复的办法,也就是假安装的办法;麻烦一点的办法是从Win2000和WinXP的安装盘里先拷贝出Ntldr和Ntdetect两个文件,在用DEBUG命令生成Bootsect.dos文件,然后用Win2000或WinXP的安装盘进入故障控制台,生成Boot.ini文件(当然,如果对该文件的语法十分熟悉的话,就像我师傅那样当然也可以在Win98下用记事本自己根据机器的配置编写一个Boot.ini文件),然后再在故障控制台里修复引导扇区,重起,大功告成!  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值