Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1006483
  • 博文数量: 177
  • 博客积分: 3629
  • 博客等级: 中校
  • 技术积分: 1839
  • 用 户 组: 普通用户
  • 注册时间: 2005-02-23 21:21
文章分类

全部博文(177)

文章存档

2021年(1)

2020年(5)

2019年(4)

2018年(7)

2017年(1)

2016年(4)

2014年(1)

2013年(8)

2012年(10)

2011年(50)

2009年(12)

2008年(10)

2006年(56)

2005年(8)

分类: WINDOWS

2011-04-05 21:45:52

Windows(多)操作系统启动过程

 

一.WinPE启动原理

移动硬盘PE启动原理

WinPE文件组成:

引导文件:NTLDRNTDETECT.COM

系统文件:WinNT.XPE(WinPE.XPE)WinPE.IS_(WinPE.IM_),有些WinPE没有内置中文支持,所以还要WNPEFONT.BIN来支持中文。

外置程序:WinPE.INI(也可以是其它文件名,如PESOFT.INI等)和OP.WIM

加载系统文件:

1.NTLDRNTDETECT.COM做相关引导工作

2.WinNT.XPE引向MiniPE\WinPE.IS_(=WinPE.ISO=WXPX) \SYSTEM32\

加载外置程序:

3.PECMD.INI(位于”WXPE\SYSTEM32”目录下)引向MiniPE\WinPE.INI

4.WinPE.INI指向MiniPE\OP.WIM并为外置程序分配盘符B:然后把相关程序装入B

注意:

以上路径和文件名可按自己的习惯更改。

以上是老毛桃WinPE启动原理,但一般WinXP盘中带的WinPE没有OP.WIM文件,原因在于它已经把OP.WIM中程序解压出来了(更应该说是老毛桃把外置程序压缩到了OP.WIM中)。

制作一个简单WinPE启动盘:

从网上下载一个WinXP操作系统(如电脑公司,番茄花园,雨林木风)或WinPE系统(如老毛桃WinPE,深山红叶WinPE)后解压到移动硬盘(如H:)根目录下,在H盘中找到NTDETECT.COMSETUPLDR.BIN两个文件(这两个文件一般在AXPE文件中)后复制到H盘根目录下并将SETUPLDR.COM重命名为NTLDR(无后缀名),再将H盘设置为活动分区,然后重启电脑从硬盘启动就会进入WinPE,

硬盘PE启动原理

WinPE文件组成:

Avldr, Peldr, WinPE.XPE, WNPEFONT.BIN, AXPE目录(WINPE.IM_,SETUPLDR.BIN,NTDETECT.COM)

这些文件在不同WinPE中命名有可能不同。

这些文件可在用系统盘安装WinPE后备份,然后你就可以根据以下方法通过复制这几个文件来安装WinPE了。

注意:这几个文件也可以用来做移动硬盘WinPE了。

Windows NT5启动管理器: 将以上文件复制到系统盘(假如是C)根目录下,在boot.ini添加C:\AVLDR=“你喜欢的名字”即可。我们可以这样理解:AVLDR-->pelder-->SETUPLDR.BIN-->NTDETECT.COM-->WinPE.XPE-->WINPE.IM_

Windows NT6管理器:同样将以上文件复制到系统根目录下,然后用easyBCDbcdedit命令添加引导文件即可。引导文件是AVLDR还是peldrq我还试过。但我个人认为是peldr,我认为peldr就是GRUB4DOSgrldr的重命名,而WinPE.XPX就相当于menu.lst.

因为我不WindowsNT管理添加WinPE选项,所以没试过,有志者可以去试验。

Grub4dos菜单:这就简单了,同样要将以上文件复制到根目录下,avldr可不要了,在grub中添加chainloader (hdx,y)/peldr就可以。

 

 

二.WinXP+Win2000启动原理

电源开启自检过程BIOS--> 初始化启动过程MBR-->引导程序载入过程NTLDR (boot.inihiberfil.sysBootsect.dos)-->检测和配置硬件过程NTDETECT.COM-->核加载过程NTOKRNL.EXE-->用户登录过程-->即插即用设备的检测过程

