|
首先想说的是
这篇文章是两年前写的
并且没有写完
希望有人能继续完善补充下去
PS:我记得还有一篇文章
在TXTSETUP.SIF上和本文相互补充
本文针对的版本,应该是XP SP2
=====================================================
Windows XP 文本模式安装环境概述
作者:Rinrin
Windows XP 的安装是从文本模式(Text-mode)开始的,文本模式安装的引导器是SETUPLDR.BIN,它是
NTLDR的一个变体,比NTLDR要大一些,可能是含有解压缩代码的缘故吧.SETUPLDR.BIN由两部分组成:初始化代码和Setup Loader.
从文件中的文本信息来看,初始化代码主要完成进入保护模式的任务.ntdetect.com由Setup Loader执行,用来检测硬件,主要检测以下内容:
Computer ID
总线/适配器 类型
SCSI适配器
视频卡
键盘
串行口
并行口
软驱
鼠标/指向设备
浮点协处理器
这些信息以后将被存储到HKLM\Hardware\Description中.
由于Setup Loader含有解压缩代码,所以它加载的各种文件(包括Txtsetup.sif等文件)均可以被压缩为
MS-Cabinet格式.
Setup Loader随后装载Txtsetup.sif文件.这是个文本文件,用来指导文本模式的安装.该文件内容说明如下:
[Version] ;版本信息
signature="$Windows NT$"
ClassGUID={00000000-0000-0000-0000-000000000000}
[SourceDiskNames] ;定义文件路径的标识号,文本模式引导时使用
_x = %cdname%,%cdtagfile%,,"" ;标识号=安装盘名,标志文件,?,文件所在路径
......
[SourceDiskNames.x86]
[SourceDiskNames.amd64]
[SourceDiskNames.ia64] ;对于不同的处理器平台,定义文件路径的标识号
[WinntDirectories] ;定义安装目录的数字标识
1 = "\"
2 = system32
......
[SourceDisksFiles]
bootvid.dll = 1,,,,,,3_,2,0,0,,1,2
;文件名=文件来源([SourceDiskNames.xxx]中定义),,,,,,文件的来源2([SourceDiskNames]中定
;义,文件复制目的地([WinntDirectories]中定义),?,?,重命名选项,?,?
......
[SourceDisksFiles.ia64]
[SourceDisksFiles.amd64]
[SourceDisksFiles.x86]
[Strings] ;定义字符串
cdname = "Windows XP Professional CD-ROM"
......
[SetupData]
SetupSourcePath = "\"
MajorVersion = 5
MinorVersion = 1
DefaultPath=\WINDOWS
OsLoadOptions = "/fastdetect /nodebug"
ForceScsi = 1
ForceDiskClass = 1
ForceCDRom = 1
Architecture = i386
DriverCabName=driver.cab,sp1.cab
ProductType = 0
LoadIdentifier = %wks_id%
LoadIdentifierCancel = %cancel_id%
LoadIdentifierWin9x = %9x_id%
BaseVideoLoadId = %wks_id_vga%
RequiredMemory = 67108864
Pagefile = 115,250
;--------------------------------------------------
[Files.DeleteOnUpgrade]
[Directories.DeleteOnUpgrade]
[Files.BackupOnOverwrite]
[Files.BackupOnUpgrade]
[Files.UpgradeWin31] ;OS升级时进行的操作
;--------------------------------------------------
[DiskDrivers.Load]
[FileSystems.Load]
[HardwareIdsDatabase]
[Map.Computer]
[bootvid]
[hal]
[Hal.Load]
[ntdetect]
[Map.Display]
[Display.Load]
[Map.Mouse]
[Map.Keyboard]
[Map.PROM]
[PROM.Version]
[Map.SCSI]
[SCSI.Load]
[BootBusExtenders.Load]
[BusExtenders.Load]
[InputDevicesSupport.Load]
[Keyboard.Load]
;[HardwareIdsDatabase] 设备识别,没有此项设备无法工作
;[xxxx.Load] 加载驱动程序
;[Map.xxxx] 设备映射
;--------------------------------------------------
[files.pcmcia]
[files.pci]
[files.pciide]
[files.intelide]
[files.viaide]
[files.cmdide]
[files.toside]
[files.aliide]
[files.acpi]
[files.isapnp]
[files.ohci1394]
[files.sbp2port]
[files.lbrtfdc]
[files.video]
[files.vga]
[files.i8042]
[files.sermouse]
[files.inport]
[files.hidusb]
[files.mouhid]
[files.usbohci]
[files.usbehci]
[files.usbuhci]
[files.usbhub]
[files.usbccgp]
[files.kbdhid]
[files.usbstor]
[SystemPartitionFiles]
[FileFlags]
[ScsiClass.Load]
[FloppyDrivers.Load]
[CdRomDrivers.Load]
[MouseDrivers.Load]
[SpecialFiles]
[files.none]
[Files.KeyboardLayout]
[KeyboardLayoutId]
[Files.RemoteBoot]
;[files.xxxx] 驱动程序对应的文件
;--------------------------------------------------
[HiveInfs.Fresh]
[HiveInfs.Fresh.RemoteBoot]
[HiveInfs.Upgrade]
[HiveInfs.Upgrade]
[NetServicesToDisable]
[SetupKeysToMigrate]
[RootDevicesToDelete.clean]
[RootDevicesToDelete]
[RootDeviceClassesToDelete]
[RootDeviceClassesToDelete.nt4]
;--------------------------------------------------
[ACPIOptions]
ACPIEnable = 2
;ACPIEnable=0 安装时不启用ACPI
;ACPIEnable=1 如果存在ACPI Bios,就启用ACPI
;ACPIEnable=2 根据ACPIBiosDate和GoodACPIBios决定是否启用ACPI
ACPIBiosDate = 01,01,1999 ;该日期以后的Bios假定为支持Acpi,之前的要参考[GoodACPIBios]
[NWACL] ;NW(New Windows?) Acpi Compatibility List
[ABitBP6]...[ViaVP3A]
[GoodACPIBios] ;与Windows兼容的ACPI Bios
[AcerAspire3100]...[VobisHighscreen]
;--------------------------------------------------
[BiosInfo]
[nls]
AnsiCodepage = c_936.nls,936
OemCodepage = c_936.nls,936
MacCodepage = c_10008.nls,10008
UnicodeCasetable = l_intl.nls,0804
OemHalFont = vgaoem.fon
DefaultLayout = 00000804
[Keyboard]
[FontListE]
["Keyboard Layout"]
[Files.KeyboardLayout]
;--------------------------------------------------
[DiskDriverMap]
[ScsiClass]
[FileSystems]
[FloppyDrivers]
[CdRomDrivers]
[MouseDrivers]
[FontListE]
[DiskDrivers]
[InputDevicesSupport]
[SCSI]
[BootBusExtenders]
[BusExtenders]
[Computer]
[Display]
[Mouse]
;定义加载时显示的字符串
;--------------------------------------------------
[DiskSpaceRequirements]
接下来的步骤是:
加载Biosinfo.inf,该文件存储了硬件识别数据,用来决定是否提供ACPI或Apm的支持.
在安装画面的底部显示 Press F6 if you need to install a third party SCSI or RAID driver...
在安装画面的底部显示 Press F2 to run Automated System Recovery(ASR)...
在这个阶段如果按下F5的话,可以在以后选择不同的HAL
查找TagFile,一般是disk101,Win51ip之类的文件.如果不存在,则要求插入相应的磁盘或光盘.
加载Ntkrnlmp.exe(Windows Executive)
如果之前按下F5的话,这时可以选择不同的HAL,否则根据ACPI,APIC及多处理器的情况自动加载不同的HAL
还可以用厂商提供的HAL.
加载KDCOM.DLL(Kernel Debugger).
加载Bootvid.dll(VGA Boot Driver),如果此文件不存在,Setup Loader提示ntkrnlmp.exe不能被加载.
加载Setupreg.hiv注册表文件.主要含有ControlSet001\Control,ControlSet001\Services两项.
加载OemHalFont,一般是Terminal字体,文件名由txtsetup.sif中[nls]小节的OemHalFont指定,一般为
vgaoem.fon.
加载nls文件,一般为c_xxx.nls和l_intl.nls.
加载setupdd.sys(Windows NT Setup (kernel mode portion of character-based phase)).如果是中文
版,还要加载Spddlang.sys(Windows NT Setup kernel mode lanaguage helper for FarEast).
加载BootBusExtenders,有
pci.sys(NT Plug and Play PCI Enumerator)
acpi.sys(ACPI Driver for NT)
wmilib.sys(WMI support library Dll),该文件丢失时,会提示acpi.sys无法找到,不知道算不算bug?
isapnp.sys(PNP ISA Bus Driver)
acpiec.sys(ACPI Embedded Controller Driver)
oprghdlr.sys(ACPI Operation Registration Driver),或从字面上看是OPerationReGionHanDLeR.
ohci1394.sys(1394 OpenHCI Port Driver)
1394bus.sys(1394 Bus Device Driver)
加载BusExtenders,有
pcmcia.sys(PCMCIA Bus Driver)
pciide.sys(Generic PCI IDE Bus Driver)
pciidex.sys(PCI IDE Bus Driver Extension)
intelide.sys(Intel PCI IDE Driver)
viaide.sys(Generic PCI IDE Bus Driver)
cmdide.sys(CMD PCI IDE Bus Driver)
toside.sys(Toshiba PCI IDE Controller)
aliide.sys(ALi mini IDE Driver)
mountmgr.sys(Mount Manager)
ftdisk.sys(Fault Tolerant Disk Driver)
partmgr.sys(Partition Manager)
fdc.sys(Floppy Disk Controller Driver)
dmload.sys(NT Disk Manager Startup Driver)
dmio.sys(NT Disk Manager I/O Driver)
sbp2port.sys(SBP-2 Protocol Driver)
lbrtfdc.sys(Toshiba Libretto floppy controller)
加载InputDeviceSupport,有
hidclass.sys(Hid Class Library)
hidparse.sys(Hid Parsing Library)
usbd.sys(Universal Serial Bus Driver)
usbport.sys(USB 1.1 & 2.0 Port Driver)
usbehci.sys(EHCI eUSB Miniport Driver)
usbohci.sys(OHCI USB Miniport Driver)
usbuhci.sys(UHCI USB Miniport Driver)
usbhub.sys(Default Hub Driver for USB)
usbccgp.sys(USB Common Class Generic Parent Driver)
hidusb.sys(USB Miniport Driver for Input Devices)
serial.sys(Serial Device Driver)
serenum.sys(Serial Port Enumerator)
usbstor.sys(USB Mass Storage Class Driver)
加载Display Driver,有
vga.sys(VGA/Super VGA Video Driver)
videoprt.sys(Video Port Driver)
加载Keyboard Driver,有
i8042prt.sys(i8042 Port Driver)
kbdhid.sys(HID Mouse Filter Driver)
kbdclass.sys(Keyboard Class Driver)
加载SCSI Driver,如果之前按下F6键,现在可以加载其他的驱动程序,不光是SCSI,也可以是CDROM或RAID控
制器,甚至某些修改登录密码的工具(ntaccess,winkey)也是此时加载一个特殊的驱动程序,在以后的初始化时
刻获得控制权的.默认加载的驱动程序很多,最先加载的是下面一个:
scsiport.sys(SCSI Port Driver)
其余的都是独立的驱动程序,其中atapi.sys(IDE/ATAPI Port Driver)是ide-cd驱动器的驱动程序,其余的有
cpqarray.sys,aha154x.sys,sparrow.sys,symc810.sys,aic78xx.sys,i2omp.sys,dac960nt.sys,
ql10wnt.sys,amsint.sys,asc.sys,asc3550.sys,mraid35x.sys,ini910u.sys,ql1240.sys,aic78u2.sys,
symc8xx.sys,sym_hi.sys,sym_u3.sys,asc3350p.sys,abp480n5.sys,cd20xrnt.sys,ultra.sys,
adpu160m.sys,dpti2o.sys,ql1080.sys,ql1280.sys,ql12160.sys,perc2.sys,hpn.sys,cbidf2k.sys,
dac2w2k.sys
接下来加载Disk Driver:dmboot.sys(NT Disk Manager Startup Driver)
加载Floppy Driver:flpydisk.sys(Floppy Driver)
加载SCSI class Driver,有
classpnp.sys(SCSI Class System Dll)
cdrom.sys(SCSI CD-ROM Driver)
disk.sys(PnP Disk Driver)
sfloppy.sys(SCSI Floppy Driver)
ramdisk.sys(RAM Disk Driver)
加载FileSystem Driver,有
ksecdd.sys(Kernel Security Support Provider Interface)
fastfat.sys(Fast FAT File System Driver)
ntfs.sys(NT File System Driver)
最后加载CDRom Driver:cdfs.sys(CD-ROM File System Driver) |
|