linux装回windows xp,通过PXE安装WINDOWS XP配置手记(Linux)

因为以前搞过通过PXE安装Linux和用PXE来启动Planetlab的机器,所以对于PXE并不是很陌生,一下简要介绍一下如何架设的,所有操作均在FC4下的,对于windows下的,我没有兴趣去弄。

安装tftp server:

CODE:#yum install tftp-server tftp经过这个操作后,你的机器安装了tftp server和tftp clinet这么两个包,安装tftp clinet是为了更好的测试tftp server是否work,直接tftp localhost,可以免去防火墙配置错误导致tftp不正常工作。

tftpd的配置文件,由于Linux对大小写敏感,所以稍微修改了一下tftp的配置:

CODE:service tftp

{

disable = no

socket_type             = dgram

protocol                = udp

wait                    = yes

user                    = root

server                  = /usr/sbin/in.tftpd

server_args             = -m /tftpboot/rules -s /tftpboot

per_source              = 11

cps                     = 100 2

flags                   = IPv4

}增加了/tftpboot/rules文件,这个文件主要作用是,把请求tftp的所有路径和文件名改成小写。这个文件的内容为:

CODE:#cat /tftpboot/rules

ri ^[a-z]: # Remove “drive letters”

rg \\ / # Convert backslashes to slashes

rg \# @ # Convert hash marks to @ signs

rg /../ /..no../ # Convert /../ to /..no../

rg A a

rg B b

rg C c

rg D d

rg E e

rg F f

rg G g

rg H h

rg I i

rg J j

rg K k

rg L l

rg M m

rg N n

rg O o

rg P p

rg Q q

rg R r

rg S s

rg T t

rg U u

rg V v

rg W w

rg X x

rg Y y

rg Z z

r ^/(.*) \1这个文件大概能看懂,从前人文章中拔出来的,嘿嘿。

呵呵,tftpd就搞定了,重新启动xinetd就OK了,reload也可以的,看自己习惯了。

下面配置DHCPD,增加配置:

CODE:allow booting;

allow bootp;

next-server 192.168.1.222;

filename "pxelinux.0";一般说来增加这么几句就OK了,next-server后面的ip改成你实际的TFTP server的IP或者域名,filename后面是pxelinux.0文件,在syslinux软件包中可以找到,具体可以上找寻更多的信息。

创建必要的文件:

把 pxelinux.0 rules 复制到 /tftpboot目录下,创建/tftpboot/pxelinux.cfg目录,在该目录下创建:

default文件,内容为视情况修改:

CODE:DEFAULT HD0

PROMPT 1

TIMEOUT 300

#ONTIMEOUT BOOT_PXE

LABEL winpe

MENU LABEL ^1----Boot for WinPE tools

kernel winpe.0

LABEL wxp

MENU LABEL ^1----Boot for Install WindowsXP

kernel winxp.0

LABEL dos

MENU LABEL ^2----Boot for Dos Tools

kernel memdisk

append initrd=dos/dostools.img

LABEL ghost

MENU LABEL ^3----Boot for Ghost 8.3

kernel memdisk

append initrd=dos/ghost83.img

LABEL pqmagic

MENU LABEL ^4----Boot for PQMagic 8.05

kernel memdisk

append initrd=dos/pm805.img

LABEL HD0

MENU LABEL ^0----Boot from the first HD

kernel chain.c32

append hd0

# eof: pxelinux.cfg/default记得把dhcpd重新启动一下。

到这里,PXE启动倒是没有什么问题了,只是启动WinXP的一些准备工作还没有做。

把WinXP光盘上的i386目录复制到/tftpboot/winxp目录下,参考http://blog.yalin.tw/2007/06/pxe-in-freebsd-windows-xp.html文章把一个正在运行的WinXP SP2下的WINDOWS\inf目录复制到/tftpboot/winxp/i386目录下,具体干什么,有什么用我也不了解,等下似乎要用到。

进入/tftpboot/winxp/i386目录,解开driver.cab文件。

