小龙ID:dragonbbc
78341次访问,排名1215好友0人,关注者1
dragonbbc的文章
原创 62 篇
翻译 0 篇
转载 48 篇
评论 5 篇
dragonbbc的公告
◇◆我用力的挥动翅膀◆◇
◇◆开始寻找家的方向◆◇
Web csdn.net
最近评论
jemmy0938:前幾天回覆論壇問題一直無法使用,不知怎今天可用了,怪哉..???
jemmy0938:是<复制完文件重起的时候>卡在NTLDR不動了...
jemmy0938:由pxe灌好並重啟就一直卡在ntldr就不動了,換了兩個版本的xp i386 resource都一樣,灌好後硬碟裡面的ntldr與 i386裏面的ntldr檔案大小不一樣,各位沒有這種現象嗎?
dragonbbc:是在哪一步卡住的呢?开始安装前还是开始安装之后复制完文件重起的时候?
jemmy0938:上述文章實作沒問題,可是client pc重啟後便馬上卡住(畫面呈現一片黑只有一個游標停在座上方閃動),請問還有甚要注意的嗎?謝謝.^^
文章分类
收藏
相册
时间
链接
Google Labs
中国反垃圾邮件联盟
射手网
文泉驿——开彼源兮,斯流永继
无线技术无限
纯绿色软件
通信标准-中国铁通标准网
邮件技术资讯网
软件工程
BugFree
CDN联盟
中国协议分析网
学习
LecTix
MIT's OpenCourseWare
算法导论录像
麻省理工学院OCW中国镜像
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 通过pxe从网络启动安装Windows XP收藏

新一篇: 光盘的文件复用 | 旧一篇: 如何在stdin(键盘)中输入EOF呢?

版权声明:本文是在参考了互联网上一些文章,并以这些文章为指导在本地环境下进行操作实践,并根据操作实际情况写出来的,故本文也应该本着开放自由的精神,对于任何非商业性质的复制、传播以及转载均是允许的,请在转载时注明出处即可。


        系统不幸中招,系统时间被改,杀毒软件一打开就自动关闭,只要是杀毒相关的程序,一打开就都自动关闭了,打开进程管理器,发现不断有一系列名字类似(一个系统文件名加上不断递增的数字,具体名字想不起来了)的进程被创建、关闭,重起进入安全模式亦是如此。没办法,只好求助Google,Baidu了。但是搜了老半天也找不出这到底是个啥病毒,更不用说专杀工具了,只找到一篇文章:
仔细看了下,跟我的中毒症状基本一致,应该就是它了。里面使用了一个软件System Repair Engineer,下载回来试了下,感觉很不错,收藏。不过清除的办法感觉还是太麻烦了,而且俺经常要上上网上银行买点东西啥的,万一有一两个漏网之鱼就不好了,我心想算了,为了安全起见,还是把系统重装一下比较稳妥。

        于是备份好数据,翻出安装盘,放入光驱,重起,但是过了会系统并没从光驱启动,又进到windows里了,难道是安装盘有问题,换了几张盘后发现,俺的光 驱现在只认DVD不认CD了,但是俺手里只有CD的安装盘,而旁边台式机上的CD又没法装到笔记本上来用,没办法,只好另找别的出路了。

       努力想了一下我所知道的安装系统的方法:
               1、光盘引导,已经行不通,排除;
               2、软盘引导,没有软驱,排除;
               3、DOS引导,在Windows下装个矮人纯DOS环境,重起进入DOS加载ISO安装,这个方法倒是可行,而且硬盘上有备份的安装盘镜像,但是此法有 个缺陷,安装的过程中不能断电,否则就彻底启动不起来了,而且以前用过,这次就算了,得换个新方法,再次排除;
               4、USB引导,通过可引导的U盘或者移动硬盘启动,跟DOS引导类似,而且手里没可引导的U盘或移动硬盘,排除;
               5、网络引导,通过PXE引导,然后从网络安装,这个方法虽然很早以前就听到过了,但是从来没实践过,这次就用这个方法好了。

       安装方法确定下来了,剩下的就是怎么安装的问题了,再次搬来Google、Baidu(搜索引擎真是好东西啊,难以想象没有它们,要找到解决这些问题的方法该有多麻烦,在此俺要感谢Google、Baidu、以及互联网上千千万万跟大家分享他所学的人),经过努力搜索、研究后,初步掌握了通过网络安装的基本原理和方法。通过网络安装Windows有两种方案可选:
       第一种方案是通过Windows自带的网络安装服务,需要一台安装了Windows Server 2000或者Windows Server 2003的机器,在上面安装RIS服务,而RIS服务需要有域环境支持,由于局域网里没有安装了2000或2003的服务器,所以这个方案还是比较麻烦;
       另一种方案就是通过一些第三方的软件模拟出RIS的环境来,就是安装DHCP、TFTP、Samba以及BINL服务,这些不论是在 Linux/Unix,还是Windows环境下,都是很容易实现的,而且Windows下的软件还是绿色的,连安装都省了,啥也不说,就是它了。

       首先准备要用到的软件:
               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 TITLE PXE Boot Install 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.2tftpboot分别为服务器名或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

相关文件下载:
http://silenceisdefeat.org/~dragon/tools/pxexp.rar

windows xp + windows 2003(没找到2000的安装盘,所以没做2000的),图形选择菜单
http://silenceisdefeat.org/~dragon/tools/pxeboot.rar

发表于 @ 2008年04月17日 16:13:00|评论(loading...)|编辑

新一篇: 光盘的文件复用 | 旧一篇: 如何在stdin(键盘)中输入EOF呢?

评论

#jemmy0938 发表于2008-07-11 14:11:26  IP: 218.173.239.*
上述文章實作沒問題,可是client pc重啟後便馬上卡住(畫面呈現一片黑只有一個游標停在座上方閃動),請問還有甚要注意的嗎?謝謝.^^
#dragonbbc 发表于2008-07-12 13:23:35  IP: 116.232.189.*
是在哪一步卡住的呢?开始安装前还是开始安装之后复制完文件重起的时候?
#jemmy0938 发表于2008-08-07 20:34:04  IP: 218.173.235.*
由pxe灌好並重啟就一直卡在ntldr就不動了,換了兩個版本的xp i386 resource都一樣,灌好後硬碟裡面的ntldr與 i386裏面的ntldr檔案大小不一樣,各位沒有這種現象嗎?
#jemmy0938 发表于2008-08-07 20:44:59  IP: 218.173.235.*
是<复制完文件重起的时候>卡在NTLDR不動了...
#jemmy0938 发表于2008-08-07 20:46:25  IP: 218.173.235.*
前幾天回覆論壇問題一直無法使用,不知怎今天可用了,怪哉..???
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © dragonbbc