通过pxe从网络启动安装Windows XP
时间:2010-10-18 来源:hu279318344
首先准备要用到的软件:
DHCP跟TFTP服务可以用tftpd32,下载:官方英文版,汉化的网上也很多,各大下载站都有;
Samba就是Windows的文件共享服务,Windows自带;
BINL得自己编译一下,点此下载ris-linux-0.3.tar.gz,源代码为解压后的binlsrv.c,编译方法打开源文件即可看到,如果没有编译环境,可以从网上下载一个编译好的binlsrv.exe文件即可。
然后准备需要用到的文件,分别设置好各项服务并启动之:
1. 在tftpd32目录下新建一tftpboot文件夹,点击右键,将其共享,此文件夹存放pxe引导文件以及Windows XP的安装文件,文件夹名跟共享名都可以自定义,只需在后面的配置文件里做相应修改即可。另外如果磁盘分区格式为NTFS的话,需要为其加入Everyone的可读权限;
2. 下载一份syslinux,我选择的是syslinux-3.63.zip,解压缩,将pxelinux.0拷入tftpboot文件夹,然后在pxeboot目录下新建pxelinux.cfg文件夹,并且在pxelinux.cfg里面新建default文件,内容如下:
prompt 1
default winxp
timeout 100
label winxp
kernel winxp.0如果需要图形启动菜单并且加入其它其它引导选项,只需将syslinux-3.63\com32\menu目录下vesamenu.c32拷入tftpboot目录即可,相应pxelinux.cfg\default文件内容如下:
DEFAULT vesamenu.c32
PROMPT 0
MENU TITLE PXE Boot Install Menu
MENU BACKGROUND splash.png
LABEL hdd
MENU LABEL ^0----Boot From HDD
kernel chain.c32
APPEND hd0 1
LABEL winxp
MENU LABEL ^1----Boot for Install Windows XP
kernel winxp.0
LABEL win2k
MENU LABEL ^2----Boot for Install Windows 2000
kernel w2k.0
LABEL win2k3
MENU LABEL ^3----Boot for Install Windows 2003
kernel win2k3.0
LABEL linux
MENU LABEL ^4----Boot for Install Linux
kernel vmlinuz
append initrd=initrd.img ramdisk_size=9216 noapic acpi=off
3. 将安装光盘下I386文件夹提取出到tftpboot\winxp\下,另外在跟I386文件夹同级目录下如果有$OEM$文件夹,也可以一并提取到 tftpboot\winxp下,此文件夹为隐藏文件夹,用UltraISO打开光盘镜像可以看到,直接打开光盘的话可能看不到,或者在UltraISO 选择“文件-打开光盘”也可以看到。
4. 将I386目录下STARTROM.N1_、NTDETECT.COM文件拷入一临时目录,将前两个文件更名为.cab后缀,然后解压出 startrom.n12跟setupldr.exe。此时需要用到sed对这几个文件作相应的修改,下载地址:http: //gnuwin32.sourceforge.net/packages/sed.htm,相应命令如下:
sed -i -e 's/NTLDR/XPLDR/g' startrom.n12
sed -i -e 's/ntldr/XPLDR/g' startrom.n12
sed -i -e 's/winnt\.sif/winxp\.sif/g' setupldr.exe
sed -i -e 's/ntdetect\.com/ntdetect\.wxp/g' setupldr.exe不知道什么原因,我用windows下的sed进行操作时sed会死掉,所以这一步是在Linux下进行的,然后分别将startrom.n12、 setupldr.exe、ntdetect.com改名为winxp.0、XPLDR、ntdetect.wxp,并拷入tftpboot目录,然后在 tftpboot目录下新建文件winxp.sif,内容如下:
[Data]
floppyless = "1"
msdosinitiated = "1"
; Needed for second stage
OriSrc = "