1pagefile.sys

虚拟内存文件(大小经常自己发生变动,小的时候可能只有几十兆,大的时候则有数百兆),也叫页面文件,跟你的休眠有关系,是在你物理内存不足的时候调用的(当运行一个程序需要大量数据、占用大量内存时,内存就会被塞满,并将那些暂时不用的数据放到硬盘中,而这些数据所占的空间就是虚拟内存),是系统文件,所以不能删除(在别的操作系统下删除,但是你下次登陆,他又自动生成),但是可以禁用和修改: 我的电脑>>属性>>高级>>性能>>设置>>性能选项>>高级>>更改。我强烈的建议你不要禁用,否则后果很严重

2.boot.ini

3.bootfont.bin

4.AUTOEXEC.BAT

5.CONFIG.SYS

      专业的系统启动配置文件,它主要用于加载内存管理程序、设置扩充内存及扩展内存、加载有关硬件驱动程序,设置有关环境变量等,为用户计算机的正常使用创造必要的用户环境(DOS时代,精通Config.SYS文件往往是专家的标志)
      
(在Windows 95/98中,系统已经自带了内存管理、环境变量等设置功能,Config.sys文件的作用已经远远没有那么重要了,它仍在服役的原因主要是为了保持对老版本DOS应用程序的兼容)

6.DOS内核三文件   

MSDOS.SYS: 管理和启动系统的各个部件,为DOS的引导作好准备工作

IO.SYS: 负责系统的基本输入和输出,即DOS与各部件之间的联系

COMMAND.COM: DOS与用户的接口,它主要提供了一些DOS的内部命令,并能接受、判别并执行用户输入的命令

具有这三个文件的磁盘就是引导盘。而除此之外还包含许多DOS外部命令的磁盘则称为系统盘。

7.Windows内核两文件

NTLDR: A: 将处理器的实模式改为32位平面内存模式

B: 运行适当的小文件系统驱动程序

C: boot.ini文件或hiberfil.sys文件

D: 装载所选操作系统

NTDETECT.COM: 搜索计算机硬件并将硬件信息列表传送给NTLDR

系统的引导过程

预引导阶段:
    1、电源自检程序开始运行::::检测系统的总内存以及其他硬件设备的状况
    2
、磁盘主引导记录被装入内存,并且程序开始执行
    3
、通过主引导记录查找到活动分区,活动分区的引导扇区被装入内存
    4
NTLDR从引导扇区被装入并初始化

引导阶段初始引导加载器阶段:
    5
NTLDR将处理器的实模式改为32位平面内存模式
    6
NTLDR开始运行适当的小文件系统驱动程序,小文件系统驱动程序是建立在NTLDR      内部的,这使NTLDR能读FATNTFS文件系统分区。

引导阶段操作系统选择阶段:
    7
NTLDRboot.ini文件(如果在系统根目录下发现有Hiberfil.sys文件且该文件有      效,那么NTLDR将读取Hiberfil.sys文件里的信息并让系统恢复到休眠以前的状态,      这时并不处理boot.ini文件)
    8
NTLDR装载所选操作系统
    * 
如果NT/XP被选择,NTLDR运行Ntdetect.com
    * 
对于其他的操作系统,NTLDR装载并运行Bootsect.dos然后向它传递控制。

       windows NT过程结束。

引导阶段硬件检测(和配置选择)阶段

9NTDETECT.COM 搜索计算机硬件(如果有多个硬件配置列表,那么将会出现配置文件选择菜单,如果只有一个则不会显示)并将硬件信息列表传送给NTLDRNTLDR将这些硬件信息信息写进注册表“HKEY_LOCAL_MACHINE”中的Hardware

加载内核阶段
   10
.然后NTLDR装载NTOKRNL.EXE内核程序,硬件抽象层HAL.DLL和系统信息集      合。
   11
NTLDR搜索系统信息集合,并装载设备驱动配置以便设备在启动时开始工作
   12
