无忧启动论坛

标题: Windows XP 文本模式安装环境概述 [打印本页]

作者: Rinrin    时间: 2006-7-19 17:08
标题: Windows XP 文本模式安装环境概述
首先想说的是
这篇文章是两年前写的
并且没有写完
希望有人能继续完善补充下去
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)
作者: 老毛桃    时间: 2006-7-19 23:23
不错!学习一下!
作者: Null    时间: 2006-7-20 00:43
厄,那该如何精简这个文件?
据我测试,启动速度与 [SourceDisksFiles] 段的大小没多大关系...
至于相面的硬件检测,该如何简化?一直很头痛...
作者: 老毛桃    时间: 2006-7-20 08:53
原帖由 Null 于 2006-7-20 00:43 发表
厄,那该如何精简这个文件?
据我测试,启动速度与  段的大小没多大关系...
至于相面的硬件检测,该如何简化?一直很头痛...

看样子,精简硬件检测部分的话,可能精简过的 PE 只能用在一部分的机器上。可能会造成在其他机器上无法识别一些已知硬件的问题。
作者: Rinrin    时间: 2006-7-20 09:11
911cd上的人给你贴了一个
一般来说
只需要把SCSI驱动全部去除就可以了
作者: strongchen    时间: 2006-7-20 09:51
原帖由 Rinrin 于 2006-7-20 09:11 AM 发表
911cd上的人给你贴了一个
一般来说
只需要把SCSI驱动全部去除就可以了


那又scsi设备怎么办?
作者: sdb001    时间: 2006-7-20 22:39
删了就没什么意义了吧,个人电脑坏了重装系统就可以了,哪能用得上这东西,哈哈!服务器怎么也得有吧!期待答案!
作者: Rinrin    时间: 2006-7-21 09:11
原帖由 strongchen 于 2006-7-20 09:51 AM 发表


那又scsi设备怎么办?

把厂商提供的驱动和txtsetup.oem整合进去就可以了
作者: lasti    时间: 2006-8-30 14:20
确实很精华,我已经收藏了来研究下,呵呵,顺便帮你顶上去!!
作者: cgfans999    时间: 2006-11-15 18:28
想不到你两件前就写了,相比我真是~~~~哎~~~ 惭愧啊
作者: srlmm    时间: 2006-11-15 21:26
很复杂,要慢慢研究
作者: laixf520    时间: 2006-11-16 18:20
确实是精华,收藏了
作者: laixf520    时间: 2006-11-16 18:21
确实是精华,收藏了
作者: andylau007    时间: 2006-11-29 17:54
嘿嘿,看不大懂,还没有入门
作者: 老顽童    时间: 2006-12-9 11:49
不错!支持一个~
作者: todaytech    时间: 2007-3-11 18:41
精华,支持了,不错
作者: pp8988    时间: 2007-3-16 11:02
一看到一长串的东东就头昏,以后慢慢研究!
作者: tintinbt    时间: 2008-4-12 23:32
强人啊, 收了, 很有研究价值
作者: pnjinhe    时间: 2008-6-11 16:22
我已经收藏了,谢谢。
作者: winxp168    时间: 2008-9-13 10:25
超强的LZ,谢谢收藏了
作者: lisong    时间: 2008-12-11 21:11
收藏学习!!!!!!
作者: ISO    时间: 2009-6-20 21:40
这个文章确实不错,百度搜索都很难找到
作者: laoduo123    时间: 2013-2-19 11:49
这个文章确实不错,百度搜索都很难找到.....
作者: feifanll    时间: 2013-2-20 09:53
精彩,受教了,收藏。
作者: 2013_622569    时间: 2013-4-28 22:51
收藏学习!!!!!!




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3