分类: WINDOWS
2008-04-22 04:01:58
grub中有网络引导系统的功能,自己从没试过,想做一个用grub无盘引导pe的东东。
主要参考了Climbing大哥的教程。
用d:\pxepe做工作目录
1、 把pe的 相关文件复制到d:\pxepe (红色注释抄袭climbing大哥的,文件也是climbing提供的,原文)我吧文件全复制到d:\pxepe下
startrom.0
这个文件从Windows 2003 SP1/SP2光盘中来,这个文件实际上也是一个符合pxe启动规范的启动文件,可以直接作为pxe服务器的启动文件来直接运行,当然,它也可以通过pxelinux的kernel命令来运行,我不知道grub4dos是否识别它的文件格式,如果能够识别,原理上它也可以使用grub4dos的kernel命令来执行,否则就使用chainloader --force命令来执行。
在Windows 2003 sp1/sp2的光盘中,还有一个startrom.com文件,它的作用跟startrom.n12是相同的,只是启动时需要按一个F12键才能继续,而startrom.n12则去掉了F12这个提示。
ntldr
这个文件是从Windows 2003 SP1/SP2光盘中的setupldr.exe改名而来,它的作用应该相当于从本地硬盘启动PE的setupldr.bin,但两者并不相同,但它决不是我们平常所使用的ntldr。这个文件必须放到TFTP服务器的根目录。
ntdetect.com
这个就是XP或2003所使用的c:\下的ntdetect.com。这个文件也必须放到TFTP服务器的根目录。
winnt.sif
这个是PE的启动配置文件(用来指定PE的系统目录及PE映像文件所在路径及启动选项)。这个文件也必须放到TFTP服务器的根目录。通过pxe启动的PE支持3种映像文件格式,例如,ISO、IMG或者SDI。其实,SDI格式相当于IMG格式,只是SDI格式在IMG文件前加了一个文件头。一般我们都使用ISO或IMG格式,但这两种格式的启动选项是有所不同的,ISO格式要在启动选项中增加一个/rdexportascd,而SDI格式还要增加一个/rdoffset选项。
WINPE.IMG 这个我自己编辑的,使用小小强的内核,集成少量工具后不压缩
(IMG或者ISO或者SDI格式,例如WinPE.IMG):这里特别要注意的就是PE的映像文件一定不能使用cab压缩格式,如果你用老毛桃的PE,一定要将它光盘根目录下的WinPE.IS_解压缩成winpe.iso然后放到这里使用。这样,IMG格式的PE就比较有优势了,因为IMG格式是硬盘分区映像格式,你可以对这个分区使用NTFS文件系统并加上NTFS压缩,基本上压缩率也接近cab压缩格式,这样img文件就没有必要使用cab压缩但仍然具有cab的压缩率,而且img格式可以直接使用Virtual Disk Manager(VDM)挂载并进行编辑,修改起来比较方便。另外,这个PE映像文件没有必要放在TFTP服务器的根目录下,例如上面的winnt.sif中就将winpe.img放在了TFTP服务器的/netpe.c/目录下。
PXE启动PE的过程大致是(可能也不是很严谨):startrom.n12获得执行后,在TFTP服务器根目录下寻找ntldr(setupldr.exe),找到后加载ntldr并执行,而ntldr则在TFTP服务器的根目录下查找winnt.sif,根据winnt.sif的内容从TFTP服务器上下载PE的映像文件并根据选项进行PE的加载,在PE的加载过程中可能会用到ntdetect.com。
2、启动文件,使用startrom.0直接做启动文件,或用grldr,或pxelinux。
使用grldr启动,将个grldr复制到d:\pxepe,建立menu.lst文件夹,复制font和memdisk,default,splash.xpm.gz到menu.lst中,编辑default文件,内容如下:
timeout 4
default 0
# Fallback to the second entry.
fallback 0
splashimage (pd)/menu.lst/splash.xpm.gz
fontfile (pd)/menu.lst/fonts
title 启动 红叶工具箱 (map方法
map --mem (pd)/hongye.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1
boot
title 启动 GHOST
map --mem (pd)/ghost.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
map --floppies=1
boot
title 启动 dosboot (memdisk方法
##password2 --md5
root (pd)
kernel (pd)/menu.lst/memdisk c=937 h=2 s=32 floppy
initrd (pd)/dosboot.zip
title 【11】 启动MAXDOS v6
root (pd)
kernel (pd)/menu.lst/memdisk c=80 h=4 s=36 floppy
initrd (pd)/maxdos.img c=80 h=4 s=36 floppy
title 启动 WinPE image
pxe keep
chainloader --force (pd)/startrom.0
若使用pxelinux引导,复制以下文件到d:\pxepe,
pxelinux.0 引导文件
vesamenu.c32 窗口定义文件
syslinux.png 启动图片640*480大小,不想grldr的图片哪么麻烦。
Memdisk 虚拟内存盘驱动
建立pxelinux.cfg文件夹,在其中建立default文件,这是pxelinux的配置文件,内容如下:
DEFAULT vesamenu.c32
PROMPT 0
TIMEOUT 30
MENU BACKGROUND syslinux.png
LABEL WinPe
MENU LABEL WinPE PXE By ZJQ
kernel startrom.0
LABEL OKG83
MENU LABEL 1KEY GHOST v8.3 Build 070707 FD
kernel memdisk floppy
append initrd=ghost.img
LABEL dosboot
MENU LABEL Super dosboot v2007.07.07
kernel memdisk c=937 h=2 s=32 floppy
append initrd=dosboot.zip
LABEL hongye
MENU LABEL hongye
kernel memdisk c=78 h=8 s=36 floppy
append initrd=hongye.img
LABEL maxdos
MENU maxdos v6.0
kernel memdisk c=80 h=4 s=36 floppy
append initrd=MaxDOS.img
注意pxelinux不支持中文(可以使用中文,像suse,ubuntu就是用中文菜单的,不过嗷嗷的麻烦),所以启动菜单要英文的。
3、 dhcp服务器制作,
使用tftpd32,或hanewin,linux,3com,或win2003的都可以,这里只介绍前两种,因为一个简单,一个稳定。
将tftpd或hanewin解压到d:\pxepe目录。
这里使用的地址是192.168.0.200,掩码255.255.255.0,地址池5个ip,
使用tftpd32,导入如下注册表
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\TFTPD32]
"LastWindowPos"="473 173 874 566 "
"BaseDirectory"="."
"TftpPort"=dword:00000045
"Hide"=dword:00000000
"WinSize"=dword:00000000
"Negociate"=dword:00000001
"PXECompatibility"=dword:00000000
"DirText"=dword:00000000
"ShowProgressBar"=dword:00000001
"Timeout"=dword:00000003
"MaxRetransmit"=dword:00000006
"SecurityLevel"=dword:00000001
"UnixStrings"=dword:00000001
"Beep"=dword:00000000
"VirtualRoot"=dword:00000000
"MD5"=dword:00000000
"LocalIP"=""
"Services"=dword:00000005
"TftpLogFile"=""
"SaveSyslogFile"=""
"PipeSyslogMsg"=dword:00000000
"LowestUDPPort"=dword:00000000
"HighestUDPPort"=dword:00000000
"MulticastPort"=dword:00000000
"MulticastAddress"=""
"PersistantLeases"=dword:00000001
"DHCP Ping"=dword:00000001
"DHCP LocalIP"=""
"Max Simultaneous Transfers"=dword:00000064
"UseEventLog"=dword:00000000
"Console Password"="tftpd32"
"Support for port Option"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\TFTPD32\DHCP]
"Lease_NumLeases"=dword:00000000
"IP_Pool"=dword:c
"PoolSize"=dword:00000005
"BootFile"="pxelinux.0"
"DNS"=dword:00000000
"Mask"=dword:00ffffff
"Gateway"=dword:00000000
"DomainName"=""
"Lease (minutes)"=dword:00000b40
BootFile处可以些grldr或startrom.0。
使用hanewin做服务器修改DhcpSrv.ini文件如下
[License]
Key=BBLZ976067QDQ
Name=Lotus.ice
[DHCPsrv]
Log=0
EnableID=1
Unicast=1
TFTPEnable=1
TFTPMode=0
TFTPWindowSize=1
Multicast=0
TFTPDirectory=D:\pxepe\
[Standard]
BootFile=grldr
BaseIP=192.168.0.200
Range=5
SubnetMask=255.255.255.0
GatewayIP=192.168.0.1
DNS1IP=61.128.114.133
InterfaceIP=192.168.0.61
BootFile处可以写grldr或startrom.0。
4、 没了哦,启动tftpd32或hanewin服务就可以了,启动虚拟机测试成功。
可以把其他的工具盘也加进去,如maxdos之类,参考配置文件修改。
本文介绍两种dhcp服务器启动pe,3种启动文件的使用,实际应用选择其中一种即可。
打字好辛苦,俺打字慢,尤其是中间停次电,又重来