感谢支持
我们一直在努力

Linux 环境下 PXE 安装 WinXP SP3

实验环境 :


Server: Dell 380 with RHEL5.5_i386


IP address : 10.1.8.60/32


关闭 iptables 和 selinux


Client: Acer 4315 & Dell 360


服务器环境设置 :


1.       安装所需的软件 :


#yum install dhcp               dhcp-3.0.5-3.el5


#yum install tftp-server tftp      tftp-server-0.49-2   tftp-server-0.49-2


#yum install samba                         samba-3.0.33-3.28.el5


下载并安装 cabextract, 我这里使用的是 1.3 版本。 


2.       设置所有的服务 :


DHCP 服务器 :


#vi /etc/dhcpd.conf


如下 :


authoritative;


ddns-updates on;


ddns-update-style interim;


ddns-domainname “testing.com.”;


do-forward-updates on;


key “rndckey” {


        algorithm       hmac-md5;


        secret “ghObXTApKbkkrxhGWmwpR7C5a2zcm9trQ55u8q8iqBkJBuUDdFDyMNMM079z”;


};


option wpad-url    code 252 = text;


option wpad-url    “http://mailbj.testing.com/wpad.dat \n”;


ignore client-updates;


zone testing.com. {          # Forward zone to be updated


    primary 127.0.0.1;


    key rndckey;


}


zone 8.1.10.in-addr.arpa. { # Backward zone to be updated


    primary 127.0.0.1;


    key rndckey;


}


