返回总目录 上一页 目录页 下一页

Windows 9X 启动全揭秘


自WIN 95发行以来,微软公司坚持对WIN 9X系统内核技术保密,用户难以获得WIN 9X启动过程
更底层的技术资料,它始终是一个黑色的过程。掌握系统的启动过程是全面控制系统和优化系
统的关键,现在根据公开的技术资料和实践经验,仅从应用角度,对WIN 9X(包括95、96(95O
SR1)、97(95 OSR2.X)、98、98SE)的启动过程全面揭密,并对各技术细节加以必要的说明。


  WIN 9X家族主要由四个版本系列组成,其中WINDOWS 95是第一个版本,正是它开创了PC世
界新纪元,并将比尔·盖茨推向世界首富的宝座。该版本并不完善,BUG最多,在推出一个多
月后就开始提供修正软件包。


  WIN 96即WIN 95的OSR1版(称其为96,是因其发布于96年,97同此),该版本几乎重写了W
IN 95的内核,纠正了WIN 95在实际应用中的种种问题,由于与WIN 95发布时间太近,流传不
广。


  WIN 97即WIN 95的OSR2.X,该版本发生了质的飞跃,其最大的变化是提供了新磁盘的格式
FAT 32,集成了Internet浏览器IE 3.0,这表明微软的系统发展战略开始转向因特网。OSR2.
X有三种版本,即OSR2.0、OSR2.1和OSR2.5,其中OSR2.1支持USB和AGP显卡,OSR2.5则提供了
IE4.0。由于FAT 32使OSR2.X与WIN 95和DOS不兼容,微软只将其做为OEM产品而不提供零售版
,WIN 97因此也成为WIN 95后最流行的版本。


  WIN 98是以DOS为基石的WINDOWS系列的最后辉煌。它将因特网技术和操作系统紧密结合,
同时提供了IE4.0和DirectX5.0,但没有提供更激动人心的东西,更象是WIN 97的零售版。


  WIN 98 SE是WIN 98的第二版,与WIN 98相比只是提供了IE5.0和DirectX6.1a,别无新意



  WINDOWS 2000是以WINDOWS NT为基础的网络操作系统,它已经是与WIN9X截然不同的产品
了,而新推出的WINDOWS Me则是WINDOWS 9X的替代产品,但除了借用WINDOWS 2000的界面外,尚
没有更新的发现。


  WIN 9X版本沿革比较复杂,其核心却保持着相对的稳定,没有根本性变化,启动过程也几
乎完全相同,这是本文存在的依据。
一、WIN 9X启动概述


  WIN 9X的启动过程继承了DOS的传统并进行了必要的扩充,主要由两个阶段组成,即扩展
的DOS实模式启动和GUI(即图形界面)32位保护模式启动,WIN 9X的技术核心集中在后一阶段中



  该启动过程依次由引导记录、IO.SYS、MSDOS.SYS、COMMAND.COM、CONFIG.SYS、AUTOEXE
C.BAT、GUI启动命令WIN.COM和其它必要的相关文件完成,其中与DOS的系统文件完全同名的文
件实际上发生了质的变化。


  WIN 95/96提供了彻底的双重启动功能,即用户可以用WIN 95/96和DOS(6.22以下)两种方
式启动系统,互不干扰,解决了新旧系统的兼容问题,最大限度地维护了用户的利益。但为了
逐渐摆脱落后的DOS对PC世界的影响,从WIN 97开始,微软公司尝试限制双重启动功能,使WI
N 97/98的启动系统必须修改才能实现双重启动。目前,双重启动功能在实际上的需要确已越
来越少。
  二、引导记录


  引导记录的作用是将操作系统的核心文件调入内存,以启动系统。


  所有系统的引导记录均位于磁盘的起始位置,微机加电启动时,直接从固定位置将引导记
录调入内存,引导系统启动。不同版本系统的引导记录自然不同。


  DOS引导记录的版本标志为MSDOS5.0,支持FAT 12(各版本均用于软盘或小于16M的硬盘)、
FAT 16磁盘格式,指定的系统引导文件是IO.SYS、MSDOS.SYS。


  WIN 95/96的引导记录与DOS(6.22前独立版本)的完全兼容,版本标志为MSWIN4.0,支持F
AT 12、FAT 16磁盘格式,支持双重启动,指定的引导文件是WINBOOT.SYS(IO.SYS在旧版DOS下
使用时的文件名)和IO.SYS、MSDOS.SYS。


  WIN 97/98的引导记录与DOS有了本质的区别,版本标志为MSWIN4.1,使用32位指令代码,
