Chinaunix首页 | 论坛 | 博客
  • 博客访问: 159507
  • 博文数量: 26
  • 博客积分: 1550
  • 博客等级: 上尉
  • 技术积分: 380
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-29 03:53
文章分类
文章存档

2012年(1)

2011年(7)

2009年(1)

2008年(17)

我的朋友

分类: 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服务器的启动文件来直接运行,当然,它也可以通过pxelinuxkernel命令来运行,我不知道grub4dos是否识别它的文件格式,如果能够识别,原理上它也可以使用grub4doskernel命令来执行,否则就使用chainloader --force命令来执行。

Windows 2003 sp1/sp2的光盘中,还有一个startrom.com文件,它的作用跟startrom.n12是相同的,只是启动时需要按一个F12键才能继续,而startrom.n12则去掉了F12这个提示。

ntldr

这个文件是从Windows 2003 SP1/SP2光盘中的setupldr.exe改名而来,它的作用应该相当于从本地硬盘启动PEsetupldr.bin,但两者并不相同,但它决不是我们平常所使用的ntldr。这个文件必须放到TFTP服务器的根目录。

ntdetect.com

这个就是XP2003所使用的c:\下的ntdetect.com。这个文件也必须放到TFTP服务器的根目录。

winnt.sif

这个是PE的启动配置文件(用来指定PE的系统目录及PE映像文件所在路径及启动选项)。这个文件也必须放到TFTP服务器的根目录。通过pxe启动的PE支持3种映像文件格式,例如,ISOIMG或者SDI。其实,SDI格式相当于IMG格式,只是SDI格式在IMG文件前加了一个文件头。一般我们都使用ISOIMG格式,但这两种格式的启动选项是有所不同的,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 ManagerVDM)挂载并进行编辑,修改起来比较方便。另外,这个PE映像文件没有必要放在TFTP服务器的根目录下,例如上面的winnt.sif中就将winpe.img放在了TFTP服务器的/netpe.c/目录下。


PXE
启动PE的过程大致是(可能也不是很严谨):startrom.n12获得执行后,在TFTP服务器根目录下寻找ntldrsetupldr.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文件夹,复制fontmemdiskdefaultsplash.xpm.gzmenu.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 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不支持中文(可以使用中文,像suseubuntu就是用中文菜单的,不过嗷嗷的麻烦),所以启动菜单要英文的。

 

3、  dhcp服务器制作,

使用tftpd32,或hanewinlinux3com,或win2003的都可以,这里只介绍前两种,因为一个简单,一个稳定。

tftpdhanewin解压到d:\pxepe目录。

这里使用的地址是192.168.0.200,掩码255.255.255.0,地址池5ip

使用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处可以些grldrstartrom.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处可以写grldrstartrom.0

 

4、  没了哦,启动tftpd32hanewin服务就可以了,启动虚拟机测试成功。

可以把其他的工具盘也加进去,如maxdos之类,参考配置文件修改。

 

本文介绍两种dhcp服务器启动pe3种启动文件的使用,实际应用选择其中一种即可。

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

阅读(5986) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-04-13 13:54:12

请问能用 IPX 吗? QQ:984267591