银山路330号:yylei

来源:百度文库 编辑:九乡新闻网 时间:2024/03/29 07:39:53
WINPE引导过程 (2009-04-09 21:44) 分类: 其他

关于光盘启动后加载光盘上winpe.iso文件,进入一个虚拟内存盘运行的解说

一、windows xp 安装盘启动过程

原于最广泛使用的 xp 系统安装盘,在此有必要简要说明其启动过程。

光盘引导信息boot.bin (被写入光盘引导轨道中)引导光盘启动后,调用光盘:\i386\setupldr.bin 和 ntdetect.com 并根据winnt.sif文本配置文件侦测安装文件并将系统安装到硬盘。

二、WIN_PE_LOADER 光盘启动过程

(一) WIN_PE_LOADER 文件列表

PE毕竟是MS 的附属产品,包含文件如下(分别对应XP启动盘中的那几个文件):

1.PEBOOT.BIN;2.SETUPLDR.BIN(PELDR);3.NTDETECT.COM;4.WINNT.SIF(WINNT.XPE) 必须放在根目录;

另外还要附带WINPE的 ISO文件 WINPE.ISO,此文件被CAB压缩后仍然可以被PELDR调用。

具体启动过程是:PEBOOT.BIN在制作光盘时被写入光盘引导轨道,光盘启动后调用 光盘:\I386\SETUPLDR.BIN 找到根目录下的 WINNT.SIF ,根据WINNT.SIF 文本中的配置信息 找到 WINPE.ISO 并将WINPE.ISO载入一个内存虚拟盘X:.在此过程中,要求 WINNT.SIF(WINNT.XPE)必须放在根目录。SETUPLDR.BIN(PELDR)和NTDETECT.COM 必须在同一个目录中,如果要将此两个文件放在wxpe目录中,必须同时修改 peboot.bin 和 setupldr.bin 的内容,通过ASCII编辑器将其中的 i386 改成 wxpe;同样地如果需要修改 winnt.sif(winnt.xpe)文件名也要通过这个办法修改setupldr.bin的内容。

(二)WINNT.SIF(WINNT.XPE)的文本内容举例如下:

[SetupData]

BootDevice="ramdisk(0)"

BootPath="\WXPE\SYSTEM32\"

OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=winpe\WinPE.IS_"

其中第3 行表示 winPE.iso被启动载入后 RAMDISK.SYS 等文件在WINPE.ISO中的位置;

第4 行表示WINPE.ISO 文件在光盘/硬盘的调用位置,可以通过类似 ntldr 中boot.ini的硬盘分区表示方法跨分区调用,

比如:
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=multi(0)disk(0)rdisk(0)partition(1)\winpe\winpe.is_"。

(三)其他说明

一些 PE 文档中还提到 XPEMENU.INI(PEinstall.log) 文件。这是必须存放在根目录下的pe调用文件,用来描述pe外置程序的位置,以老毛桃pe为例外置程序必须放在某个盘的根目录,如果pe外置程序与winpe.iso不在同一个分区中,就必须通过 xpemenu.ini(peinstall.log)进行指引。但,在光盘中,就不必有这个文件的顾虑了,因为所有文件都要放到一个盘—光盘中。

三、通过 c:盘(hd0,0) NTLDR(NT/2K/XP/2K03) 调用 winpe.iso 的方法

(一)这里需要 使用第三方 引导器 grub4dos 中的几个文件:

Grldr(中文版) menu.lst(启动菜单配置文件) c:\

fonts(中文字体) c:\winpe

GRUB 是一个非常不错的软件,它可以被多个系统载入,同时可以引导多种格式的启动文件。基本上可以满足目前制作系统引导/光盘引导方面的各种需求。

(二)peldr 文件

Setupldr.bin(peldr) c:\winpe

winnt.sif(winnt.xpe) c:\

(三)winpe.iso及其附属文件

Winpe.iso c:\winpe