NTLDR把控制权交给NTOKRNL.EXE,这时,启动程序结束,装载阶段开始 

8.故障解决

如果你已经安装了一个新版本的操作系统,但是后面又安装了一个旧版本的操作系统,当旧版本操作系统安装完毕以后可能会发现无法进入原先的新版本的操作系统。如果碰到类似问题,那么问题一定出现在NTLDR NTDETECT.COM 版本上面。由于旧版本的NTLDR NTDETECT.COM 不能够识别新版本操作系统的NTOSKRNL.EXE,造成系统不能够启动(一般显示黑屏)。解决方法很简单,只需要使用新版本的NTLDR NTDETECT.COM 替换旧版本的就可以了。

9.启动过程详解

NTLDR一般存放于C盘根目录下,是一个具有隐藏和只读属性的系统文件。它的主要职责是解析Boot.ini文件。如果你对它的理解还不是很清楚,那么下面我们就以Windows XP为例介绍NTLDR在系统引导过程中的作用。 Windows XP在引导过程中将经历预引导、引导和加载内核三个阶段,这与Windows 9X直接读取引导扇区的方式来启动系统是完全不一样的,NTLDR在这三个阶段的引导过程中将起到至关重要的作用。
    1
.预引导阶段
   
在预引导阶段里计算机所做的工作有:运行POST程序POST将检测系统的总内存以及其他硬件设备的状况,将磁盘第一个物理扇区加载到内存,加载硬盘主引导记录并运行,主引导记录会查找活动分区的起始位置。接着活动分区的引导扇区被加载并执行,最后从引导扇区加载并初始化NTLDR文件。

    2.引导阶段
   
在引导阶段中,Windows XP将会依次经历初始引导加载器阶段、操作系统选择阶段、硬件检测阶段以及配置选择阶段这四个小的阶段。
   
1)在初始引导加载器阶段中,NTLDR将把计算机的微处理器从实模式转换为32位平面内存模式,在实模式中,系统会为MSDOS预留640KB大小的内存空间,其余的内存都被看做是扩展内存,在32位平面模式中系统将所有内存都视为可用内存,然后NTLDR执行适当的小型文件系统驱动程序,这时NTLDR可以识别每一个用NTFSFAT格式的文件系统分区,至此初始引导加载器阶段结束。
   
2)当初始引导加载器阶段结束后将会进入操作系统选择阶段,如果计算机上安装了多个操作系统,由于NTLDR加载了正确的Boot.ini文件,那么在启动的时候将会出现要求选择操作系统的菜单,NTLDR正是从boot.ini文件中查找到系统文件的分区位置。如果选择了NT系统,那么NTLDR将会运行NTDETECT.COM文件,否则NTLDR将加载BOOTSECT.DOS然后将控制权交给BOOTSECT.DOS。如果Boot.ini文件中只有一个操作系统或者其中的timeout值为0,那么将不会出现选择操作系统的菜单画面,如果Boot.ini文件非法或不存在,那么NTLDR将会尝试从默认系统卷启动系统。
       
小提示:NTLDR启动后,如果在系统根目录下发现有Hiberfil.sys文件且该文件有效,那么NTLDR将读取Hiberfil.sys文件里的信息并让系统恢复到休眠以前的状态,这时并不处理Boot.ini文件。
   
3)当操作系统选择阶段结束后将会进入硬件检测阶段,这时NTDETECT.COM文件将会收集计算机中硬件信息列表,然后将列表返回到NTLDR,这样NTLDR将把这些硬件信息加载到注册表“HKEY_LOCAL_MACHINE”中的Hardware中。
   
4)硬件检测阶段结束后将会进入配置选择阶段,如果有多个硬件配置列表,那么将会出现配置文件选择菜单,如果只有一个则不会显示。

3.加载内核阶段
   
