HOME 生活记录运维/编程
作者/来源:yixinu.com
栏目:运维/编程
日期:2012-05-14 07:20:00

服务器配置如下:

    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 了。。。。



分享到:

Copyright © 2013-2014 yixinu.com 湘ICP备14004402号

QQ:316686606  Email: 316686606@qq.com