Peinstall.log(xpemenu.ini) c:\

(四)有关NTLDR

NTLDR 是NT/2K/XP/2K03 系统安装时直接安装到系统盘上的MS引导器,安装过程中系统盘BOOT区被存储了NTLDR引导调用信息,就如同光盘引导轨道中存储CDBOOT.BIN 内容一样。当硬盘启动后最先调用的就是硬盘的BOOT区信息,然后通过这段引导代码引导电脑找到 C:\NTLDR 再进一步启动到 NT系列系统。

NTLDR 具体包括如下文件,需要存放在系统引导盘根目录

NTLDR NTDETECT.COM BOOT.INI BOOTFONT.BIN

其中BOOT.INI 是NTLDR引导器的文本配置文件,用于通过NTLDR引导NT/2K/XP/2K03系统。

NTLDR 也可以通过调用 BOOT区信息文件或其他可挂接的引导器引导进入另一个系统。

(五)配置文件的内容:

1.Winnt.sif(winnt.xpe)内容如下:

[SetupData]

BootDevice="ramdisk(0)"

BootPath="\WXPE\SYSTEM32\"

OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=winpe\WinPE.IS_"

2.Menu.lst 内容如下:

color black/cyan yellow/cyan

timeout 10

default 调用 WINXPE iso

fontfile (hd0,0)/winpe/fonts

title 搜索硬盘 NTLDR 启动 MS_WINDOWS NT/2K/XP/2K03

find --set-root /ntldr

chainloader /ntldr

savedefault --wait=2

title 调用 WINXPE iso

root (hd0,0)

chainloader (hd0,0)/winpe/setupldr.bin

savedefault --wait=2

title 重新启动

savedefault --wait=2

reboot

title 关闭电脑

Halt

savedefault --wait=2

3.xpemenu.ini(peinstall.log) 文件名大概由 winpe.iso 中的配置决定

内容如下:

WinPE镜像文件=WinPE.IS_

WinPE外挂位置=c:

WinPE安装日期=2007-11-14 星期三
9:01:32.17

4.
Boot.ini文件中添加如下一行内容:

c:\grldr="Grub Loader for WINPE_ISO"

四、通过 c:盘(hd0,0) MSDOS_IO.SYS 调用 winpe.iso 的方法

(一)这里需要 使用第三方 引导器 grub4dos 中的几个文件:

Grldr.exe(中文版)、menu.lst(启动菜单配置文件)、fonts(中文字体)
将这三个文件放入c:\grub

(二)peldr 文件

Setupldr.bin(peldr) c:\winpe

winnt.sif(winnt.xpe) c:\

(三)winpe.iso及其附属文件

Winpe.iso c:\winpe

Peinstall.log(xpemenu.ini) c:\

(四)有关NTLDR

或许是因为winpe毕竟是 nt 级别以后的产品,所以其在硬盘上引导启动的时候需要根目录存在ntldr的如下两个文件

NTLDR
TDETECT.COM

(五)有关 msdos的 io.sys

Msdos 是微软公司整合改良出品的dos系统,其核心引导文件是 c:\io.sys ,还有一个命令解析程序文件 C:\COMMAND.COM 和一个中心配置文件 C:\MSDOS.SYS。 其启动配置文件包括 c:\config.sys 和 C:\autoexec.bat .曾经盛行一时的WIN9X系列其实也是使用的此系统作为底层操作系统。MSDOS系统也是通过在安装MSDOS的时候向硬盘引导区(BOOT区)写入一段代码,然后在系统启动时引导电脑找到C:\IO.SYS来启动MSDOS的。

我们这里通过配置Config.sys 文件实现通过 msdos 启动 grub4dos

(六)配置文件的内容:

1.Winnt.sif(winnt.xpe)内容如下:

[SetupData]

BootDevice="ramdisk(0)"

BootPath="\WXPE\SYSTEM32\"

OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=winpe\WinPE.IS_"