支持FAT 12、FAT 16和FAT 32三种磁盘格式,固定引导IO.SYS,这导致不经修改,WIN 97/98
不能直接支持双重启动。


  WIN 97/98的全新磁盘格式FAT 32可以支持大容量硬盘,取消了FAT 16的容量限制,与传
统的FAT 16完全不兼容,当然不能为DOS、WINDOWS 95/96识别。这种磁盘格式下多数原DOS、
WINDOWS 95/96软件均能正常运行,但与磁盘格式有关的软件如磁盘工具等不能继续使用。由
于主流的硬盘容量正在超过8.4G,FAT 32的应用越来越广。


三、IO.SYS


  1、IO.SYS的内部启动菜单


  WIN 9X的IO.SYS由原DOS的系统文件IO.SYS、MSDOS.SYS合并而成,提供标准硬件的输入/
输出接口和DOS的中断调用,功能全面增强,它基本上控制着WIN 9X的全部启动过程,是WIND
OWS的DOS实模式的核心文件。但它需要根据MSDOS.SYS的设置才能实现正常的启动过程。


  IO.SYS可由启动功能键改变启动过程,这些功能键对应着启动菜单各选项:



功能键 对 应 的 启 动 菜 单 项
F4: Previous MS-DOS version
F5: Safe mode
Shift+F5: Command prompt only
F6: Safe mode with network support
F8: 启动时调出启动菜单
Shift+F8: Step-by-step confirmation
系统启动出现“Starting Windows 95...”时按下功能键即可



  IO.SYS提供启动选择菜单,便于用户根据需要选择启动方式:


  ⑴Normal
  正常启动模式(默认的启动方式)
  当MSDOS.SYS中的BootWin=0时,选择本项系统将启动旧版DOS


  ⑵Logged(BOOTLOG.TXT)
  正常启动模式,同时在根目录下形成BOOTLOG.TXT
  BOOTLOG.TXT记录了启动过程中发生的所有情况,是WIN 9X系统启动过程唯一全面的诊断
记录,可供用户检查启动过程中的问题



⑶Safe mode
  安全模式的GUI,屏幕四角有“安全模式”字样不加载CONFIG.SYS、AUTOEXEC.BAT,也不
加载启动程序组中任何程序,只加载最基本硬件配置 (标准VGA模式,无声卡、光驱等),即最
简单的GUI启动,用于纠正因硬件配置等造成的GUI启动问题。系统出现问题无法正常启动时,
多数情况下会进入该启动模式,但该模式能解决的问题非常有限,多用于显示器等配置系统配
置主要在控制面板上调整。要进入正常的GUI,必须重新启动


  ⑷Step-by-step confirmation
  单步执行 WINDOWS启动
  用于确定因系统文件损坏造成的启动故障,该方式仅能确定DOS启动过程中的系统问题,
主要修正Config.sys和Autoexec.bat中存在的问题要确定GUI启动过程中的问题,只能借助BO
OTLOG.TXT文件


  ⑸Command prompt only
  仅执行完整的实模式 DOS启动过程,进入纯DOS状态加载全部支持WIN启动的DOS驱动程序
,主要用于只能运行于纯DOS模式下的应用软件或解决严重的系统问题,可用命令WIN启动正常
的GUI


  ⑹Safe mode command prompt only最简单的 DOS启动仅执行最基本的IO.SYS、MSDOS.SY
S和COMMAND.COM三个系统文件,不加载默认驱动程序(HIMEM.SYS、IFSHLP.EXE和SETVER.EXE)
和CONFIG.SYS,AUTOEXEC.BAT,其它的环境默认值同WIN 9X 的设定,该模式无法继续启动正
常的或安全模式的GUI,主要用于处理最严重的系统故障。


  ⑺Previous MS-DOS version
  启动旧版DOS,执行双重启动根目录下应有以.DOS为扩展名保存的五个原DOS系统文件。该
选项的出现由MSDOS.SYS中的参数“BootMulti”控制注意:当MSDOS.SYS中的BootWin=0时,选
择本项将启动正常的WIN 9X系统⑻Safe mode with network support带实模式网络访问的安全
模式该选项的出现由MSDOS.SYS中的参数“NetWork”控制用于排除网络系统的PC故障,可通过
实模式网络系统,获得更大的系统支持


  2、IO.SYS提供的扩展的DOS默认配置


  IO.SYS在启动时与DOS的最大不同,是提供能满足大多数DOS应用的缺省CONFIG.SYS配置,
