无忧启动论坛
标题: WINPE_PELDR 初级解说 [打印本页]
作者: dos时代菜鸟 时间: 2007-11-20 13:53
标题: WINPE_PELDR 初级解说
关于光盘启动后加载光盘上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版本。
---------------(完)
[ 本帖最后由 dos时代菜鸟 于 2007-11-20 03:49 PM 编辑 ]
作者: holts 时间: 2007-11-20 14:15
写的好, 帮顶
作者: osos 时间: 2007-11-20 14:30
不错,学习了一下,长了点见识
作者: traveller2 时间: 2007-11-20 14:31
感谢分享经验,受益匪浅
作者: 网上飞鹰 时间: 2007-11-20 14:32
写得清楚详细!
作者: dos时代菜鸟 时间: 2007-11-20 15:33
好多年没有出山了,好多新秀和新技术应该学习。时间有限阿。量力而为吧。
作者: caibrid 时间: 2007-11-20 16:16
谢谢楼主,感动人的好文章。
还有这样的文章吗?,我还想看。
作者: nm888 时间: 2007-11-20 16:21
不错的的解说,希望多发些。谢谢
作者: qiuwang2006 时间: 2007-11-20 22:34
谢谢了,学习学习
作者: spring_wind 时间: 2007-11-21 09:59
好东西!学习,顶顶!
作者: 421062724 时间: 2007-11-21 13:44
文章比较长,随便补习补习启动方面的知识
作者: genius3 时间: 2007-11-21 16:40
现在的菜鸟好厉害,学习了~
作者: 无翼鸟飞翔 时间: 2007-11-21 21:18
标题: 回复 #12 genius3 的帖子
路过..随便看看..写得不错..讲的很清楚
作者: tianjingji 时间: 2007-11-21 22:06
好东西!好好学习一下。
作者: willsion 时间: 2007-11-21 23:00
楼主是菜鸟,我等不知用何称谓了。
呵呵。。。。。。。。。。
作者: mackyliu 时间: 2007-11-21 23:36
楼主是2004年1月注册的菜鸟,汗,好厉害的潜水员
作者: bmybmy 时间: 2007-11-22 00:39
学习了,感觉相当的详细哈!
作者: littlegang 时间: 2007-11-22 08:58
原帖由 dos时代菜鸟 于 2007-11-20 01:53 PM 发表
...
曾经盛行一时的WIN9X系列其实也是使用的此系统作为底层操作系统。 ...
修正一下lz的小小失误
win9x系统并不使用dos作为低层操作系统,仅仅是初始化过程时使用了文件系统
作者: dos时代菜鸟 时间: 2007-11-22 11:44
现在 大家都在研究wim,其实很简单的。
1. 在winpe.iso 中增加 wim 服务并设置建立虚拟盘 B:(这一步有一定技术含量),重新打包成winpe.is_ 。
2. 将 外置程序中的内容 打包成 wim文件 比如:program.wim,重新存放到光盘外置程序文件夹;将原来光盘中外置程序文件夹内容统统删除。
3. 编辑光盘 外置程序 文件夹中的 winpe.ini如下内容
//配置文件开始
PATH B:\外置程序
MOUN %CurDrv%\外置程序\program.WIM,B:\外置程序,1
load B:\外置程序\winpe.ini
//配置文件结束
4.近日支持 WIM 文件调入内存的 版本 ,将光盘外置程序文件夹更名为 minipe ,这就需要修改 winpe.iso 中 的 pecmd.ini 中相关语句。
作者: king.cx 时间: 2007-11-22 17:03
写得好! 学习了! 顶!
作者: Quam 时间: 2007-11-22 20:02
写得非常好,本人正在学习XPE有关的技术
作者: 518998 时间: 2007-11-22 22:36
楼主的文章写得不错,真是受益非浅
作者: dos时代菜鸟 时间: 2007-11-23 12:46
潜水员么,在水下待的时间长了,也需要到水面上透透气地。
呵呵,好多年没有研究这方面的东西了。发现好多新知识呢。
经常动脑筋,独立发现和解决问题(DIY),有益于人的长寿,也不容易变呆。
售人鱼不如授人渔,希望大家多多交流彼此的经验和想法。
如果大家都会打鱼了,就不用去买鱼了。呵呵
作者: WLDNA 时间: 2007-11-23 13:21
正迷茫呢,谢谢啊,o(∩_∩)o...
作者: dos时代菜鸟 时间: 2007-11-23 13:55
纠正:
顶上写的关于 peinstall.log 的内容 应该忽略的。
我刚将peinstall.log 删除,然后把外置程序移动到d:盘,一样可以加载外置程序。大概是 ISO 中 load \外置程序\winpe.ini 在起作用,也就是说这句话将搜索所有盘的根目录 外置程序 中的winpe.ini .
但是这样的话,如果通过光盘启动pe,安装在硬盘上的老版本pe外置程序将被率先执行.
我原本的意思是:
通过winpe.iso所在分区根目录peinstall.log 中的信息,找到硬盘上的 外置程序然后调用之,可以把硬盘外置程序放在名称不是 “外置程序” 的文件夹当中。如果通过光盘启动,光盘根目录没有peinstall.log 也就无需查找外置程序位置,直接调用光盘根下外置程序\winpe.ini,由于硬盘上的外置程序不在 外置程序文件夹,也就不会在光盘启动的时候被加载。
根目录下peinstall.log 内容 (表示外置程序安装在 E:\PE_P):
E:\PE_P
pe_p.cmd(用于将 peinstall.log 的内容传递给变量 %pe_p%)
if exist c:\peinstall.log for /f %%c in (c:\peinstall.log) do pecmd envi $pe_p = %%c
然后 调用 变量 pe_p 指派的位置对应的 winpe.ini
pecmd load %pe_p%\外置程序\winpe.ini
这样需要修改 winpe.iso 中 pecmd.ini 并增加CMD 等等 ,还要在安装pe到硬盘时编辑c:\peinstall.log
[ 本帖最后由 dos时代菜鸟 于 2007-11-23 01:57 PM 编辑 ]
作者: 长风破浪 时间: 2007-11-23 21:42
好好学习一下,感谢楼主提供!
作者: happywinner 时间: 2007-11-24 16:14
感谢分享,不错。
作者: 长风破浪 时间: 2007-12-6 15:22
蒙CK大侠推荐,再次拜读此贴,仍感受益匪浅!
作者: 长风破浪 时间: 2007-12-13 17:08
再次学习,又有斩获.谢谢
作者: ofrq 时间: 2008-9-27 19:22
这个菜鸟有点儿不简单哦,学习了
作者: zhangjie0506 时间: 2008-9-27 19:42
好东西!学习,顶顶!
作者: dos时代菜鸟 时间: 2008-10-26 11:16
看到很多人 不知道怎么把 pe 弄到硬盘和u盘。
这个解说已经很明白了。
不要自己琢磨瞎耽误时间。大部分安装工具也就是这个原理。
还是从根本解决比较好。
作者: julon 时间: 2008-10-26 13:07
多谢指导,有时间好好学习下。
作者: cp8109 时间: 2008-10-26 15:18
好东西!
受益匪浅,顶!
作者: lanre 时间: 2008-10-26 19:38
写得清楚详细!好东西!受益匪浅!
作者: webfox 时间: 2008-10-26 19:40
支持这样的学习帖!~~~~~
作者: oneuu 时间: 2008-10-26 20:49
牛人呀....真是高手.....呵呵
作者: p5891201 时间: 2010-6-14 13:22
新人有福了
喜欢楼主的介绍
支持
作者: cfancc 时间: 2010-6-21 10:32
好好好!正在找这个,太谢谢了!
作者: 6669913 时间: 2010-9-17 00:59
太好了,学习了,谢谢楼主
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) |
Powered by Discuz! X3.3 |