在加载内核阶段中,NTLDR将加载NTOKRNL.EXE核程序,然后NTLDR将加载硬件抽象层(HAL.dll),接着系统将加载注册表中的“HKEY_MACHINESystem”键值,这时NTLDR将读取“HKEY_MACHINESystemselect”键值来决定哪一个ControlSet将被加载。所加载的ControlSet将包含设备的驱动程序以及需要加载的服务。再接着NTLDR加载注册表“HKEY_LOCAL_MACHINESystemservice”下的start键值为0的底层设备驱动。当ControlSet的镜像CurrentControlSet被加载时,NTLDR将把控制权传递给NTOSKRNL.EXE,至此引导过程将结束。
       
小提示:如果在启动的时候按F8键,那么我们将会在启动菜单中看到多种选择启动模式,这时NTLDR将根据用户的选择来使用启动参数加载NT内核,用户也可以在Boot.ini文件里设置启动参数。

   

三.WinVista+Win2008+Win7启动原理

一般顺序为:BIOS-->MBR--> Bootmgr -->BCD-->Winload.exe-->内核加载。

  Windows 7操作系统启动过程详解,一般顺序为:BIOS-->MBR--> Bootmgr -->BCD-->Winload.exe-->内核加载。

  1) 开机后,BIOS进行开机自检(POST),然后选择从硬盘进行启动,加载硬盘的MBR并把控制权交给MBR(MBR是硬盘的第一个扇区,它不在任何一个分区内);

  2) MBR会搜索64B大小的分区表,找到4个主分区(可能没有4)的活动分区并确认其他主分区都不是活动的,然后加载活动分区的第一个扇区(Bootmgr)到内存;

  3) Bootmgr寻找并读取BCD,如果有多个启动选项,会将这些启动选项反映在屏幕上,由用户选择从哪个启动项启动。

  4) 选择从Windows 7启动后,会加载C:\windows\system32\winload.exe,并开始内核的加载过程,内核加载过程比较长,比较复杂,这里就不一一讲了。

  在这个过程中,bootmgrBCD存放在Windows 7的保留分区里,而从Winload.exe开始,就开始进入到C盘执行内核的加载过程了。

 WinXP+Win7+Win2008多启动过程。

先看各版本windows操作系统的系统文件:

         

Windows共有: autoexec.bat   MS-DOS批处理文件

             config.sys     系统启动配置文件(可无,为保持对老版本DOS应用程序的兼容而存在)

             pagefile.sys   虚拟内存文件

 

WinXP独有:  boot.ini

             bootfont.bin

             io.sys

             msdos.sys

             ntdetect.com

             ntldr

 

Win7独有:   hibefil.sys    存储系统休眠前的信息

             bootmgr        启动管理即BootManager

             boot目录      

             //ghldr

 

Win2008独有: hibefil.sys    存储系统休眠前的信息

             bootmgr        启动管理即BootManager

             boot目录      

             //ghldr

 

一.先安装WinXPC盘,然后在XP下安装Win7D盘,最后在XP下安装Win2008E盘,安装结束后,操作如下:

1.C盘下除autoexec.bat  config.sys  pagefile.sys  boot.ini  bootfont.ini  io.sys  msdos.sys  ntdetect.com  ntldr bootmgr  boot目录 以外的文件夹都可以删除。

 

D 盘下除autoexec.bat  config.sys  pagefile.sys  hibefil.sys 都可以删除。

 

E 盘下除autoexec.bat  config.sys  pagefile.sys  hibefil.sys 都可以删除。

 

     2.备份bootmgr  boot目录

     3.重装WinXPC盘,将bootmgr  boot目录 复制到C盘根目录下,重启后如果没有MBR菜单,则在WinXP下用EsayBCD软件的Manage Bootloader功能可以恢复。操作过程:启动EasyBCD--﹥单击Manage Bootloader--﹥单击Reinstall the Vista Bootloader--﹥Write MBR--﹥关闭窗口--﹥重启电脑。

       

二.先安装WinXPC盘,再XP下安装Win7D盘,安装结束后,操作如下:

1.C盘下除autoexec.bat  config.sys  pagefile.sys  boot.ini  bootfont.ini  io.sys  msdos.sys  ntdetect.com  ntldr bootmgr  boot目录 以外的文件夹都可以删除。

 