能够自动加载必要的驱动程序,以保证WIN 9X正常启动,具体内容如下:


  HIMEM.SYS       :支持1M以上内存,提供扩展内存(XMS)管理保证WIN启动的必
需文件
  DBLBUFF.SYS      :双重缓存驱动程序,仅需要时加载,多用于支持SCSI卡
  IFSHLP.EXE       :增强的文件管理驱动程序,支持WIN的VFAT系统
保证WIN启动的必需文件
  SETVER.EXE       :版本登录服务,消除版本限制,仅在DOS下用
  Dblspace.bin      :DOS 6.0磁盘压缩驱动程序,仅在硬盘被压缩时才加载
  Drvspace.bin      :DOS 6.22以后的磁盘压缩驱动程序,同上
  DOS=HIGH,UMB     :将DOS系统移入HMA,以留出更多的常规内存而UMB对系统没有
任何作用,实属摆设
  FILES=30       :能打开的最大文件数,能满足大多数应用仅为DOS下使用,W
IN 9X不需要
  BUFFERS=30      :设置最大的磁盘缓冲区数,能满足大多数应用
仅为DOS使用,WIN 9X不需要
  FCBS=4        :文件控制块数,现已极少使用,仅为DOS使用
  LASTDRIVE=Z      :最大盘符设置,该值设置过小,将无法加载光驱
  STACKS=9,256     :设定栈数目、大小,该设置为旧程序使用WIN 9X系统不需要


  SHELL=COMMAND.COM/P  :指定WIN 9X命令行处理程序


IO.SYS提供的系统环境设置如下:


命令查寻路径 : PATH=C:\WINDOWS;C:\WINDOWS\COMMAND
DOS提示符 : PROMPT=$P$G
临时文件目录 : TEMP=TMP=C:\WINDOWS\TEMP
命令行处理程序位置:COMSEPC=C:\WINDOWS\COMMAND\COMMAND.COM


  IO.SYS提供了较完善的系统配置,使取消CONFIG.SYS、AUTOEXEC.BAT成为可能。出于兼容
性考虑,IO.SYS不加载EMM386.EXE驱动,不提供扩充内存EMS和上位内存UMB。EMM386.EXE在系
统搜寻新硬件时可能引起系统死机,在日常使用时不会有问题。



  3、IO.SYS控制下的启动过程


  ⑴系统启动时,IO.SYS显示“Starting Windows 95...”,此时可由启动功能键选择启动
方式。


  ⑵IO.SYS根据启动菜单选择和MSDOS.SYS的配置确定启动模式。


  ⑶若使用原DOS系统,IO.SYS自动将DOS和WIN 9X的系统启动文件对换,然后由原DOS控制
系统启动过程。(即WIN 9X的双重启动过程最终是由IO.SYS控制完成的,与引导记录等无关)


  ⑷IO.SYS根据启动模式先由CONFIG.SYS进行系统硬件配置,若CONFIG.SYS中没有加载WIN
9X启动的必需文件(如HIMEM.SYS、IFSHLP.EXE等),系统则根据默认设置自动加载。(如果要
加载使用扩展内存的驱动程序,如EMM386.EXE等,必须在CONFIG.SYS第一行加上HIMEM.SYS驱
动,否则由于系统此时未提供扩展内存,EMM386.EXE等程序将无法运行)


  ⑸完成CONFIG.SYS等硬件配置后,IO.SYS通过COMMAND.COM调用AUTOEXEC.BAT进行软件配
置。


  ⑹系统根目录下的BOOTLOG.TXT是由IO.SYS控制完成的,其它一些日志文件多是在安装系
统时建立的。


  ⑺完成DOS启动过程后自动调用WIN.COM,开始启动GUI。
四、MSDOS.SYS


  1、MSDOS.SYS的作用


  在WIN 9X中,MSDOS.SYS变成了纯文本系统配置文件,用于控制WIN的启动方式。可以在D
OS模式下解除其特殊属性(只读、隐藏、系统),根据需要自行配置。MSDOS.SYS可以是空文件
,甚至可以删除,当然此时系统只能以纯DOS方式启动,不能进入GUI系统。


  不同方式形成的MSDOS.SYS默认内容不同,主要有四种,其中前三种方法形成的MSDOS.SY
S文件无任何配置命令,几乎是空文件,仅保留一行注释,以说明该文件形成方式,这类文件
多见于系统软盘中。不同的MSDOS.SYS内容如下:


