沈阳电脑维修网,沈阳上门维修电脑服务
当前位置: 主页 > 系统故障维修> Windows 9X 启动全揭秘 >

Windows 9X 启动全揭秘

时间:2011-6-12来源:www.sypcwx.cn 作者: 沈阳电脑维修网点击:
沈阳电脑维修,上门维修电脑
自WIN95发行以来,微软公司坚持对WIN9X系统内核技术保密,用户难以获得WIN9X启动过程 更底层的技术资料,它始终是一个黑色的过程。掌握系统的启动过程是全面控制系统和优化系 统的关键,现在根据公开的技术资料和实践经验,仅从应用角度,对WIN9X(包括95、96(95O SR1)、97(95OSR2.X)、98、98SE)的启动过程全面揭密,并对各技术细节加以必要的说明。   WIN9X家族主要由四个版本系列组成,其中WINDOWS95是第一个版本,正是它开创了PC世 界新纪元,并将比尔·盖茨推向世界首富的宝座。该版本并不完善,BUG最多,在推出一个多 月后就开始提供修正软件包。   WIN96即WIN95的OSR1版(称其为96,是因其发布于96年,97同此),该版本几乎重写了W IN95的内核,纠正了WIN95在实际应用中的种种问题,由于与WIN95发布时间太近,流传不 广。   WIN97即WIN95的OSR2.X,该版本发生了质的飞跃,其最大的变化是提供了新磁盘的格式 FAT32,集成了Internet浏览器IE3.0,这表明微软的系统发展战略开始转向因特网。OSR2. X有三种版本,即OSR2.0、OSR2.1和OSR2.5,其中OSR2.1支持USB和AGP显卡,OSR2.5则提供了 IE4.0。由于FAT32使OSR2.X与WIN95和DOS不兼容,微软只将其做为OEM产品而不提供零售版 ,WIN97因此也成为WIN95后最流行的版本。   WIN98是以DOS为基石的WINDOWS系列的最后辉煌。它将因特网技术和操作系统紧密结合, 同时提供了IE4.0和DirectX5.0,但没有提供更激动人心的东西,更象是WIN97的零售版。   WIN98SE是WIN98的第二版,与WIN98相比只是提供了IE5.0和DirectX6.1a,别无新意 。   WINDOWS2000是以WINDOWSNT为基础的网络操作系统,它已经是与WIN9X截然不同的产品 了,而新推出的WINDOWSMe则是WINDOWS9X的替代产品,但除了借用WINDOWS2000的界面外,尚 没有更新的发现。   WIN9X版本沿革比较复杂,其核心却保持着相对的稳定,没有根本性变化,启动过程也几 乎完全相同,这是本文存在的依据。 一、WIN9X启动概述   WIN9X的启动过程继承了DOS的传统并进行了必要的扩充,主要由两个阶段组成,即扩展 的DOS实模式启动和GUI(即图形界面)32位保护模式启动,WIN9X的技术核心集中在后一阶段中 。   该启动过程依次由引导记录、IO.SYS、MSDOS.SYS、COMMAND.COM、CONFIG.SYS、AUTOEXE C.BAT、GUI启动命令WIN.COM和其它必要的相关文件完成,其中与DOS的系统文件完全同名的文 件实际上发生了质的变化。   WIN95/96提供了彻底的双重启动功能,即用户可以用WIN95/96和DOS(6.22以下)两种方 式启动系统,互不干扰,解决了新旧系统的兼容问题,最大限度地维护了用户的利益。但为了 逐渐摆脱落后的DOS对PC世界的影响,从WIN97开始,微软公司尝试限制双重启动功能,使WI N97/98的启动系统必须修改才能实现双重启动。目前,双重启动功能在实际上的需要确已越 来越少。   二、引导记录   引导记录的作用是将操作系统的核心文件调入内存,以启动系统。   所有系统的引导记录均位于磁盘的起始位置,微机加电启动时,直接从固定位置将引导记 录调入内存,引导系统启动。不同版本系统的引导记录自然不同。   DOS引导记录的版本标志为MSDOS5.0,支持FAT12(各版本均用于软盘或小于16M的硬盘)、 FAT16磁盘格式,指定的系统引导文件是IO.SYS、MSDOS.SYS。   WIN95/96的引导记录与DOS(6.22前独立版本)的完全兼容,版本标志为MSWIN4.0,支持F AT12、FAT16磁盘格式,支持双重启动,指定的引导文件是WINBOOT.SYS(IO.SYS在旧版DOS下 使用时的文件名)和IO.SYS、MSDOS.SYS。   WIN97/98的引导记录与DOS有了本质的区别,版本标志为MSWIN4.1,使用32位指令代码, 支持FAT12、FAT16和FAT32三种磁盘格式,固定引导IO.SYS,这导致不经修改,WIN97/98 不能直接支持双重启动。   WIN97/98的全新磁盘格式FAT32可以支持大容量硬盘,取消了FAT16的容量限制,与传 统的FAT16完全不兼容,当然不能为DOS、WINDOWS95/96识别。这种磁盘格式下多数原DOS、 WINDOWS95/96软件均能正常运行,但与磁盘格式有关的软件如磁盘工具等不能继续使用。由 于主流的硬盘容量正在超过8.4G,FAT32的应用越来越广。 三、IO.SYS   1、IO.SYS的内部启动菜单   WIN9X的IO.SYS由原DOS的系统文件IO.SYS、MSDOS.SYS合并而成,提供标准硬件的输入/ 输出接口和DOS的中断调用,功能全面增强,它基本上控制着WIN9X的全部启动过程,是WIND OWS的DOS实模式的核心文件。但它需要根据MSDOS.SYS的设置才能实现正常的启动过程。   IO.SYS可由启动功能键改变启动过程,这些功能键对应着启动菜单各选项:功能键对应的启动菜单项 F4:PreviousMS-DOSversion F5:Safemode Shift+F5:Commandpromptonly F6:Safemodewithnetworksupport F8:启动时调出启动菜单 Shift+F8:Step-by-stepconfirmation 系统启动出现“StartingWindows95...”时按下功能键即可  IO.SYS提供启动选择菜单,便于用户根据需要选择启动方式:   ⑴Normal   正常启动模式(默认的启动方式)   当MSDOS.SYS中的BootWin=0时,选择本项系统将启动旧版DOS   ⑵Logged(BOOTLOG.TXT)   正常启动模式,同时在根目录下形成BOOTLOG.TXT   BOOTLOG.TXT记录了启动过程中发生的所有情况,是WIN9X系统启动过程唯一全面的诊断 记录,可供用户检查启动过程中的问题⑶Safemode   安全模式的GUI,屏幕四角有“安全模式”字样不加载CONFIG.SYS、AUTOEXEC.BAT,也不 加载启动程序组中任何程序,只加载最基本硬件配置(标准VGA模式,无声卡、光驱等),即最 简单的GUI启动,用于纠正因硬件配置等造成的GUI启动问题。系统出现问题无法正常启动时, 多数情况下会进入该启动模式,但该模式能解决的问题非常有限,多用于显示器等配置系统配 置主要在控制面板上调整。要进入正常的GUI,必须重新启动   ⑷Step-by-stepconfirmation   单步执行WINDOWS启动   用于确定因系统文件损坏造成的启动故障,该方式仅能确定DOS启动过程中的系统问题, 主要修正Config.sys和Autoexec.bat中存在的问题要确定GUI启动过程中的问题,只能借助BO OTLOG.TXT文件   ⑸Commandpromptonly   仅执行完整的实模式DOS启动过程,进入纯DOS状态加载全部支持WIN启动的DOS驱动程序 ,主要用于只能运行于纯DOS模式下的应用软件或解决严重的系统问题,可用命令WIN启动正常 的GUI   ⑹Safemodecommandpromptonly最简单的DOS启动仅执行最基本的IO.SYS、MSDOS.SY S和COMMAND.COM三个系统文件,不加载默认驱动程序(HIMEM.SYS、IFSHLP.EXE和SETVER.EXE) 和CONFIG.SYS,AUTOEXEC.BAT,其它的环境默认值同WIN9X的设定,该模式无法继续启动正 常的或安全模式的GUI,主要用于处理最严重的系统故障。   ⑺PreviousMS-DOSversion   启动旧版DOS,执行双重启动根目录下应有以.DOS为扩展名保存的五个原DOS系统文件。该 选项的出现由MSDOS.SYS中的参数“BootMulti”控制注意:当MSDOS.SYS中的BootWin=0时,选 择本项将启动正常的WIN9X系统⑻Safemodewithnetworksupport带实模式网络访问的安全 模式该选项的出现由MSDOS.SYS中的参数“NetWork”控制用于排除网络系统的PC故障,可通过 实模式网络系统,获得更大的系统支持   2、IO.SYS提供的扩展的DOS默认配置   IO.SYS在启动时与DOS的最大不同,是提供能满足大多数DOS应用的缺省CONFIG.SYS配置, 能够自动加载必要的驱动程序,以保证WIN9X正常启动,具体内容如下:   HIMEM.SYS       :支持1M以上内存,提供扩展内存(XMS)管理保证WIN启动的必 需文件   DBLBUFF.SYS      :双重缓存驱动程序,仅需要时加载,多用于支持SCSI卡   IFSHLP.EXE      :增强的文件管理驱动程序,支持WIN的VFAT系统 保证WIN启动的必需文件   SETVER.EXE      :版本登录服务,消除版本限制,仅在DOS下用   Dblspace.bin     :DOS6.0磁盘压缩驱动程序,仅在硬盘被压缩时才加载   Drvspace.bin     :DOS6.22以后的磁盘压缩驱动程序,同上   DOS=HIGH,UMB     :将DOS系统移入HMA,以留出更多的常规内存而UMB对系统没有 任何作用,实属摆设   FILES=30       :能打开的最大文件数,能满足大多数应用仅为DOS下使用,W IN9X不需要   BUFFERS=30      :设置最大的磁盘缓冲区数,能满足大多数应用 仅为DOS使用,WIN9X不需要   FCBS=4        :文件控制块数,现已极少使用,仅为DOS使用   LASTDRIVE=Z     :最大盘符设置,该值设置过小,将无法加载光驱   STACKS=9,256     :设定栈数目、大小,该设置为旧程序使用WIN9X系统不需要   SHELL=COMMAND.COM/P :指定WIN9X命令行处理程序 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显示“StartingWindows95...”,此时可由启动功能键选择启动 方式。   ⑵IO.SYS根据启动菜单选择和MSDOS.SYS的配置确定启动模式。   ⑶若使用原DOS系统,IO.SYS自动将DOS和WIN9X的系统启动文件对换,然后由原DOS控制 系统启动过程。(即WIN9X的双重启动过程最终是由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的作用   在WIN9X中,MSDOS.SYS变成了纯文本系统配置文件,用于控制WIN的启动方式。可以在D OS模式下解除其特殊属性(只读、隐藏、系统),根据需要自行配置。MSDOS.SYS可以是空文件 ,甚至可以删除,当然此时系统只能以纯DOS方式启动,不能进入GUI系统。   不同方式形成的MSDOS.SYS默认内容不同,主要有四种,其中前三种方法形成的MSDOS.SY S文件无任何配置命令,几乎是空文件,仅保留一行注释,以说明该文件形成方式,这类文件 多见于系统软盘中。不同的MSDOS.SYS内容如下: 1)WIN安装时建立的系统盘:;WIN95EBO 2)FORMAT/S建立的系统盘:;FORMAT 3)SYSA:传递建立系统盘:;SYS 4)建立系统时在硬盘上形成的MSDOS.SYS   系统硬盘中的MSDOS.SYS内容比较完整,包括必要的启动配置命令,文件长度必须大于10 24bytes,即占用两个以上磁盘扇区,这一要求在该文件中说明为保证兼容性,但从未见更深 入的介绍,实际上文件小于1024bytes对系统并无明显影响,该要求估计是为了保证系统与旧 版DOS和WIN3.X兼容而提出的,这一点尚望行家指教。   用SYS向硬盘传送系统以修复启动文件时,将覆盖引导记录、IO.SYS和COMMAND.COM,MSD OS.SYS的内容保持不变,保证系统引导部分修复后,整个系统仍能正常启动,这一做法非常聪 明。 2、MSDOS.SYS的配置参数   MSDOS.SYS由三小节组成,其各配置参数无顺序要求,内容如下:    [PATHS]  指定WINDOWS的系统文件路径    WinDir=     指定WIN9X各系统文件及其子目录所在的目录             该路径必须包括注册表文件SYSTEM.DAT和WIN9X启动必需的驱动程 序,如HIMEM.SYS等    WinBootDir=   指定WIN9X的GUI启动程序WIN.COM所在的目录    HostWinBootDrv= 指定WIN.COM所在的驱动器,不需冒号(:)    UninstallDir=  指定保存原系统的目录,便于自身删除时恢复原系统用             该参数出现在WIN的升级版本中    [OPTIONS]指定WINDOWS的启动方式,/前的值为缺省值    LOGO=1/0    允许/禁止启动时显示WIN9X标志(LOGO)            屏蔽该画面有时可解决第三方内存管理程序造成的冲突            看到系统启动过程出现的提示信息,也使系统启动稍快,启动            启动时可用ESC键清除WIN9X标志,查看实模式启动信息    BootKeys=1/0 允许/禁止启动键改变启动方式            为0时直接进入默认的启动方式,不能用启动热键转换    BootGUI=1/0  启动图形界面GUI/仅启动DOS7.X,进入DOS字符界面            为0时可为DOS7.X多重启动提供方便,能进一步启动图形界面    BootWin=1/0  启动WIN9X/启动旧版DOS,可按要求对换系统文件            当BootWin=0时,默认启动旧版DOS,若此时选择启动菜单的            “PreviousMS-DOSversion”,将启动WIN9X            注:BootWin级别高于BootGUI,两者冲突时以前者为准    BootMulti=0/1 禁止/允许双重启动            即在启动菜单中是否出现“PreviousvertionofMSDOS”项            从旧版DOS升级WIN9X时会自动出现此项,并设置为                                  1,但对于WIN97/98来说,如果 不对启动系统进行修改,选择此项将造成系统下次无法启动 BootMenu=0/1 系统启动时是否自动显示启动选择菜单            该值为1,在启动时会直接弹出启动选择菜单    Network=0/1  启动菜单中是否出现“带网络的安全模式启动”项            即“Safemodewithnetworksupport”项    BootDelay=n  系统引导前显示“StartingWINDOWS95...”时间,默认为2秒供使 用启动键改变启动方式,该值为0时不出现任何提示直接进入默认的启动过程,可加快启动速 度,但仍可用启动热键选择启动方式    BootMenuDefault= 启动菜单使用的默认选项,缺省值为1    BootMenuDelay= 启动菜单按默认方式启动延迟间,缺省值30,单位:秒    BootSafe=0/1  系统是否以安全模式启动,为1时系统直接以安全模式启动    BootWarn=1/0  启动时是否显示警告信息            当系统非正常关机重新启动时,是否提示“应进入安全模式”实际 上安全模式解决问题能力非常有限,真正的系统问题在该模式下是无法解决的,不进也罢    BootConfig=1/0 能否使用单步配置模式,其作用不明    DisableLog=0/1 在“Step-by-stepconfig”时是否创建BOOTLOG.TXT            1:不选择“Logged”时不询问也不创建Bootlog.txt            0:询问是否创建日志文件Bootlog.txt    SystemReg=1/0  系统启动时是否运行WINDOWS9X注册器            1:“Step-by-stepconfig”下询问是否运行注册器             其他模式则自动运行注册器             0:不运行也不询问是否运行WINDOWS9X的注册器             该注册器在整个系统启动前首先运行,但运行与否对系统无明显影 响,其作用不明 LoadTop=1/0   是否将COMMAND.COM、Drvspace.bin、Dblspace.bin等加载到高端内存, 如启动中出现内存地址冲突,可将该值设为0             这类冲突多由CONFIG.SYS、AUTOEXEC.BAT加载的程序造成Autosca n=1/0             非正常关机(如掉电等)再启动时,是否自动执行SCANDISK             (仅在WIN97/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、WIN9X)             压缩硬盘降低了系统整体性能,更增加了数据的危险性             在硬盘容量已不成问题的今天,还是不用压缩为妙             注意,FAT32不支持任何磁盘压缩软件    WinVer=     注明WINDOWS版本正式推出日期 第三部分由以分号“;”开头的数行任意字符组成,在MSDOS.SYS中属于注释行,对系统不起任 何设置作用,主要用于保证MSDOS.SYS文件长度大于1024字节。   MSDOS.SYS提供的参数多数是用于调整系统使用的,对于普通用户来说,常用的主要包括 NetWork前的几个参数。 五、COMMAND.COM   COMMAND.COM是WINDOWS9X中的DOS外壳程序(SHELL),较DOS6.22仅增加了部分内部命令 ,没有更新的东西。   IO.SYS对COMMAND.COM的处理则有了根本改变,当WIN9X在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   WIN9X中的CONFIG.SYS、AUTOEXEC.BAT的作用与DOS的一样,用于装配所有DOS实模式的驱 动程序和应用程序,或者修改IO.SYS的默认配置。其中,CONFIG.SYS主要用于硬件配置,AUT OEXEC.BAT主要用于软件配置,其在启动过程中的使用参见IO.SYS一节。   WIN9X启动后,这两个文件的配置作为全局设置始终保留在系统底层,决定着WIN9X下所 有的DOS、WIN16应用环境。如果没有DOS全局设置,WINDOWS窗口下的DOS应用程序将使用WIN 9X的默认设置,当然也可由用户单独配置。注意,DOS软件需要的PATH、SET等环境设置可在 各自窗口的属性中单独设置;16位的WIN3.X软件需要的PATH、SET等环境设置只能在AUTOEXE C.BAT中设置。   WIN9X新增了不少配置命令,使实模式DOS环境更便于优化,各配置命令参见系统目录\W INDOWS下的CONFIG.TXT说明,这里不再多说。WIN9X通过VXD(虚拟设备驱动)、DLL(动态链接 库)等保护模式驱动程序统一管理和使用系统软、硬件资源,基本上不需要实模式程序支持。 实模式程序主要是为支持一些老设备而保留的。实模式程序的存在使WIN9X必须在保护模式和 实模式之间频繁地转换,大大降低了系统性能,更损害了系统稳定性,所以应尽量避免在启动 时装载实模式程序。   WIN9X对DOS环境的缺省设置能满足大多数DOS软件需要,在完成WIN9X安装后试着删除这 两个文件中的内容非常必要。删除其中的实模式程序,尽量实现WIN9X的保护模式驱动,可使 WIN9X处于高性能、高稳定性的优化运行状态。   没有CONFIG.SYS、AUTOEXEC.BAT的DOS系统几乎一无所能,而没有它们的WIN9X性能也许 更好。在WIN9X中它们主要是为支持原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与1MB之间的ROM地址空间做为断点 等价于在SYSTEM.INI的[386ENH]节中设定:SystemROMBreakPoint=FALSE. :V指定启动时由ROM例程处理硬盘控制器中断 等价于在SYSTEM.INI的[386ENH]节中设定:VirtualHDIRQ=FALSE. :X禁止WINDOWS使用所有高端内存(从A000-FFFF),解决内存冲突问题 等价于在SYSTEM.INI的[386ENH]节中设定:EMMExclude=A000-FFFF. 八、GUI启动   WIN9X的GUI启动过程是非常复杂,更是微软公司的核心秘密,不为外人所知。而对普通 用户而言,完全掌握这个复杂多变的机制也无必要,这里只对整个GUI启动机制做一个大致的 说明。   1、GUI的配置文件   同所有复杂的系统一样,WIN9X主要是根据系统配置文件调用各类程序来组合系统,保证 系统正常运行的。WIN9X的GUI系统配置文件以系统注册表为核心,以各系统目录下的INI文件 为辅助配置。把握住系统配置文件,就掌握了系统的核心。   GUI系统的核心配置文件主要有5个,即:WIN.INI、SYSTEM.INI、SYSTEM.DAT、USER.DAT 和POLICES.DAT。   WIN.INI和SYSTEM.INI据说是为WIN3.X下的WIN16保护模式程序保留的,WIN3.X在这两 个文件中的设置在WIN9X中大部分已移入系统注册表中。WIN9X下WIN32保护模式程序主要通 过系统注册表完成配置,不需要这两个文件的支持。这一做法规范了应用程序的开发和使用, 消除了随意设置INI文件的混乱,便于WIN9X统一管理系统,增加了系统的稳定性。但如果删 除这两个文件,WIN9X系统无法启动,并提示“找不到SYSTEM.INI文件”,这说明WIN9X的启 动还是离不开这两个文件的。   WIN.INI提供了WIN16程序需要的字体设置、文件关联等种种信息,主要完成GUI下相应的 环境配置,对WIN9X应用没有太大影响,如果没有这个文件,WIN9X将自动生成一个最简单的 只有几行配置命令的WIN.INI。  SYSTEM.INI则不同,它是WIN16的系统硬件配置文件,WIN9X又为其增加了一些新设置, 以保证WIN16和WIN32相互协调,使WIN16可以调用VXD驱动程序,这一点在WIN.COM提供的系 统调试参数中已有充分体现。另外GUI的外壳程序(SHELL,即界面程序)、鼠标器、显示器等驱 动程序必须通过SYSTEM.INI设置才能加载使用,这些决定了SYSTEM.INI是绝对不能删除的。这 充分证明了WIN9X是一个WIN16和WIN32的混合系统,也揭示了WIN9X系统先天脆弱的根本原 因。   WIN.INI、SYSTEM.INI中的各项设置可参见《新潮电子精华本1》。   SYSTEM.DAT和USER.DAT即所谓的系统注册表文件,是WIN9X的核心文件,WINDOWS就是通 过它来管理整个系统的。SYSTEM.DAT保存着硬件配置及软件安装信息,USER.DAT保存着与用户 的个人设置有关的信息,前者只能有一个,而后者可以有多个。这两个文件共同作用,包含了 系统的全部信息,在使用注册表编缉软件(如REGEDIT.EXE)时,这两个文件共同被修改,不能 分开。它们的损坏将导致系统彻底瘫痪,无法挽救。不幸的是,系统注册表非常脆弱,缺乏自 我整理和维护机制,当系统运行一段时间后,用户往往只能走上痛苦的系统重建之路。   在WIN95/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,WIN9X没有提供更有效的注册表 维护工具。在WIN98提供了注册表检测软件ScanReg.exe和ScanRegw.exe,这是一个进步,但 它只能处理注册表的物理故障,无法解决结构性问题,其可*性又有多大呢?   博大的注册表完全应该用一本专著来剖析,在《新潮电子精华本1》中也有简单的介绍, 这里就不做更深的解释了。   POLICES.DAT是微软的MSN(MicrosoftNetwork)注册支持文件,该网络国内用户很少,该 文件也很少使用。   尽管没有更直接的资料介绍,但是有充分的理由证明在WIN9X的启动过程中,保存在\WI NDOWS\INF目录下的各种INF文件是WIN9X系统中最有力的支持文件。在启动系统的过程中,W IN9X会适时地调用这些文件,以装载相应的驱动程序。如果没有了这些文件,WIN9X也是无 法启动的。另外,WIN9X的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软件,更主要的是PNPBIOS(即插即用BIOS)规范只提供16位保护模式接口,以PNP为 硬件技术核心的WIN9X必须通过16位模式直接获得BIOS提供的硬件设备信息来配置系统,提高 系统启动性能,否则对硬件的配置必须在实模式下从头开始。   GUI的启动首先加载WIN9X的系统驱动程序,再从PNPBIOS获得硬件设备信息,先后加载 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(这是WIN9X的核心),VWIN32.386完成这一任务后,将控制权还给16 位内核,16位内核再将控制权交给32位内核,开始32位保护模式启动。这时系统加载并初始化 所有32位驱动程序,这个过程与16位模式相同。   最后,运行GUI的外壳程序(该外壳程序由SYSTEM.INI中的[BOOT]节中“SHELL=”设置,默 认是资源管理器),完成GUI启动。 3、GUI启动过程中故障的排除   GUI系统相当复杂,相关的技术资料却极少,这决定了用户不能象在DOS中那样根据启动过 程去排查故障。   WIN9X对GUI的启动过程从未提供详尽的说明,仅在根目录下提供了一份启动日志文件BO OTLOG.TXT。该文件记录了启动过程使用的所有程序模块的加载情况,是解决系统问题的唯一 依据。根据该记录可以全面了解GUI启动过程中发生的种种问题。   面对启动过程中的失败,主要有两个处理方法,一是用完好的源程序覆盖出现问题的程序 ,但其难点在于如何在各类软件包中找到那些完好的源程序,注意,直接调试、修复出现问题 的程序在WIN9X下是难以想象的;一是从启动配置文件(CONFIG.SYS、AUTOEXEC.BAT、WIN.IN I、SYSTEM.INI和注册表)中删除调用有问题模块的命令。后者主要用于解决某软件卸载失败出 现的问题。   在图形模式GUI下解决系统问题时多会受到种种限制,而纯DOS模式不受系统制约,是最后 的系统之门(对于电脑高手来说,DOS仍是永恒的主题)。   WINDOWS系统的复杂性决定了排除那些莫名其妙的故障的难度,若对系统经过几次调整后 仍未解决问题,最保险也是最快捷的办法就是重新安装系统。也许这是微软对用户唯一有用的 建议。   在WINDOWS下重新安装系统,要保证产品的序列号一致,否则系统可能拒绝安装。   九、WIN9X启动顺序小结   本文详尽地讨论了WIN9X的启动过程,复杂的参数和技术分析模糊了其清晰的体系结构, 现在对整个启动过程做一简单的概括,使读者根据启动过程中的现象能够相对准确地判断启动 过程,更好地处理系统启动过程中的问题。   ⑴系统加电启动,依次加载扩展卡(包括显卡等)、主板的BIOS程序(这与所有的操作系统 (如WIN9X、LINUX、UNIX、OS/2等)无关),完成自检过程   ⑵读入硬盘的主引导记录、分区引导记录,自动加载IO.SYS   ⑶IO.SYS读取MSDOS.SYS配置,确定启动方式,根据CONFIG.SYS,进行硬件配置   ⑷IO.SYS根据WIN9X启动要求,自动加载必要的默认驱动程序(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(音量控 制)和WIN98的ScanRegw.exe/autorun。   ⒀当用户完成身份登录后,系统执行HKEY_CURRENT_USER→Software→Microsoft→Windo ws→CurrentVersion下的Run、RunOnce中包含的应用程序   ⒁执行WIN.INI中的LOAD=RUN=加载的应用程序   ⒂执行开始菜单中[启动]组包含的应用程序   十、结语   WIN9X的启动过程终于介绍完了。由于笔者知识水平和眼界的局限,其中还是留下了许多 空白就教于诸位高手。   诚然,这个过程本来是一个相当陈旧的话题,但是多数介绍仅限于局部技巧,且谬传颇多 ,比较系统完整的非常少见,这给广大电脑爱好者带来很大的困惑,这里不自量的献丑,实是 纠正一些流传的误解,使电脑爱好者对WINDOWS9X的启动过程有一个相对完整清晰的把握。
上一篇: windows98启动过程。基础知识了。
下一篇: Windows 9X启动参数揭秘
查看[ Windows 9X 启动全揭秘 ]所有评论
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:
推荐内容
关于我们 服务价格 联系我们 企业网站优化 沈阳网站建设 沈阳维修电脑