2.Menu.lst 内容如下:

color black/cyan yellow/cyan

timeout 10

default 0

fontfile (hd0,0)/winpe/fonts

title 正常进入MSDOS

quit

savedefault --wait=2

title 调用 WINXPE iso

root (hd0,0)

chainloader (hd0,0)/winpe/setupldr.bin

savedefault --wait=2

title 重新启动

savedefault --wait=2

reboot

title 关闭电脑

Halt

savedefault --wait=2

3.xpemenu.ini(peinstall.log) 文件名大概由 winpe.iso 中的配置决定

内容如下:

WinPE镜像文件=WinPE.IS_

WinPE外挂位置=c:

WinPE安装日期=2007-11-14 星期三
9:01:32.17

5.
Config.sys文件中确保如下内容在最前面一行:

DEVICE=C:\GRUB\GRUB.EXE --CONFIG-FILE=c:\grub\MENU.LST


五、在U盘中运行 WINPE.ISO

其实,说到这里,通过U盘启动WINPE应该非常简单了,只要将U盘格式化成HDD格式,然后导入 NTLDR引导器或者MSDOS核心系统,再根据前面的第四节或者第五节的内容操作即可实现。

当然还要一些硬件的支持,比如:BIOS中要支持HDD启动、U盘要支持制作成启动盘等等。


以上提到的 grub4dos 是 0.4.3 版本,ntldr 是xp版本,msdos是win98/7.10版本。

1、WINPE.INI调用过程
WINPE.INI由PE系统的SYSTEM32\PECONFIG.INI指定:如:
进程延时=10
外部配置文件=外置程序\WinPE.INI

2、编辑PE注册表
运行regedit.exe,光标定位到HKEY_USERS或HKEY_LOCAL_MACHINE项,然后“文件-加载配置单元-选择注册表文件setupreg.hiv-随便起个名字如PE-修改-光标定位PE项-文件-卸载配制单元”。

3、menu.lst中磁盘分区的表示方法
hdx,y
x代表磁盘数,从0开始
y代表分区数,从0开始,主分区用了0、1、2、3,所以逻辑分区是从4开始的

4、PELDR跨分区加载文件
/rdpath=multi(0)disk(0)rdisk(0)partition(2)\XPE.IMG

5、grubinst_gui的用法
1、下载grubinst
2、双击grubinst_gui.exe
3、在"磁盘"右面的列表中选择需要安装Grub4Dos的硬盘/软盘,如果你有多个磁盘(包括USB移动硬盘),请留意[]中显示的磁盘大小,以便选择正确的磁盘。
4、若需要安装到分区,可点击"分区列表"右面的"刷新"按钮,然后从下拉列表中选择需要的分区(支持FAT12/FAT16/FAT32/EXT2/EXT3)。若需要安装到MBR,这一步可省略。
5、若想以后能恢复原来的MBR/BS,则在"保存文件"中输入用于保存的文件名字。
6、点"安装",出现命令窗口,如果看到"The MBR/BS has been successfully installer", 则说明安装成功。
当然,以上步骤只是安装启动代码,要能正常启动Grub4Dos,还需要以下的步骤:
7、下载最新版的Grub4Dos。
8、在压缩包中找到grldr,把它放到FAT16/FAT32分区的根目录中。
9、编辑menu.lst文件(应该放在和GRLDR一样的目录里),以配置启动菜单。
若没有FAT16/FAT32分区,则不能把Grub4Dos安装到MBR/BS,而只能利用NT的启动管理器启动Grub4Dos:
1、下载Grub4Dos,把GRLDR解压到系统盘的根目录里(C:\)
2、编辑C:\boot.ini(此文件是隐藏的),在文件的最后加上 C:\GRLDR="Load Grub4Dos"
3、编辑C:\menu.lst文件,以配置启动菜单。
4、下次启动Windows时,会增加"Load Grub4Dos"一项,选择它便能进入Grub4Dos