CODE:#cabextract driver.cab一开始我没有做这步操作,安装过程中提示:找不到pcntpci5.sys文件,因为我用的是虚拟机,这个就是虚拟机网卡的驱动,看tftp请求的是:

15:25:55.474381 IP 192.168.1.117.55711 > 192.168.1.222.tftp:  54 RRQ "\winxp\i386\pcntpci5.sy_" octet blksize 1432 tsize 0

15:25:55.480476 IP 192.168.1.117.55712 > 192.168.1.222.tftp:  54 RRQ "\winxp\i386\pcntpci5.sys" octet blksize 1432 tsize 0

既然要的是这个文件,索性就把driver.cab文件直接解开到i386目录。

由于我这里是在Linux下,TFTPD对大小写很敏感,刚才的rules也把所有对文件和目录的请求都改成了小写,所以这里也要把所有文件名都改成小写的。

先进入/tftpboot/winxp目录,执行:

CODE:find ./ -depth | perl -ne 'chomp;m[^/]*$>;$d=$`;$_=$f=$&;''s/([\x80-\xFF].)|(\w)/$1\l$2/g;system "echo",$d.$f,$d.$_ if $f ne $_'如果有显示,表明有这些明中是有大写字母的,然后运行:

CODE:find ./ -depth | perl -ne 'chomp;m[^/]*$>;$d=$`;$_=$f=$&;''s/([\x80-\xFF].)|(\w)/$1\l$2/g;system "mv",$d.$f,$d.$_ if $f ne $_'OK,这下就把所有文件都改成小写了。

下面的操作参考而来:

提取XP PXE启动所需要的文件并适当的修改以适应能安装多个操作系统。

Setting up a Windows XP Source:

QUOTE:

- Copy i386 directory from the installation media to a subdir called winxp

in the ris working directory

- Extract the pxe loader:

cabextract /i386/STARTROM.N1_

- Modify the name of the loader from NTLDR to XPLDR:

sed -i -e 's/NTLDR/XPLDR/gi' startrom.n12

- Move the modified pxe loader to tftpd root, and call it winxp.0

- Extract the setuploader, using cabextract:

cabextract /i386/SETUPLDR.EX_

- Modify the name of the response file from winnt.sif to winxp.sif

sed -i -e 's/winnt\.sif/winxp\.sif/gi' setupldr.exe

- Modify the name of ntdetect from ntdetect.com to ntdetect.wxp

sed -i -e 's/ntdetect\.com/ntdetect\.wxp/gi' setupldr.exe

- Move the modified setuploader to tftpd root, and call it XPLDR

- Copy /i386/NTDETECT.COM to tftpd root

and call it ntdetect.wxpCreate a response file called winxp.sif as follows:

CODE:[data]

floppyless = "1"

msdosinitiated = "1"

; Needed for second stage

OriSrc = "\\YOUR_SERVER_NAME\YOUR_SHARE_NAME\winxp\i386"

OriTyp = "4"

LocalSourceOnCD = 1

DisableAdminAccountOnDomainJoin = 1

[SetupData]

OsLoadOptions = "/fastdetect"

; Needed for first stage

SetupSourceDevice = "\Device\LanmanRedirector\YOUR_SERVER_NAME\YOUR_SERVER_SHARE\winxp"

[UserData]

ComputerName = *

; if needed

;ProductID=上面文件的YOUR_SERVER_NAME改成你的samba的机器的IP或者机器名,YOUR_SERVER_SHARE改成你的tftpboot的共享名。

samba的配置(视情况而修改):

CODE:[reminst]

path = /tftpboot

browsable = true

read only = yes

writable = no

guest ok = yessamba的其他部分配置可以参考samba的配置。配置完毕后重新启动samba。

接下来就是搞定Binl Server了,具体干吗的我也不知道,安装的时候似乎要用到。

CODE:wget [url][/url]

tar zxf [url][/url]

cd ris-linux-0.2

Run infparser.py

./infparser.py /where/is/winxp/i386/inf

Run ./binlsrv.py注意不要关闭binlsrv.py这个进程。

配置到这里几乎全部工作都完成了,应该可以通过PXE安装WinXP了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值