设为首页 收藏本站
查看: 1186|回复: 0

[经验分享] 通过pxe从网络启动安装Windows XP

[复制链接]

尚未签到

发表于 2018-6-26 11:06:58 | 显示全部楼层 |阅读模式
  首先准备要用到的软件:
  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>  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 = "\\192.168.0.2\tftpboot\winxp\i386"
  OriTyp = "4"
  LocalSourceOnCD = 1
  DisableAdminAccountOnDomainJoin = 1
  [SetupData]
  OsLoadOptions = "/fastdetect"
  ; Needed for first stage
  SetupSourceDevice = "\Device\LanmanRedirector\192.168.0.2\tftpboot\winxp"
  [UserData]
  ComputerName=*
  ; if needed
  ;ProductID=绿色部分192.168.0.2跟tftpboot分别为服务器名或IP和共享名,可根据实际情况作相应的修改,另外也可以在这个文件里加入一些其它的自动应答选项,以实现无人值守自动安装,具体 可参考相关文档,或者根据光盘上的winnt.sif作相应修改。另外在查看tftpd日志的时候发现有对BOOTFONT.BIN文件的请求记录,于是 从I386目录将其拷入tftpboot目录中,发现可以使刚启动时的字符安装界面改善一点,此文件非必需,可以根据情况决定是否拷入。
  5. 运行ris-linux压缩包里的infparser.py生成网卡驱动信息文件nics.txt,需要安装Python,由于通过sed修改文件的时候打开了一台Linux机器,所以我这一步也在Linux上运行的,Windows下操作应该与此类似,首先从已经安装好的Windows XP系统目录下把inf文件夹(一般情况下为C:\Windows\inf)复制一份,放到存放infparser.py的目录下,然后运行:
  infparser.py inf如果成功运行的话会生成nics.txt跟devlist.cache两个文件,这里要用到的是nics.txt,将它拷入存放binlsrv.exe的目录下,devlist.cache文件为Linux下运行binlsrv.py是要用到的,这里用不到。然后将需要用到的网卡驱动文件(.sys后缀)放入I386目录下,如果不知道是哪个文件的话,可以先跳过这一步,启动ftpd32.exe跟binlsrv.exe,从网络启动安装一遍,查看binlsrv.exe输出的信息或者tftpd32的日志,即可找到相应的sys文件,或者将I386\DRIVER.CAB里的所有文件解压到I386目录即可。如果运行infparser.py出错的话,可以将其用编辑器打开,修改第36行debug = 0为debug = 1,重新运行,根据输出信息找出解析错误的inf文件(我这里为oem23.inf跟oem24.inf),将其删除再次运行,如果仍然有错,重复以上步骤直至成功运行。
  当然如果有网卡驱动对应的inf文件的话,我们可以从inf文件里找出需要的信息,手工编辑一个nics.txt出来。
  6. 打开binlsrv.exe,使BINL服务启动。
  7. 打开tftpd32.exe,点击下方的设置,将自定义目录设为存放上面引导文件及安装文件的文件夹,这里为.\tftpboot,确定,然后打开DHCP服务器选项卡,将启动文件设为pxelinux.0,其它信息根据局域网环境做相应设置即可,例如:
  IP池起始地址           192.168.0.200
  池的大小                54
  启动文件                pxelinux.0
  WINS/DNS服务器     202.99.192.68
  默认路由器             192.168.0.1
  掩码                     255.255.255.0点击保存,然后关掉程序重新运行,以使设置生效。
  一切就绪,启动要安装系统的机器,选择从网络启动,开始安装。
  主要参考资料:
  http://oss.netfarm.it/guides/
  A complete Guide to Ris & Linux
  通过PXE安装WINDOWS XP配置手记(Linux)
  无光驱、软驱,通过PXE安装Windows 2003
  2008-4-21补充:
  早上查找PXE引导WinPE的资料时看到PXE服务器架设指南及PXE启动WinPE(含PE2.0)解决方案总结里面说ntdetect.com是公用的,没必要修改,于是在虚拟机上试了下,确实如此,另外XP跟2003的startrom.n12跟setupldr.exe也是可以通用的,但是为区分不同系统,还是得对这两文件改名并做相应修改。
  2008-4-22补充:
  今天差点闯了大祸,有个朋友系统中毒了,去给他重装系统,结果找到的几张盘都装不过去,就想正好这两天的研究成果可以用上了,在另一台机子上打开tftpd32跟binlsrv,结果网卡驱动怎么也弄不好,从驱动光盘里弄出来的驱动一到安装界面就蓝屏,网上搜了下,找到篇文章:NVIDIA nForce芯片组全系列网卡驱动for WINPE Beta1,大概看了下,原来是nvidia的网卡硬件原因。还好最后在一张老毛桃修改的winpe里找到个能用的,整了一下午终于搞定,正准备高兴呢,结果装好一看,系统里原先的分区都没了,整个磁盘被重新格成一个区了,这才想起这两天看过好几个文章都说过这事,只不过这两天都是在虚拟机上实验的,也不用分几个区,所以没碰到过这情况,就没放在心上。哎!实在是太大意了。赶紧关机,从网络启动到maxdos下,打开diskgen,恢复分区表,重起,看了下别的区都回来了,里面的文件也都还在,悬着的心终于可以放下了。赶紧修改winxp.tif,然后装好系统,OVER。同志们如果设置了无人值守应答文件的话,一定要小心了,千万别犯跟偶一样的错误,如果丢了重要文件就欲哭无泪了。修改方法为在winxp.tif中添加下面这段,如果有的话就改成跟下面一样:
  [RemoteInstall]
  Repartition = No
  UseWholeDisk = No
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dragonbbc/archive/2008/04/17/2301329.aspx

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-530898-1-1.html 上篇帖子: 使用cygwin从windows上传日志到hdfs 下篇帖子: Windows 2008 服务器核心(Server Core)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表