1)WIN安装时建立的系统盘 : ;WIN95EBO
2)FORMAT /S建立的系统盘 : ;FORMAT
3)SYS A:传递建立系统盘 : ;SYS
4)建立系统时在硬盘上形成的MSDOS.SYS


  系统硬盘中的MSDOS.SYS内容比较完整,包括必要的启动配置命令,文件长度必须大于10
24 bytes,即占用两个以上磁盘扇区,这一要求在该文件中说明为保证兼容性,但从未见更深
入的介绍,实际上文件小于1024 bytes对系统并无明显影响,该要求估计是为了保证系统与旧
版DOS和WIN 3.X兼容而提出的,这一点尚望行家指教。


  用SYS向硬盘传送系统以修复启动文件时,将覆盖引导记录、IO.SYS和COMMAND.COM,MSD
OS.SYS的内容保持不变,保证系统引导部分修复后,整个系统仍能正常启动,这一做法非常聪
明。
2、MSDOS.SYS的配置参数


  MSDOS.SYS由三小节组成,其各配置参数无顺序要求,内容如下:
   [PATHS]  指定WINDOWS的系统文件路径
   WinDir=     指定WIN 9X各系统文件及其子目录所在的目录
            该路径必须包括注册表文件SYSTEM.DAT和WIN 9X启动必需的驱动程
序,如HIMEM.SYS等
   WinBootDir=   指定WIN 9X的GUI启动程序WIN.COM所在的目录
   HostWinBootDrv= 指定WIN.COM所在的驱动器,不需冒号(:)
   UninstallDir=  指定保存原系统的目录,便于自身删除时恢复原系统用
            该参数出现在WIN的升级版本中
   [OPTIONS] 指定WINDOWS的启动方式,/前的值为缺省值
   LOGO=1/0    允许/禁止启动时显示WIN 9X标志(LOGO)
           屏蔽该画面有时可解决第三方内存管理程序造成的冲突      
      看到系统启动过程出现的提示信息,也使系统启动稍快,启动
           启动时可用ESC键清除WIN 9X标志,查看实模式启动信息
   BootKeys=1/0  允许/禁止启动键改变启动方式
           为0时直接进入默认的启动方式,不能用启动热键转换
   BootGUI=1/0  启动图形界面GUI / 仅启动DOS 7.X,进入DOS字符界面
           为0时可为DOS 7.X多重启动提供方便,能进一步启动图形界面
   BootWin=1/0  启动WIN 9X / 启动旧版DOS,可按要求对换系统文件
           当BootWin=0时,默认启动旧版DOS,若此时选择启动菜单的
           “Previous MS-DOS version”,将启动WIN 9X
           注:BootWin级别高于BootGUI,两者冲突时以前者为准
   BootMulti=0/1 禁止/允许双重启动
           即在启动菜单中是否出现“Previous vertion of MS DOS”项
           从旧版DOS升级WIN 9X时会自动出现此项,并设置为       
                          1,但对于WIN 97/98 来说,如果
不对启动系统进行修改,选择此项将造成系统下次无法启动
BootMenu=0/1  系统启动时是否自动显示启动选择菜单
           该值为1,在启动时会直接弹出启动选择菜单
   Network=0/1  启动菜单中是否出现“带网络的安全模式启动”项
           即“Safe mode with network support”项
   BootDelay=n  系统引导前显示“Starting WINDOWS 95...”时间,默认为2秒供使
用启动键改变启动方式,该值为0时不出现任何提示直接进入默认的启动过程,可加快启动速
度,但仍可用启动热键选择启动方式


   BootMenuDefault= 启动菜单使用的默认选项,缺省值为 1
   BootMenuDelay= 启动菜单按默认方式启动延迟间,缺省值30,单位:秒
   BootSafe=0/1  系统是否以安全模式启动,为1时系统直接以安全模式启动
   BootWarn=1/0  启动时是否显示警告信息
           当系统非正常关机重新启动时,是否提示“应进入安全模式” 实际
上安全模式解决问题能力非常有限,真正的系统问题在该模式下是无法解决的,不进也罢
   BootConfig=1/0  能否使用单步配置模式,其作用不明
   DisableLog=0/1  在“Step-by-step config”时是否创建BOOTLOG.TXT
           1:不选择“Logged”时不询问也不创建Bootlog.txt
           0:询问是否创建日志文件Bootlog.txt
   SystemReg=1/0  系统启动时是否运行WINDOWS 9X注册器
           1:“Step-by-step config”下询问是否运行注册器
            其他模式则自动运行注册器
            0:不运行也不询问是否运行WINDOWS 9X的注册器
            该注册器在整个系统启动前首先运行,但运行与否对系统无明显影
响,其作用不明