6、PE引导文件
AVLDR.PE PELDR WINNT.SIF这三个文件是必须的,跟PE镜像一起放入C盘再改下boot.ini文件后重启就能看到你要的PE系统了,下面是它们的作用及需要修改的内容:
①AVLDR.PE是计算机启动时载入的文件,文件中有1条数据为PELDR的文件名。
②PELDR是PE启动载入程序,文件中有7条数据为PE的系统目录名,要根据PE镜像的不同而更改,如I386和WXPE,修改注意区分大小写;还有9条数据为WINNT.SIF的文件名。
③WINNT.SIF是引导配置文件,可用记事本打开,内容如下:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\系统目录名\SYSTEM32\"
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=PE镜像文件名"
例如:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=WinPE.IS_"
④把这3个文件和PE镜像文件都拷到C盘后,记得在boot.ini文件最后一行加上如下内容:
C:\AVLDR.PE="启动菜单显示名称随便改"
修改注意事项:这3个文件名都可随便更改,AVLDR.PE改名后到④里更新一下,PELDR改名后到①里更新,WINNT.SIF改名后到②里更新。

7、改变X盘空间大小
提取pecmd.ini文件,将开头的:PLH值改大一点,再放回ISO文件中。
其中:
P ——表示占内存的百分比
L ——表示X盘的最小值
H ——表示X盘的最大值,单位Mb

8、NTBOOT的用法
nt52为写入2000、XP、2003等老的NT引导,启动后引导ntldr,格式为bootsect /nt52 X:(X为你要写入NT引导的在WINDOWS 下的盘符)
nt60为写入VISTA引导,启动后引导bootmgr,格式为bootsect /nt60 X:(X为你要写入NT引导的在WINDOWS 下的盘符)


9、不设置bois也可以从cdrom启动电脑
把附件中的文件解压到启动分区的根目录 如 C:\
在BOOT.INI添加一行 c:\bootsect.cdr="从光驱启动


10、menu.lst中的菜单解释
title Boot From DOS Toolkit----定义菜单名称
#kernel (cd)/BOOT/GRUB/MEMDISK.GZ c=60 h=8 s=36 floppy----指定memdisk内核(现在基本上很少有人用了,所以已经将该命令注释掉,可以直接将该行删除)
#initrd (cd)/BOOT/DOS98.IMG c=60 h=8 s=36 floppy---- (memdisk引导img镜像功能,对于大于2.88M的非标准镜像,必须指定CHS参数,这就是memdisk被藐视的原因,因为grub4dos自带的map --mem就不需要CHS参数,比较方便, 这一行也是被注释掉了的,无用)
map --mem (cd)/BOOT/DOS98.IMG (fd0) ---- (grub4dos自带的仿真功能,将dos98.img仿真成软盘0)
map (fd0) (fd1)---- (将软盘0仿真成软盘1, 这是为了当系统存在物理软驱,或者U盘以zip方式启动后, 可以访问物理软驱和U盘, 以盘符B:来访问)
map --floppies=2---- (定义仿真磁盘数)
map --hook---- (使仿真生效)
chainloader (fd0)+1---- (从软驱0(其实是img仿真的,非物理软驱0)的第一扇区启动)
rootnoverify (fd0)---- (设置根为软驱0)
boot---- (启动系统)
启动基于DOS的镜像都是上面的步骤
因为IMG是软盘镜像,所以仿真成FD0
如果是基于硬盘的镜像,像mini win98的img
则需要将其仿真成HD0

11、PE中加载微软五笔输入法