D 盘下除autoexec.bat  config.sys  pagefile.sys  hibefil.sys 都可以删除。

      2.备份bootmgr  boot目录

      3.重装WinXPC盘,将bootmgr  boot目录 复制到C盘根目录下,重启后如果没有MBR菜单,则在WinXP下用EsayBCD软件的Manage Bootloader功能可以恢复。操作过程:启动EasyBCD--﹥单击Manage Bootloader--﹥单击Reinstall the Vista Bootloader--﹥Write MBR--﹥关闭窗口--﹥重启电脑。

       

三.先安装WinXPC盘,再XP下安装Win2008E盘,安装结束后,操作如下:

1.C盘下除autoexec.bat  config.sys  pagefile.sys  boot.ini  bootfont.ini  io.sys  msdos.sys  ntdetect.com  ntldr bootmgr  boot目录 以外的文件夹都可以删除。

 

E 盘下除autoexec.bat  config.sys  pagefile.sys  hibefil.sys 都可以删除。

      2.备份bootmgr  boot目录

      3.重装WinXPC盘,将bootmgr  boot目录 复制到C盘根目录下,重启后如果没有MBR菜单,则在WinXP下用EsayBCD软件的Manage Bootloader功能可以恢复。操作过程:启动EasyBCD--﹥单击Manage Bootloader--﹥单击Reinstall the Vista Bootloader--﹥Write MBR--﹥关闭窗口--﹥重启电脑。  

Windows7

                          MBR建议采用结构

 

早期版本的 Windows

 

Windows Server 2008

 

NtldrBoot.ini

 

WindowXP

 

WinServer2003

 

Grub引导,非Grub引导

 

BootmgrBCD

 

Grub引导,非Grub引导

 

WinNT5系列

 

假设1:按 一. 顺序装了多个系统,而把 .2  的两个备份文件复制到C盘根目录下,在XPEsayBCD软件的Manage Bootloader功能操作后,在MBR只有WinXPWin7这两个操作系统,现在我们要把Win2008加到MBR中,操作如下:启动EasyBCD--﹥单击ADD/Remove Entries--﹥选择Windows选项卡--﹥选择TypeWindows Visat/Longhorn--﹥NameWindows Sever 2008 或 其它自己喜欢的名字--﹥DriverE:--﹥单击Add Entry--﹥重启电脑。MBR有了Win2008.

 

假设2:按 一. 顺序装了多个系统,而把 .2  的两个备份文件复制到C盘根目录下,在XPEsayBCD软件的Manage Bootloader功能操作后,在MBR只有WinXPWin2008这两个操作系统,现在我们要把Win7加到MBR中,操作如下:启动EasyBCD--﹥单击ADD/Remove Entries--﹥选择Windows选项卡--﹥选择TypeWindows Visat/Longhorn--﹥NameWindows7 或 其它自己喜欢的名字--﹥DriverD:--﹥单击Add Entry--﹥重启电脑。MBR没有了Win7.

 

通过以个两个假设说明了什么,我也不清楚,但我们可以明白多操作系统的一些操作了。我个人认为是激活WIN7后在C盘上产生的grldr造成的,不深究,等正式版发布后再探讨。

 

   对于 一键Ghost  WinPE  超级急救盘  矮人DOS工具箱 等工具可以放到Boot.ini中启动,最好不要在MBR中与”Windows7” “ Windows Server 2008”  “Windows Vista” 早期版Windows并列,也就是说你安装了Windows NT6 NT7的版本之后MBR 中只能有NT6NT7windows 版本,早期版本的 Windows”选项控制NT5版本(Windows 2000/XP/Server 2003),我们只有选择了早期版本的 Windows”选项,由 BOOTMGR 将启动控制权移交给 NTLDR 并自动切换为 NTLDR 菜单,这时才可以继续选择需要启动 Windows XP 还是 Windows Server 2003。换言之,NTLDR 启动菜单就像是 BOOTMGR 启动菜单的子菜单一样


原文:

http://blog.csdn.net/cz_water/archive/2009/08/23/4476329.aspx

cz_water的专栏
阅读(2888) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~