LoadTop=1/0   是否将COMMAND.COM、Drvspace.bin、Dblspace.bin等加载到高端内存,
如启动中出现内存地址冲突,可将该值设为0
            这类冲突多由CONFIG.SYS、AUTOEXEC.BAT加载的程序造成Autosca
n=1/0
            非正常关机(如掉电等)再启动时,是否自动执行SCANDISK
            (仅在WIN 97/98有效)
            取消自动检测硬盘固然可以免除一些烦恼,但确实给系统带来了隐
患,还是不关闭的好


   DoubleBuffers=1/2/0  是否加载BDLBUFF.SYS,提供双重缓存支持
              0:不提供;1:需要时提供,如有SCSI卡等;
              2:无条件提供双重缓存
   DblSpace=1/0   允许需要时自动加载DblSpace.bin压缩驱动(DOS6.0、6.2)
   DrvSpace=1/0   允许自动加载DrvSpace.bin压缩盘驱动(DOS6.22、WIN 9X)
            压缩硬盘降低了系统整体性能,更增加了数据的危险性
            在硬盘容量已不成问题的今天,还是不用压缩为妙
            注意,FAT32不支持任何磁盘压缩软件
   WinVer=     注明WINDOWS版本正式推出日期


第三部分由以分号“;”开头的数行任意字符组成,在MSDOS.SYS中属于注释行,对系统不起任
何设置作用,主要用于保证MSDOS.SYS文件长度大于1024字节。


  MSDOS.SYS提供的参数多数是用于调整系统使用的,对于普通用户来说,常用的主要包括
NetWork前的几个参数。


五、COMMAND.COM


  COMMAND.COM是WINDOWS 9X中的DOS外壳程序(SHELL),较DOS 6.22仅增加了部分内部命令
,没有更新的东西。


  IO.SYS对COMMAND.COM的处理则有了根本改变,当WIN 9X在CONFIG.SYS中加载EMM386.EXE
驱动提供UMB时,COMMAND.COM的常驻部分装入HMA,暂驻部分装入UMB中(在DOS6.22中,COMMA
ND.COM只能将常驻部分装入HMA),这将为DOS程序提供更大的常规内存,也不需要反复从磁盘
中恢复暂驻部分,有效地提高了系统性能。当然,如果没有加载EMM386.EXE,系统不提供UMB
,COMMAND.COM的暂驻部分就只能象DOS6.22那样置于常规内存的高端。


六、CONFIG.SYS和AUTOEXEC.BAT


  WIN 9X中的CONFIG.SYS、AUTOEXEC.BAT的作用与DOS的一样,用于装配所有DOS实模式的驱
动程序和应用程序,或者修改IO.SYS的默认配置。其中,CONFIG.SYS主要用于硬件配置,AUT
OEXEC.BAT主要用于软件配置,其在启动过程中的使用参见IO.SYS一节。


  WIN 9X启动后,这两个文件的配置作为全局设置始终保留在系统底层,决定着WIN 9X下所
有的DOS、WIN 16应用环境。如果没有DOS全局设置,WINDOWS窗口下的DOS应用程序将使用WIN
9X的默认设置,当然也可由用户单独配置。注意,DOS软件需要的PATH、SET等环境设置可在
各自窗口的属性中单独设置;16位的WIN 3.X软件需要的PATH、SET等环境设置只能在AUTOEXE
C.BAT中设置。


  WIN 9X新增了不少配置命令,使实模式DOS环境更便于优化,各配置命令参见系统目录\W
INDOWS下的CONFIG.TXT说明,这里不再多说。 WIN 9X通过VXD(虚拟设备驱动)、DLL(动态链接
库)等保护模式驱动程序统一管理和使用系统软、硬件资源,基本上不需要实模式程序支持。
实模式程序主要是为支持一些老设备而保留的。实模式程序的存在使WIN 9X必须在保护模式和
实模式之间频繁地转换,大大降低了系统性能,更损害了系统稳定性,所以应尽量避免在启动
时装载实模式程序。


  WIN 9X对DOS环境的缺省设置能满足大多数DOS软件需要,在完成WIN 9X安装后试着删除这
两个文件中的内容非常必要。删除其中的实模式程序,尽量实现WIN 9X的保护模式驱动,可使
WIN 9X处于高性能、高稳定性的优化运行状态。


  没有CONFIG.SYS、AUTOEXEC.BAT的DOS系统几乎一无所能,而没有它们的WIN 9X性能也许