如何把输入法添加进去PE呢?以微软五笔86为例,仔细分析了一下,它共需要winwb86.IME、winwb86.MB和输入法指示器internat.exe(借用2000的),把这些文件放到system32里面,然后把五笔的注册表信息加进去,最后启动internat.exe,为此编写了一个批处理来完成(这里先假设3个文件已经手工加进去了)。
reg add HKLM\SYSTEM\ControlSet001\Control\Keyboard Layouts\E0100804
reg add HKLM\SYSTEM\ControlSet001\Control\Keyboard Layouts\E0100804 /v IME file /t REG_SZ /d winwb86.ime
reg add HKLM\SYSTEM\ControlSet001\Control\Keyboard Layouts\E0100804 /v Layout file /t REG_SZ /d kbdus.dll
reg add HKLM\SYSTEM\ControlSet001\Control\Keyboard Layouts\E0100804 /v Layout Text /t REG_SZ /d 王码五笔型输入法86版
%systemroot%\system32\internat.exe

12、grub4dos引导PE的过程

grub4dos>setupldr.bin>ntdetect.com
>winnt.sif>winpe.is_
setupldr.bin中定义了ntdetect.com和winnt.sif的位置、名称等。例如毛桃的ntdetect.com位置被定义为/ntdetect.com;/wxpe/ntdetect.com,在定义的位置中,任意一个位置能找到ntdetect.com就可以正常执行。所以,如果直接使用maotao的setupldr.bin,可以把NTDETECT.COM放在根目录,也可以放在wxpe目录,当然,如果你想放在别的位置,自己改一下就可以。同样,winnt.sif也是可以改位置和路径的,毛桃的被改成了WINNT.XPE,位置仍然是磁盘根目录,注意如果要改到别的目录,目录名不要太长,目录+文件名总共字符长度和winnt.sif所占字符长度正好相等即可。例如WINNT.SIF改成WINNT.XPE或者改成BOOT\PE.X,都可以。然后,winnt.sif中定义了RAMDISK的启动方式, 也定义了映象的路径,例如:
/rdpath=WINPE.IS_
或者是
/rdpath=BOOT\WINPE.IS_
所以SETUPLDR.BIN的位置和名称是灵活的,可以随便放置、随便改名。只要grub4dos的配置菜单中chainloader语句指定了这个位置即可。
例如:chainloader (hd0,4)/boot/ldr/peldr
其中:peldr就是由setupldr.bin改名而来
放置在第一个逻辑分区的boot\ldr文件夹下
其他几个文件的路径和名称都互相引用
NTDETECT.COM的名称和路径受setupldr.bin控制
WINNT.SIF的名称和路径受setupldr.bin控制
winpe.is_的名称和路径受winnt.sif控制

13、WIM外置程序调用过程
主要是在这个WIM外置文件的相同目录中放一个INI文件,内部的PECMD.INI文件通过以下命令来加载这个INI文件:
Load \WIM外置程序\OP.INI
再在OP.INI文件中通过MOUN命令来挂上WIM:
MOUN %CurDrv%\WIM外置程序\PROGRAMS.WIM,%ProgramFiles%,1

14、GRUB怎样做到从光盘启动
1. 把“ISOGRUB.BIN”文件放到光盘的“EZBOOT”目录中。
2. 把“STAGE2”这个文件放到光盘的根目录。
3. 然后将Grub程序文件、IMG文件和ZIP文件按目录放到光盘中。
4. 然后用“EZBOOT”调用“ISOGRUB.BIN”启动就可以。


15、EZBOOT怎么调用GRUB
在“菜单条”标签的执行命令栏中输入:bcdw 绝对路径\GRLDR

16、编辑WINPE.IS_文件
把WINPE.IS_解压成WINPE.ISO文件,用ultraiso虚拟光驱加载并添加东西后,再用mkmaxcab文件把它压缩成cab文件,最后改名为IS_文件。

17、OP.WIM修改方法
一、用WIMTOOL解开OP.WIM到一个目录如d:\wim,修改文件到完成,用WIMTOOL打包d:\wim为OP.WIM文件。
二、改OP.WIM文件属性为可写,用WIMTOOL或WIMNT可写挂载,修改文件到完成,卸载OP.WIM文件,提示是否写入时,选择“是”(这种修改OP.WIM,文件大小只增不减)。
三、改OP.WIM文件属性为可写,用WIMTOOL或WIMNT可写挂载,修改文件到完成,把挂载的目录用WIMTOOL或 WIMNT打包为OP.WIM文件。

