服务器配置如下:
IP : 152.10.0.1
tftp 目录 :/var/lib/tftpboot
samba 共享目录 //152.10.0.1/tftp,目录里面有如下文件:
[root@server002 tftpboot]# ll 总用量 33024 -rwxrwxrwx. 1 root root 29189501 5月 10 19:41 initrd.img -rwxrwxrwx. 1 root root 30380 5月 10 19:38 mboot.c32 -rwxrwxrwx. 1 root root 25340 5月 10 19:38 memdisk -rwxrwxrwx. 1 root root 54964 5月 10 19:38 menu.c32 -rwxrwxrwx. 1 nobody nobody 47564 4月 14 2008 ntdetect.wxp -rwxrwxrwx. 1 root root 16794 5月 10 19:37 pxelinux.0 drwxrwxrwx. 2 root root 4096 5月 12 02:33 pxelinux.cfg drwxr-xr-x. 3 root root 4096 5月 11 22:28 ris-linux-0.4 -rwxrwxrwx. 1 nobody nobody 21634 5月 14 2012 ris-linux-0.4.tar.gz -rwxrwxrwx. 1 root root 268 5月 11 22:18 rules -rwxrwxrwx. 1 root root 77 5月 11 20:52 tftpd.remap -rwxrwxrwx. 1 root root 147996 5月 10 19:38 vesamenu.c32 -rwxrwxrwx. 1 root root 3811616 5月 10 19:41 vmlinuz -rwxrwxrwx. 1 root root 1420 5月 11 21:36 winxp.sif drwxrwxrwx. 4 nobody nobody 155648 5月 11 22:45 winxp -rwxrwxrwx. 1 nobody nobody 22455 5月 10 21:31 winxp.0 -rwxrwxrwx. 1 root root 475 5月 11 21:33 winxp.sif.bak -rwxrwxrwx. 1 nobody nobody 240641 5月 11 22:01 xpldr
安装好 tftp、dhcp、syslinux ,建好 pxe linux 安装服务 后,我按照网上的做法:
1、开启samba服务,找一张XP的安装盘,将i386里的文件复制到 /var/lib/tftpboot/winxp/i386
2、# vim /var/lib/tftpboot/pxelinux.cfg/defafult 添加xp的启动选项
UI menu.c32 TIMEOUT=300 MENU TITLE System Install Server LABEL linux MENU LABEL CentOS 6.2 KERNEL vmlinuz APPEND initrd=initrd.img LABEL winxp MENU LABEL winxp KERNEL winxp.0
3、找一个xp的安装盘,在 i386 的目录中找到这三个文件 STARTROM.N1_ 、SETUPLDR.EX_ 、 NTDETECT.COM
将 STARTROM.N1_ 重命名为 STARTROM.cab ,将里面的 startrom.n12 文件解压出来
将 SETUPLDR.EX_ 重命名为 SETUPLDR.cab ,将里面的 setupldr.exe 文件解压出来
将 NTDETECT.COM 重命名为 ntdetect.wxp
4、将startrom.n12、setupldr.exe、ntdetect.wxp 复制到 /var/lib/tftpboot目录下,并修改这两个文件(startrom.n12、setupldr.exe)
# cd /var/lib/tftpboot/
# sed -i -e 's/NTLDR/XPLDR/gi' startrom.n12
# mv startrom.n12 winxp.0
# sed -i -e 's/winnt.sif/winxp.sif/gi' setupldr.exe
# sed -i -e 's/ntdetect.com/ntdetect.wxp/gi' setupldr.exe
# mv setupldr.exe XPLDR
5、创建应答文件 winxp.sif
[root@server002 tftpboot]# cat winxp.sif [data] AutoPartition = "0" floppyless = "1" msdosinitiated = "1" UnattendedInstall = "Yes" OriSrc = "\152.10.0.1 ftpwinxpi386" OriTyp = "4" LocalSourceOnCD = "1" DisableAdminAccountOnDomainJoin = "1" [SetupData] OsLoadOptions = "/fastdetect" SetupSourceDevice = "DeviceLanmanRedirector152.10.0.1 ftpwinxp" [Unattended] UnattendMode = "FullUnattended" FileSystem = "LeaveAlone" NtUpgrade = "No" OverwriteOemFilesOnUpgrade = "No" DriverSigningPolicy = "Ignore" UpdateInstalledDrivers = "Yes" ConfirmHardware = "No" ExtendOEMPartition = "0" TargetPath = "WINDOWS" UnattendSwitch = "Yes" WaitForReboot = "No" CrashDumpSetting = "0" OemSkipEula = "Yes" OEMSkipWelcome = "1" InstallFilesPath = "\152.10.0.1 ftpwinxpi386" LegacyNIC = "1" OemPreInstall = "Yes" [UserData] ProductKey = "CM3HY-26VYW-6JRYC-X66GX-JVY2D" FullName = "admin" OrgName = "SDO" ComputerName = C1ZJ [GuiUnattended] AdminPassword = WD#sd7258 EncryptedAdminPassword = "No" OEMSkipRegional = "1" TimeZone = "220" OemSkipWelcome = "1" [LicenseFilePrintData] AutoMode=PerServer AutoUsers=5 [Identification] JoinWorkgroup = WORKGROUP [RemoteInstall] Repartition = "NO" UseWholeDisk = "No" [Networking] InstallDefaultComponents = "Yes" [MassStorageDrivers] "Windows Driver for Smart Array SAS/SATA Controllers" = OEM [OEMBootFiles] cp011324.xml cpqsetup.exe generic.dll hpcisss2.cat hpcisss2.sys hpcissx2.inf install.xml txtsetup.oem [root@server002 tftpboot]#
6、更改 /var/lib/tftpboot/winxp 目录下所有文件及目录名称为小写
# cd /var/lib/tftpboot/winxp #find ./ -depth | perl -ne 'chomp;m</[^/]*$>;$d=$`;$_=$f=$&;''s/([x80-xFF].)|(w)/$1l$2/g;system "mv",$d.$f,$d.$_ if $f ne $_'
7、此时 tftpboot 目录中的文件有 :
-rwxrwxrwx. 1 root root 29189501 5月 10 19:41 initrd.img -rwxrwxrwx. 1 root root 30380 5月 10 19:38 mboot.c32 -rwxrwxrwx. 1 root root 25340 5月 10 19:38 memdisk -rwxrwxrwx. 1 root root 54964 5月 10 19:38 menu.c32 -rwxrwxrwx. 1 nobody nobody 47564 4月 14 2008 ntdetect.wxp -rwxrwxrwx. 1 root root 16794 5月 10 19:37 pxelinux.0 drwxrwxrwx. 2 root root 4096 5月 12 02:33 pxelinux.cfg -rwxrwxrwx. 1 root root 268 5月 11 22:18 rules -rwxrwxrwx. 1 root root 147996 5月 10 19:38 vesamenu.c32 -rwxrwxrwx. 1 root root 3811616 5月 10 19:41 vmlinuz drwxrwxrwx. 4 nobody nobody 155648 5月 11 22:45 winxp -rwxrwxrwx. 1 nobody nobody 22455 5月 10 21:31 winxp.0 -rwxrwxrwx. 1 root root 1420 5月 11 21:36 winxp.sif -rwxrwxrwx. 1 nobody nobody 240641 5月 12 02:36 XPLDR
做到这个步骤我用虚拟机测试了一下,出问题了!!!
INF file txtsetup.sif is corrupt or missing,status 21
8、我以为 是binl server没有搞定,继续搞定Binl Server,
去这里 http://oss.netfarm.it/guides/ 下载 ris-linux-0.4.tar.gz 并复制到 /var/lib/tftpboot/ ,并解压 。
9、创建目录 , /var/lib/tftpboot/winxp/inf ,将当前本机的 c:/windows/inf 中的文件全部复制到里面
# cd /var/lib/tftpboot/ris-linux-0.4
# ./infparser.py /var/lib//tftpboot/winxp/inf
# ./binlsrv.py
做到这个步骤我再用虚拟机测试,问题依然存在!!!
INF file txtsetup.sif is corrupt or missing,status 21
困扰了两天,不断在网上找帖子,找高人解决,可是问题依然存在
10、到快要放弃的时候 ,终于在一篇帖子中找到了错误的存在
解决办法,tftp加tftp rules,对\重定向为/,(详细的问题可以看tftp的log,在/var/log/messages中)
详细步骤如下:
a、修改 /etc/xinetd.d/tftp 文件
service tftp { disable = no socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -v -m /var/lib/tftpboot/rules -s /var/lib/tftpboot per_source = 11 cps = 100 2 flags = IPv4 }
-v 在/var/log/messages -m 加载规则 -s 指定tftpboot根目录
b、添加 rules 文件
[root@server002 tftpboot]# pwd /var/lib/tftpboot [root@server002 tftpboot]# vim rules ri ^[a-z]: rg \ / rg # @ 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 ~
C 、重启服务,问题依然存在,查看日志 发现 XPLDR 不能大写,应该写为小写 ,重命名之后,再测试,问题解决!!
11、做到这一步 ,再用虚拟机测试 ,又出现了新的问题
在 VMware 8.0.2 build-591240 的版本的虚拟机上 ,找不到网上驱动 ,
还木有解决,郁闷!!!
12、因为没有虚拟机驱动 ,我在真实机上测试 ,系统正常启动,出现了windows setup
出现问题 , 提示 txtsetup .oem 文件 找不到,,这里我跳过了提示,继续往下安装
出现新问题 ,提示 l251x56.sys 文件 找不到,这里又弄了N 久,
(到这里我换了一台服务器 ,IP 是 202.202.2.155)
解决方法 :
1、重新运行 binlsrv 服务 ,不在后台运行,
[root@b155 ris-linux-0.4]# ./binlsrv.py
2、在客户端 去启动安装XP,到提示 l251x56.sys 文件 找不到的时候 , 在服务器端 看到 ./binlsrv.py 服务有提示了 ,提示 是运行到 OEM2.INF 这个文件 的时候 ,找不到里面提供的 l251x56.sys # vim tftpboot/winxp/inf/oem2.inf , 在里面看到
l251x86.INF - Atheros L2 Fast Ethernet 10/100 Base-T Controller , 网卡驱动需要的文件
3、到另一台相同配置的,已经安装好了的XP系统的电脑 上,搜索到了与这个网卡相关的 所有的驱动文件 ,将它们拷贝到 tftpboot/winxp/i386 目录下 。
4、重新安装 ,问题依旧存在 ,真是无语了,快疯了 !!!!!
5、 冥思苦想了一天后,终于想到应该是 ris-linux-0.4 , binlsrv.py 的问题,,因为我是在 tftpboot/ris-linux-0.4 这个目录 中 运行的 这个命令
[root@b155 ris-linux-0.4]# ./infparser.py /var/lib/tftpboot/winxp/inf/系统也认为,所需要的驱动文件 也就是在 /var/lib/tftpboot/ris-linux-0.4 这个目录 中,所以我将 ris-linux-0.4 这个目录 中的所有文件 拷贝到了 /var/lib/tftpboot/winxp/i386 目,然后进到这个目录,重新执行了 下面的命令
[root@b155 i386]# ./infparser.py /var/lib/tftpboot/winxp/inf/
[root@b155 i386]# ./binlsrv.py
6、修改 /var/lib/tftpboot/winxp.sif 文件 ,删除
[MassStorageDrivers] "Windows Driver for Smart Array SAS/SATA Controllers" = OEM [OEMBootFiles] cp011324.xml cpqsetup.exe generic.dll hpcisss2.cat hpcisss2.sys hpcissx2.inf install.xml txtsetup.oem [root@server002 tftpboot]#
使其成为这样
[root@b155 tftpboot]# cat winxp.sif [data] AutoPartition = "0" floppyless = "1" msdosinitiated = "1" UnattendedInstall = "Yes" OriSrc = "\202.202.2.155 ftpwinxpi386" OriTyp = "4" LocalSourceOnCD = "1" DisableAdminAccountOnDomainJoin = "1" [SetupData] OsLoadOptions = "/fastdetect" SetupSourceDevice = "DeviceLanmanRedirector202.202.2.155 ftpwinxp" [Unattended] UnattendMode = "FullUnattended" FileSystem = "LeaveAlone" NtUpgrade = "No" OverwriteOemFilesOnUpgrade = "No" DriverSigningPolicy = "Ignore" UpdateInstalledDrivers = "Yes" ConfirmHardware = "No" ExtendOEMPartition = "0" TargetPath = "WINDOWS" UnattendSwitch = "Yes" WaitForReboot = "No" CrashDumpSetting = "0" OemSkipEula = "Yes" OEMSkipWelcome = "1" InstallFilesPath = "\202.202.2.155 ftpwinxpi386" LegacyNIC = "1" OemPreInstall = "Yes" [UserData] ProductKey = "CM3HY-26VYW-6JRYC-X66GX-JVY2D" FullName = "admin" OrgName = "SDO" ComputerName = C1ZJ [GuiUnattended] AdminPassword = greenappleadmin EncryptedAdminPassword = "No" OEMSkipRegional = "1" TimeZone = "220" OemSkipWelcome = "1" [LicenseFilePrintData] AutoMode=PerServer AutoUsers=5 [Identification] JoinWorkgroup = WORKGROUP [RemoteInstall] Repartition = "NO" UseWholeDisk = "No" [Networking] InstallDefaultComponents = "Yes" [root@b155 tftpboot]#
7、去客户端 重新安装 XP 。。 到这时在,安装顺利进行了,一直等到系统完完全全装好了,我才确信,问题全部解决 了。。。装系统的过程都是自动 的,无须人工干预
13、去另一台不同的网卡的机器安装XP ,又出问题了,是网卡问题,这里就不多说了,按照上面的方法 ,将已经安装好的系统里面的,与网卡驱动相关的文件 拷贝到服务器 的i386目录下重新 ./infparser.py /var/lib/tftpboot/winxp/inf/ ./binlsrv.py 就OK 了。。。。