更好。在WIN 9X中它们主要是为支持原DOS软件和古老的设备而保留的。目前多数报章建议完
全删除这两个文件,这其实很有问题,具体分析参见《电脑界·电脑高手》''99年10月号。


七、WIN.COM


  WIN.COM是WINDOWS的GUI启动命令,从文件名可以看出这是一个纯粹的DOS命令,它也是G
UI系统中唯一的COM文件。该命令是DOS和GUI的接口命令,主要用来加载保护模式的虚拟设备
驱动程序VMM32.VXD(该程序是由多个子程序组合而成的,使CPU运行于保护模式下),同时处理
GUI启动中的各种问题,它控制着系统的整个调入过程。



   WIN.COM提供的各类启动开关,主要用于确定系统故障,会使系统性能降低:
WIN [/D: [F][M][S][V][X]]


/D 当WINDOWS不能正常启动时用于查找故障原因


:F 关闭32位磁盘存取模式,用于不支持32位存取的硬盘
等价于在SYSTEM.INI的[386ENH]节中设定: 32BitDiskAccess=FALSE.


:M 安全模式启动,等价于使用功能键F5启动


:N 带实模式网络支持的安全模式启动,等价于使用功能键F6启动


:S 禁止Windows使用在F000:0000与1 MB之间的ROM地址空间做为断点
等价于在SYSTEM.INI的[386ENH]节中设定: SystemROMBreakPoint=FALSE.


:V 指定启动时由ROM例程处理硬盘控制器中断
等价于在SYSTEM.INI的[386ENH]节中设定: VirtualHDIRQ=FALSE.


:X 禁止WINDOWS使用所有高端内存(从A000-FFFF),解决内存冲突问题
等价于在SYSTEM.INI的[386ENH]节中设定: EMMExclude=A000-FFFF.


八、GUI启动


  WIN 9X的GUI启动过程是非常复杂,更是微软公司的核心秘密,不为外人所知。而对普通
用户而言,完全掌握这个复杂多变的机制也无必要,这里只对整个GUI启动机制做一个大致的
说明。


  1、GUI的配置文件


  同所有复杂的系统一样,WIN 9X主要是根据系统配置文件调用各类程序来组合系统,保证
系统正常运行的。WIN 9X的GUI系统配置文件以系统注册表为核心,以各系统目录下的INI文件
为辅助配置。把握住系统配置文件,就掌握了系统的核心。


  GUI系统的核心配置文件主要有5个,即:WIN.INI、SYSTEM.INI、SYSTEM.DAT、USER.DAT
和POLICES.DAT。


  WIN.INI和SYSTEM.INI据说是为WIN 3.X下的WIN 16保护模式程序保留的,WIN 3.X在这两
个文件中的设置在WIN 9X中大部分已移入系统注册表中。WIN 9X下WIN 32保护模式程序主要通
过系统注册表完成配置,不需要这两个文件的支持。这一做法规范了应用程序的开发和使用,
消除了随意设置INI文件的混乱,便于WIN 9X统一管理系统,增加了系统的稳定性。但如果删
除这两个文件,WIN 9X系统无法启动,并提示“找不到SYSTEM.INI文件”,这说明WIN 9X的启
动还是离不开这两个文件的。


  WIN.INI提供了WIN 16程序需要的字体设置、文件关联等种种信息,主要完成GUI下相应的
环境配置,对WIN 9X应用没有太大影响,如果没有这个文件,WIN 9X将自动生成一个最简单的
只有几行配置命令的WIN.INI。



  SYSTEM.INI则不同,它是WIN 16的系统硬件配置文件,WIN 9X又为其增加了一些新设置,
以保证WIN 16和WIN 32相互协调,使WIN 16可以调用VXD驱动程序,这一点在WIN.COM提供的系
统调试参数中已有充分体现。另外GUI的外壳程序(SHELL,即界面程序)、鼠标器、显示器等驱
动程序必须通过SYSTEM.INI设置才能加载使用,这些决定了SYSTEM.INI是绝对不能删除的。这
充分证明了WIN 9X是一个WIN 16和WIN 32的混合系统,也揭示了WIN 9X系统先天脆弱的根本原
因。


  WIN.INI、SYSTEM.INI中的各项设置可参见《新潮电子精华本1》。


  SYSTEM.DAT和USER.DAT即所谓的系统注册表文件,是WIN 9X的核心文件,WINDOWS就是通