18、PE的硬盘引导文件
AVLDR.PE PELDR WINNT.SIF
这三个文件是必须的,跟PE镜像文件一起复制到C盘再改boot.ini文件后重启就能看到你要的PE系统
下面是它们的作用:
①AVLDR.PE是计算机启动时载入的文件,文件中有1条数据为PELDR的文件名。
②PELDR是PE启动载入程序,文件中有7条数据为PE的系统目录名,要根据PE镜像的不同而更改,如I386 WXPE,修改注意区分大小写;还有9条数据为WINNT.SIF的文件名。
③WINNT.SIF是引导配置文件,可用记事本打开,内容如下:
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=WinPE.IS_"
④把这3个文件和PE镜像文件都拷到C盘后,记得在boot.ini文件最后一行加上如下内容:
C:\AVLDR.PE="WinPE"

19、修改boot.ini产生彩色的启动菜单

C盘根目录下的boot.ini(隐藏文件)可以使用ANSI控制码来控制启动菜单显示出彩色。您可以根据以下短短的代码来为自己设计一个彩色的Windows启动菜单。这也有助于让您理解ANSI控制码及其转义,当然彩色的菜单也非常具有个性。
  C盘根目录下的boot.ini(隐藏文件)可以使用ansi控制码来控制启动菜单显示出彩色,例如下面的boot.ini:
  CODE:  --------------------------------------------------------------------------------
timeout=30
  default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
  [operating systems]
  multi(0)disk(0)rdisk(0)partition(2)\WINDOWS=" [1;32mMicrosoft [1;34mWindows [1;33mXP
Professional" /NOEXECUTE=OPTIN /FASTDETECT
  c:\Avldrxp.bin=" [1;36mAvlgo - PELDR" /noguiboot
  multi(0)disk(0)rdisk(0)partition(3)\WINDOWS=" [1;31mMicrosoft [1;33mWindmows [1;35mSermver 2003" /noexecute=optout /fastdetect
  c:\1.bin=" [1;37mMS-DOS"
  --------------------------------------------------------------------------------
ansi控制码:
  箭头+“ [”声明了转义序列的开始
  后面的 “1 ”定义了默认的字体宽度。对于文本属性来说,这些值是有意义的:0、1、22、4、24、5、25、7、27, 分别表示:默认值、粗体、非粗体、下划线、非下划线、闪烁、非闪烁、 反显、非反显。
  30m —— 37m 设置前景色
  40m —— 47m 设置背景色
  可选颜色:红色、绿色、黄色、蓝色、洋红、青色和白色。
  他们对应的颜色代码是:
  30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋红)、36(青色)、37(白色)。
  用同样色方法设置背景色,不过要把第一个数字“3”替换成“4”,
  40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋红)、46(青色)、47(白色)。

20、取消软驱检测

打开TXTSETUP.SIF文件, 将Txtsetup.sif中HardwareIdsDatabase段里的以下这行删除:
*PNP0700 = "fdc

21、WIM文件动态加载

实现这个目需要 Imagex.exe 和 SUBST.exe,将以下三行命令保存到一个批处理文件中:
md %TEMP%\PEIMG>nul 2>nul //创建一个临时空白目录作为加载点目标目录
imagex.exe /mount PEIMG.WIM 1 %TEMP%\PEIMG //PEIMG.WIM 是你要加载的 WIM 映像名称,根据具体情况修改
subst B: %TEMP%\PEIMG //将上述临时目录虚拟为 B:
注意:上述步骤的第二、三行绝对不能反过来!如果先虚拟盘符,然后再将 WIM 挂载到这个 B:,你会发现死得很难看——居然连 C: 都变成了这个虚拟目录了,此时除非重启别无它法。