Windows 9X 启动全揭秘
自WIN 95发行以来,Microsoft公司坚持对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,这表明Microsoft的系统发展战略开始转向因特网。OSR2.
X有三种版本,即OSR2.0、OSR2.1和OSR2.5,其中OSR2.1支持USB和AGP显卡,OSR2.5则提供了
IE4.0。由于FAT 32使OSR2.X与WIN 95和DOS不兼容,Microsoft只将其做为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开始,Microsoft公司尝试限制双重启动功能,使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启动时是否显示警告信息
当系统非正常关机重新启动时,是否提示“应进入安全模式” 实际