过它来管理整个系统的。SYSTEM.DAT保存着硬件配置及软件安装信息,USER.DAT保存着与用户
的个人设置有关的信息,前者只能有一个,而后者可以有多个。这两个文件共同作用,包含了
系统的全部信息,在使用注册表编缉软件(如REGEDIT.EXE)时,这两个文件共同被修改,不能
分开。它们的损坏将导致系统彻底瘫痪,无法挽救。不幸的是,系统注册表非常脆弱,缺乏自
我整理和维护机制,当系统运行一段时间后,用户往往只能走上痛苦的系统重建之路。


  在WIN 95/96/97中,注册表的备份为SYSTEM.DA0和USER.DA0,保存在\WINDOWS下;在WIN
98中,WIN.INI、SYSTEM.INI、SYSTEM.DAT和USER.DAT四个文件被合并备份成一个文件RB00?
.CAB,保存在\WINDOWS\SYSBCKUP下,默认保留5个。


  每次GUI启动时系统会对备份文件自动更新,这种处理缺乏安全管理机制,难以保证备份
文件不受错误信息干扰,多数情况下备份文件形同虚设。


  令人遗憾的是,除了手工编缉注册表软件REGEDIT.EXE,WIN 9X没有提供更有效的注册表
维护工具。在WIN 98提供了注册表检测软件ScanReg.exe和ScanRegw.exe,这是一个进步,但
它只能处理注册表的物理故障,无法解决结构性问题,其可*性又有多大呢?


  博大的注册表完全应该用一本专著来剖析,在《新潮电子精华本1》中也有简单的介绍,
这里就不做更深的解释了。


  POLICES.DAT是微软的MSN(Microsoft Network)注册支持文件,该网络国内用户很少,该
文件也很少使用。


  尽管没有更直接的资料介绍,但是有充分的理由证明在WIN 9X的启动过程中,保存在\WI
NDOWS\INF目录下的各种INF文件是WIN 9X系统中最有力的支持文件。在启动系统的过程中,W
IN 9X会适时地调用这些文件,以装载相应的驱动程序。如果没有了这些文件,WIN 9X也是无
法启动的。另外,WIN 9X的PNP技术主要是通过INF文件实现驱动程序安装的。


  2、GUI的启动过程


  GUI的启动过程主要由三个阶段组成:WININIT.EXE阶段、16位保护模式启动和32位保护模
式启动。


  ⑴WININIT.EXE阶段WIN.COM开始运行后,首先调用\WINDOWS下的WININIT.EXE,该命令在
同目录下寻找WININIT.INI,如果有则按照该文件配制对系统文件进行重新调整或升级,以保
证整个系统的驱动程序能够得到及时更新。这是WINDOWS系统支持PNP技术,实现系统驱动程序
升级的主要途径。这个过程自然是在DOS状态下完成的。


  ⑵16位保护模式启动


  WIN.COM开始执行后,调入\WINDOWS\SYSTEM下的VMM32.VXD,VMM32.VXD将处理器置于保护
模式下,根据SYSTEM.INI和注册表的配置开始启动GUI系统的16位保护模式。这可以保证系统
支持WIN16软件,更主要的是PNP BIOS(即插即用BIOS)规范只提供16位保护模式接口,以PNP为
硬件技术核心的WIN 9X必须通过16位模式直接获得BIOS提供的硬件设备信息来配置系统,提高
系统启动性能,否则对硬件的配置必须在实模式下从头开始。


  GUI的启动首先加载WIN 9X的系统驱动程序,再从PNP BIOS获得硬件设备信息,先后加载
PNP设备驱动程序VXD和支持非PNP硬件所需的全部16位虚拟保护模式驱动程序VXD,分配系统资
源,避免设备冲突,然后初始化所有的驱动程序(包括系统驱动程序和设备驱动程序),完成系
统硬件配置。最后加载16位外壳组件USER.EXE、GUI.EXE、KRNL386.EXE等,形成WIN16的API,
完成16位保护模式启动,此时,每个系统组件都已存在,但还不具使用界面。


  ⑶32位保护模式启动


  完成16位模式启动后,系统调用32位的外壳程序资源管理器,16位内核一看到这一调用,
就先自动加载VWIN32.386,由它加载三个32位DLL库文件:USER32.DLL、GDI32.DLL、KERNEL3
2.DLL,形成WIN32的API(这是WIN 9X的核心),VWIN32.386完成这一任务后,将控制权还给16
位内核,16位内核再将控制权交给32位内核,开始32位保护模式启动。这时系统加载并初始化
所有32位驱动程序,这个过程与16位模式相同。


  最后,运行GUI的外壳程序(该外壳程序由SYSTEM.INI中的[BOOT]节中“SHELL=”设置,默
认是资源管理器),完成GUI启动。