subnet 10.1.8.0 netmask 255.255.255.0 {


        option routers                   10.1.8.1;


        option subnet-mask              255.255.255.0;


        option nis-domain               “testing.com”;


        option domain-name              “testing.com”;


        option domain-name-servers      10.1.8.2,220.231.35.70,202.106.0.20;


        option time-offset              -18000; # Eastern Standard Time


        option ntp-servers              10.1.8.2;


        option netbios-name-servers     10.1.8.2;


        # Dynamic DNS update


        ddns-domainname “testing.com”;


        deny unknown-clients;


        range dynamic-bootp 10.1.8.101 10.1.8.249;


        default-lease-time 21600;


        max-lease-time 43200;


        # we want the nameserver to appear at a fixed address


        host desktopbj-it0 {


        hardware ethernet B8:ac:6F:49:a2:c4;


        fixed-address 10.1.8.60;


        option routers 10.1.8.4;


        option domain-name-servers 10.1.8.2,119.53.1.26,220.231.35.70;


        }


        host notebookbj-acer4315 {


        allow booting;


        allow bootp;


         filename “pxelinux.0”;


        next-server 10.1.8.60;


        option domain-name-servers 10.1.8.2,119.53.1.26,220.231.35.70;


        option routers 10.1.8.4;


        hardware ethernet 00:1d:72:1b:38:a5;


        fixed-address 10.1.8.61;


        }


         host vm-hq1 {


        allow booting;


        allow bootp;


        filename “pxelinux.0”;


        next-server 10.1.8.60;


        option domain-name-servers 10.1.8.2,119.53.1.26,220.231.35.70;


        option routers 10.1.8.4;


        hardware ethernet 00:0c:29:9b:e2:70;


        fixed-address 10.1.8.62;


        }


拷贝 pxelinux.0 到 /tftpboot 下 :


cp /usr/lib/syslinux/pxelinux.0 /tftpboot


pxelinux.0 文件,一般安装了 syslinux 后就会有的

TFTP 服务器设置 :


#vi /etc/xinetd.d/tftp


如下 :


Service tftp


{


        disable                 = no


        socket_type             = dgram


        protocol                = udp


        wait                    = yes


        user                     = root


        server                  = /usr/sbin/in.tftpd


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


#       server_args             = -s -vvv /tftpboot


        per_source              = 11


        cps                      = 100 2


        flags                   = IPv4


}


 


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


#vi /etc/tftpboot/rules


如下:


ri ^[a-z]: # Remove


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


 


Samba 服务器配置 :


 


vi /etc/samba/smb.conf


如下 :


security = share


[reminst]


        path = /tftpboot


        browsable = true


        read only = yes


        writable = no


        guest ok = yes


null passwords = true                         # 不用密码登陆

创建 /tftpboot/pxelinux.cfg 目录,在该目录下创建: default 文件,内容为视情况修改:


#mkdir /tftpboot/pxelinux.cfg


#vi /tftpboot/pxelinux.cfg/default


如下:


default RHEL5_5


prompt 1


timeout 600


display pxelinux.cfg/list          # 显示列表,内容见后


 


label RHEL5_5


     kernel vmlinuz5_5


     append ks=nfs:10.1.8.60:/mnt/ks/RHEL5_5_ks.cfg initrd=initrd5_5.img


label WinXP


     kernel winxp.0


 


#vi /tftpboot/pxelinux.cfg/list


choose one of the following linux or windows distribution for you installation:


Name          distribution        Arch                  installation media


RHEL5_5       RHEL5_5             i386                  10.1.8.60:/mnt/RHEL5_5


WinXP         WinXPSP3            i386                  /data/winxp


ghost         ghost8.3        


把 WinXP 上的 i386 复制到 /tftpboot/winxp 下 , 把一个正常运行 WinXP, 下的 Windows 目录中的 inf 复制到 /tftpboot/winxp/i386 下,里面主要包括一些驱动 .  


因为在 tftp 配置文件中增加了 rules 把所有文件和目录都改成小写 ( 在启动 client 过程中,可以查看 /var/log/message 得知 ) ,所以把所有文件名和目录都改成小写 .


如下 :  


#cd /tftpboot/winxp


#find ./ -depth | perl –ne ‘chomp;m</[^/]*$>;$d=$`;$_=$f=$&;”s/([\x80-\xFF].)|(\w)/$1\l$2/g;system “echo”,$d.$f,$d.$_ if $f ne $_’  


如果有显示,表明有这些明中是有大写字母的,然后运行:  


#find ./ -depth | perl -ne ‘chomp;m</[^/]*$>;$d=$`;$_=$f=$&;”s/([\x80-\xFF].)|(\w)/$1\l$2/g;system “mv”,$d.$f,$d.$_ if $f ne $_’

下面要用到微软 PXE 启动的几个文件 :startrom.n1_,setupldr.ex_,ntdetect.com ,这几个文件在光盘中都可以找到,我这里将使用 windows2003 光盘中的,因为之前从 XP 光盘中提取出来的,在启动过程中会出现 inf &#$b#$%c xxxx error, status 21. 这样的一些错误 .


1.       拷贝文件 :


#cp /mnt/win2003/i386/{startrom.n1_,setupldr.ex_,ntdetect.com}  /tftpboot/


2.       用 cabextract 解压上述文件 :


#cabextract startrom.n1_


将得到一个 startrom.n12


#cabextract setupldr.ex_


将得到一个 setupldr.exe


3.       配置上述文件 :


# sed -i -e ‘s/NTLDR/xpldr/gi’ startrom.n12


# sed -i -e ‘s/ntldr/xpldr/gi’ startrom.n12


#mv /tftpboot/startrom.n12 /tftpboot/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 /tftpboot/setupldr.exe /tftpboot/xpldr


 


#mv /tftpboot/ntdetect.com /tftpboot/ntdetect.wxp


 


4.       创建 winxp.sif


#vi /tftpboot/winxp.sif


如下 :


  [data]


floppyless = “1”


msdosinitiated = “1”


; Needed for second stage


OriSrc = “\\10.1.8.60\reminst\winxp\i386”


OriTyp = “4”


LocalSourceOnCD = 1


DisableAdminAccountOnDomainJoin = 1


 


[SetupData]


OsLoadOptions = “/fastdetect”


; Needed for first stage


SetupSourceDevice = “\Device\LanmanRedirector\10.1.8.60\reminst\winxp”


 


[Unattended]


    UnattendMode=ProvideDefault


    OemPreinstall=No


    TargetPath=\WINDOWS


    FileSystem=LeaveAlone


    NtUpgrade=No


    OverwriteOemFilesOnUpgrade=No


 


[GuiUnattended]


    EncryptedAdminPassword=NO


    OEMSkipRegional=1


    TimeZone=210


 


[UserData]


    ProductKey=BYCMB-R844W-KJBQX-J3D9F-V3Y6G


    FullName=”admin”


    OrgName=”augusta”


    ComputerName=desktopbj-


 


[Display]


    BitsPerPel=32


    Xresolution=1024


    YResolution=768


    Vrefresh=60


 


[TapiLocation]


    CountryCode=86


 


[RegionalSettings]


    LanguageGroup=10


    SystemLocale=00000804


    UserLocale=00000804


    InputLocale=0804:00000804


 


[SetupMgr]


    DistFolder=C:\windist


    DistShare=windist


 


[Identification]


    JoinDomain=%MACHINEDOMAIN%


    DoOldStyleDomainJoin=Yes


 


[Networking]


    InstallDefaultComponents=Yes


    ProcessPageSections=Yes


 


[RemoteInstall]


    Repartition=Yes


 


[OSChooser]


    Description=”Windows Professional – Standard Installation”


    Help=”This will install Windows Professional in a standard configuration.”


    LaunchFile=”%INSTALLPATH%\%MACHINETYPE%\templates\startrom.com”


    ImageType=Flat

下载 Binl 服务并运行 :


ris-linux-04.tar.gz 下载地址在 http://www.linuxidc.net/thread-1827-1-1.html


cd /root


tar zvxf ris-linux-04.tar.gz


cd ris-linux-04


./infparser.py /tftpboot/winxp/i386/inf


如果有错误,把错误相应的文件删除,再执行


把驱动缓存


./binlsrv.py


遇到的错误并解决 :


如遇到蓝屏什么的,一般是网卡驱动不对。


如找不到 inf 文件,一般是没有驱动,把驱动相应文件 inf/sys/cab 拷入 /tftpboot/winxp/i386/inf ,后运行 ris 重新 load.

赞(0) 打赏
转载请注明出处:服务器评测 » Linux 环境下 PXE 安装 WinXP SP3
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