无盘启动服务器f12,无盘pxe引导winpe

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这个我自己编辑的,使用小小强的内核,集成少量工具后不压缩73m,还是太大了。

(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方法11M)

map --mem (pd)/hongye.img (fd0)

map --hook

chainloader (fd0)+1

rootnoverify (fd0)

map --floppies=1

boot

title启动GHOST 11.0.1 (map方法2.8M)

map --mem (pd)/ghost.img (fd0)

map --hook

chainloader (fd0)+1

rootnoverify (fd0)

map --floppies=1

boot

title启动dosboot (memdisk方法17M)

##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 memdiskc=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 memdiskc=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:c800a8c0

"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=BBLZ976067QDQ72C

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种启动文件的使用,实际应用选择其中一种即可。

打字好辛苦,俺打字慢,尤其是中间停次电,又重来