3、GUI启动过程中故障的排除


  GUI系统相当复杂,相关的技术资料却极少,这决定了用户不能象在DOS中那样根据启动过
程去排查故障。


  WIN 9X对GUI的启动过程从未提供详尽的说明,仅在根目录下提供了一份启动日志文件BO
OTLOG.TXT。该文件记录了启动过程使用的所有程序模块的加载情况,是解决系统问题的唯一
依据。根据该记录可以全面了解GUI启动过程中发生的种种问题。


  面对启动过程中的失败,主要有两个处理方法,一是用完好的源程序覆盖出现问题的程序
,但其难点在于如何在各类软件包中找到那些完好的源程序,注意,直接调试、修复出现问题
的程序在WIN 9X下是难以想象的;一是从启动配置文件(CONFIG.SYS、AUTOEXEC.BAT、WIN.IN
I、SYSTEM.INI和注册表)中删除调用有问题模块的命令。后者主要用于解决某软件卸载失败出
现的问题。


  在图形模式GUI下解决系统问题时多会受到种种限制,而纯DOS模式不受系统制约,是最后
的系统之门(对于电脑高手来说,DOS仍是永恒的主题)。


  WINDOWS系统的复杂性决定了排除那些莫名其妙的故障的难度,若对系统经过几次调整后
仍未解决问题,最保险也是最快捷的办法就是重新安装系统。也许这是微软对用户唯一有用的
建议。


  在WINDOWS下重新安装系统,要保证产品的序列号一致,否则系统可能拒绝安装。


  九、WIN 9X启动顺序小结


  本文详尽地讨论了WIN 9X的启动过程,复杂的参数和技术分析模糊了其清晰的体系结构,
现在对整个启动过程做一简单的概括,使读者根据启动过程中的现象能够相对准确地判断启动
过程,更好地处理系统启动过程中的问题。


  ⑴系统加电启动,依次加载扩展卡(包括显卡等)、主板的BIOS程序(这与所有的操作系统
(如WIN 9X、LINUX、UNIX、OS/2等)无关),完成自检过程


  ⑵读入硬盘的主引导记录、分区引导记录,自动加载IO.SYS


  ⑶IO.SYS读取MSDOS.SYS配置,确定启动方式,根据CONFIG.SYS,进行硬件配置


  ⑷IO.SYS根据WIN 9X启动要求,自动加载必要的默认驱动程序(HIMEM.SYS、SETVER.EXE,
IFSHLP.SYS等)


  ⑸IO.SYS调入COMMAND.COM,解释执行AUTOEXEC.BAT,进行软件配置



⑹IO.SYS进行必要的默认环境设置


  ⑺自动执行WIN.COM,进入GUI启动阶段


  ⑻执行WININIT.EXE,对系统驱动程序进行升级


  ⑼加载SYSTEM.INI中[BOOT]、[386ENH]、[DEVICES]等节设置的驱动程序


  ⑽根据SYSTEM.INI、WIN.INI和系统注册表进行系统组合、配置,各类启动时调用的VXD文
件主要存放在C:\WINDOWS\SYSTEM下的VMM32和IOSUBSYS下


  ⑾加载SYSTEM.INI中的“SHELL=”指定的外壳程序


  ⑿执行系统注册表中的HKEY_LOCAL_MACHINE→Software→Microsoft→Windows→Current
Version下的Run、RunOnce中包含的应用程序(其中RUNONCE包含的程序只运行一次后就被自动
删除,该键主要用于软件安装),通常默认加载Internat.exe(输入法)、Systray.exe(音量控
制)和WIN 98的ScanRegw.exe/autorun。


  ⒀当用户完成身份登录后,系统执行HKEY_CURRENT_USER→Software→Microsoft→Windo
ws→CurrentVersion下的Run、RunOnce中包含的应用程序


  ⒁执行WIN.INI中的LOAD= RUN=加载的应用程序


  ⒂执行开始菜单中[启动]组包含的应用程序


  十、结语


  WIN 9X的启动过程终于介绍完了。由于笔者知识水平和眼界的局限,其中还是留下了许多
空白就教于诸位高手。


  诚然,这个过程本来是一个相当陈旧的话题,但是多数介绍仅限于局部技巧,且谬传颇多
,比较系统完整的非常少见,这给广大电脑爱好者带来很大的困惑,这里不自量的献丑,实是
纠正一些流传的误解,使电脑爱好者对WINDOWS 9X的启动过程有一个相对完整清晰的把握。

w w w. 1 6 3 1 6 4 .c n

返回总目录 上一页 目录页 下一页