PXE网络安装xp的方法.docx

上传人:b****3 文档编号:3948618 上传时间:2022-11-26 格式:DOCX 页数:18 大小:387.87KB
下载 相关 举报
PXE网络安装xp的方法.docx_第1页
第1页 / 共18页
PXE网络安装xp的方法.docx_第2页
第2页 / 共18页
PXE网络安装xp的方法.docx_第3页
第3页 / 共18页
PXE网络安装xp的方法.docx_第4页
第4页 / 共18页
PXE网络安装xp的方法.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

PXE网络安装xp的方法.docx

《PXE网络安装xp的方法.docx》由会员分享,可在线阅读,更多相关《PXE网络安装xp的方法.docx(18页珍藏版)》请在冰豆网上搜索。

PXE网络安装xp的方法.docx

PXE网络安装xp的方法

   其实网络上已经有了网络安装xp的方法,所以本文重点在于实现过程中重要环节可能出现的问题。

Windowsserver已经提供了网络安装服务,来部署xp或2003的网络安装,可这要在域模式下来实现。

经过一些人的努力,实现了工作组模试的网络安装。

通过网络安装windows,无疑是非常方便的批量装机方法,不用光驱,不用光盘,只要是可以从网络启动的电脑就可以从网络上安装xp或2003。

这要在一些老电脑的独立网卡上还要装一个启动模块,也不贵一两块钱一个。

如今新机子的集成网卡已经内置网络启动功能了。

要求:

 1、DHCP服务器,负责分配IP

 2、TFTP服务器,负责传输文件到客户端

 3、BINL实现工作组模式网络安装的关键,此服务实现了从网络加载客户端网卡的驱动,主要靠NCQ,NCR,RQU,RSU四种报文实现。

 4、win2k、winxp、win2k3光盘或镜像文件

  其实要同时实现DHCP+TFTP,在windows环境下用tftpd32.exe这个工具就OK了。

而BINL这个东东要用国外某位高人的作品binlsrv。

安装工作过程大概如下:

Client端由网络启动,发现DHCP服务器并获得IP、tftp服务器地址、启动文件名即startrom.n12Client从tftp服各器下载startrom.n12文件并执行,startrom.n12会向tftp服务器请求ntldr(由setupldr.exe改名而来)并执行它,ntldr再加载bootfont.bin和winnt.sif,ntldr通过winnt.sif文件中的setupsourcedevice参数来决定接下来要从哪里加载文件,\Device\LanmanRedirector\表示从网络加载。

它会向tftp服务器的\folder\i386\目录请求预安装环境所需文件,这里的folder和上而setupsourcedevice中的folder是一样的,所以这也就规定了tftp的跟目录是在共享目录之下,否则就会出上面那个错误提示。

预安装环境加载驱动前会向binlsrv服务器发送Client端网卡驱动编号,binlsrv服务端查找驱动数据库,将匹配client端网卡的驱动文件名发给client端,安装程序加载tcp/ip驱动时,会从tftp服务器的xp安装源文件所在目录下载。

然后安装程序继续安装过程,这时已经可以支持tcp/ip,可脱离pxe,安装源文件不再从tftp下载,而从”文件共享服务器”的共享目录下载,最终完成安装。

 现在,知道大致工作流程,就开工了。

先建立一个共享文件夹来放需要的工具,我就取名为"tftp"吧,再在tftp里面建立三个文件夹分别为win2k,winxp,win2k3,这样做便于管理,分别从win2k,winxp,win2k3光盘或者镜像中复制I386文件夹到对应的系统中,比如说从XP光盘中复制I386文件夹到winxp中,对应就OK了,3个系统的I386都要,因为我们要选择性安装系统。

 接着,就是要用到符合微软PXE启动的几个文件:

 1、startrom.n12

 2、setupldr.exe

 3、

 4、winnt.sif

 startrom.n12,setupldr.exe,这三个文件可以在I386的文件夹中找到,理论上应该是通用的,但为了区分一下,就分别从各自的I386中找吧,而winnt.sif这个文件就靠自己编写,随便建一个空白文本文挡输入参数就OK.

  对于startrom.n12,不能直接找到,搜索I386中的"STARTROM.N1_"这个文件,用winrar或者其他解压缩工具打开就会发现startrom.n12了。

 setupldr.exe同样不能直接找到,搜索I386中的"SETUPLDR.EX_"这个文件,同样用winrar或者其他解压缩工具打开,提取里面的setupldr.exe文件

 可以在I386中直接找到.

 好了,现在找到要用到的文件,由于从三个I386提取出所需要的文件的名称是一致的,我们要修改名字跟里面的东东达到选择性启动安装。

 现在,我们就从XP光盘中的I386文件中提取出需要的3个文件开始改起吧,记得要修改的话,在windows下,我就用UE吧。

对于XP系统的步骤就简单说明吧:

1、复制I386文件夹到刚刚建的winxp目录下

2、用Winrar解压"STARTROM.N1_"文件得到"startrom.n12"文件,

3、用UE替换"startrom.n12"文件中所有"NTLDR"为"XPLDR",

4、移动修改后的"startrom.n12"到tftp目录下并改名为"winxp.0",

5、用winrar解压"SETUPLDR.EX_"文件得到"setupldr.exe"

6、用UE替换"setupldr.exe"里面的全部"winnt.sif"为"winxp.sif",""为"ntdetect.wxp"

7、移动修改过的"setupldr.exe"到tftp目录并改名为"XPLDR"

8、复制I386中的"NTDETECT.COM"到tftp目录并名为"ntdetect.wxp"

9、对于winnt.sif这个文件,由于上面我们已经用UE将"setupldr.exe"中的winnt.sif替换为winxp.sif,所以我们建立的文件为"winxp.sif",用记事本新建一个文件,保存为"winxp.sif",输入以下参数:

=====================我是分割线,不要复制我=========================

[data]

floppyless="1"

msdosinitiated="1"

;Neededforsecondstage

OriSrc="\\你的服务器名称\你的共享名称\winxp\i386"

OriTyp="4"

LocalSourceOnCD=1

DisableAdminAccountOnDomainJoin=1

[SetupData]

OsLoadOptions="/fastdetect"

;Neededforfirststage

SetupSourceDevice="\Device\LanmanRedirector\你的服务器名称\你的共享名称\winxp"

[UserData]

ComputerName=*

;ifneeded

;ProductID

=========================我是分割线,不要复制我======================

简单说明一下参数意义:

OriSrc="\\你的服务器名称\你的共享名称\winxp\i386"

表示你的共享路径了,"你的服务器名称"可以输入你当前计算名称或者当前计算的固定IP地址,“你的共享名称”就是你建立的共享名称了,本例中我就以tftp为共享名称了。

SetupSourceDevice="\Device\LanmanRedirector\你的服务器名称\你的共享名称\winxp"

这行的说明跟上述的一致了。

[UserData]

ComputerName=*

;ifneeded

;ProductID

这些是安装系统时要求你输入的内容,比如ProductID这行,注意,前面有个红色的分号,表示这行不用了,当你需要时可以将分号去掉并输入对应的序列号,输入序列号后,在安装过程中就不用输入了。

具体winnt.sif说明请看上网搜索相干资料,

附上我的winxp.sif文件内容:

[data]

floppyless="1"

msdosinitiated="1"

;Neededforsecondstage

OriSrc="\\wake\tftp\winxp\i386"

OriTyp="4"

LocalSourceOnCD=1

DisableAdminAccountOnDomainJoin=1

[SetupData]

OsLoadOptions="/fastdetect"

;Neededforfirststage

SetupSourceDevice="\Device\LanmanRedirector\wake\tftp\winxp"

[UserData]

ComputerName=*

;ifneeded

;ProductID

 到了这里,XP的PXE修改就完毕了,将winxp.0、ntdetect.wxp、winxp.sif、XPLDR复制到tftp文件夹下。

win2k3的与XP一样修改,不过修改内容的名字有区别,容易管理。

大致上就这样:

1、复制win2k3中的I386文件夹到刚刚建立的win2k3文件夹中

2、用Winrar解压"STARTROM.N1_"文件得到"startrom.n12"文件,

3、用UE替换"startrom.n12"文件中所有"NTLDR"为"w2k3l",

4、移动修改后的"startrom.n12"到tftp目录下并改名为"w2k3.0",

5、用winrar解压"SETUPLDR.EX_"文件得到"setupldr.exe"

6、用UE替换"setupldr.exe"里面的全部"winnt.sif"为"wi2k3.sif",""为"ntdetect.2k3"

7、移动修改过的"setupldr.exe"到tftp目录并改名为"w2k3l"

8、复制I386中的"NTDETECT.COM"到tftp目录并名为"ntdetect.w2k3"

9、我的wi2k3.sif文件内容如下:

[data]

floppyless="1"

msdosinitiated="1"

;Neededforsecondstage

OriSrc="\\wake\tftp\win2k3\i386"

OriTyp="4"

LocalSourceOnCD=1

DisableAdminAccountOnDomainJoin=1

[SetupData]

OsLoadOptions="/fastdetect"

;Neededforfirststage

SetupSourceDevice="\Device\LanmanRedirector\wake\tftp\win2k3"

[UserData]

ComputerName=test

;ifneeded

;ProductID=

至此,win2k3的PXE启动文件修复完毕,将w2k3.0、ntdetect.2k3、w2k3l、wi2k3.sif复制到tftp文件夹下。

由于上述的修改都是对于"winnt"的,而win2000就是winnt的一种吧.所以,有好多地方不用修改,直接可以用,但名字要与其他两个系统所提取出的区分开。

大致流程如下:

1、复制win2000中I386文件夹到刚刚建立的win2k中

2、用Winrar解压"STARTROM.N1_"文件得到"startrom.n12"文件,

3、用UE替换"startrom.n12"文件中所有"NTLDR"为"w2kld",

4、移动修改后的"startrom.n12"到tftp目录下并改名为"w2k.0",

5、用winrar解压"SETUPLDR.EX_"文件得到"setupldr.exe"

6、移动修改过的"setupldr.exe"到tftp目录并改名为"w2kld"

8、复制I386中的"NTDETECT.COM"到tftp目录并名为""

9、注意,这次winnt.sif要改名为"pxelinux.0winnt.sif",我的内容如下:

[data]

floppyless="1"

msdosinitiated="1"

;Neededforsecondstage

OriSrc="\\wake\tftp\win2k\i386"

OriTyp="4"

LocalSourceOnCD=1

DisableAdminAccountOnDomainJoin=1

[SetupData]

OsLoadOptions="/fastdetect"

;Neededforfirststage

SetupSourceDevice="\Device\LanmanRedirector\wake\tftp\win2k"

[UserData]

ComputerName=*

;ifneeded

;ProductID=

现在解释一下为什么要取“pxelinux.0winnt.sif”和""这两个名字。

前面的前缀"pxelinux.0"取自于启动文件“pxelinux.0”,由于我们要实现选择性安装不同的操作系统,能做到这样的,据我知道只有pxelinux,而pxelinux来自于syslinux,后面再详细说明。

而win2000的PXE启动时所需用的winnt.sif文件在响应时有BUG,可以自己试试不改动的情况,你会发现启动不了的,只有从第一个启动文件,即“pxelinux.0”将它的名字以前缀形式加入到"winnt.sif"中可以避免这个BUG,但“winnt.sif”名字修改为“pxelinux.0winnt.sif”时,也接着要对应修改名字为“”。

所以实际上win2k从PXE启动所需要的文件分别为:

w2k.0、、pxelinux.0winnt.sif、W2KLD这几个文件。

好了,现在tftp文件目录如下:

win2k中就放有一个I386文件夹,这个文件夹来自于win2000光盘中的I386

win2k3的I386文件夹来自于光盘win2k3的I386文件夹

winxp的I386文件夹来自于光盘winxp中的I386文件夹

现在就是要做启动菜单了,上面之前说过要用到syslinux中的pxelinux,所以,请到相关网站先下载syslinux,里面有我们需要的pxelinux及其他工具,具体自己看英文说明。

好了,我就用syslinux3.73版,从core文件夹中找到pxelinux.0文件,从com32\menu下找到vesamenu.c32文件,从com32\modules下找到chain.c32文件,将这三个文件复制到tftp文件夹下面,并新建一个名字为“pxelinux.cfg”的文件夹,pxelinux.cfg文件夹负责存放pxelinux.0的配置文件。

而vesamenu.c32是菜单所需要的文件,chain.c32是从硬盘启动选项中的kenerl文件,作用相当与winxp.0、w2k3.0、w2k.0这三个文件,可以忽略不要,但为了做稍为多小小功能(从硬盘启动),就顺便要吧。

然后再到pxelinux.cfg这个文件夹下,用记事本建立一个无后缀,名字为"default"的空白文件,该文件内容为:

DEFAULTvesamenu.c32

PROMPT0

MENUTITLEPXEBootInstallMenuBywake

MENUBACKGROUNDsplash.png

TIMEOUT200

LABELhdd

MENULABEL^0----BootFromHARDDISK

kernelchain.c32

APPENDhd01

LABELwinxp

MENULABEL^1----BootforInstallWindowsXP  FromNetWork

kernelwinxp.0

LABELwin2k

MENULABEL^2----BootforInstallWindows2000FromNetWork

kernelw2k.0

LABELwin2k3

MENULABEL^3----BootforInstallWindows2003FromNetWork

kernelw2k3.0

简单说明一下,第一行,DEFAULTvesamenu.c32,必须的,因为要用到菜单功能,必须有这个vesamenu.c32文件,具体可以看syslinux中vesamenu.c32所在目录的vesamenu.c文件说明。

MENUTITLEPXEBootInstallMenuBywake表示菜单的标题了,可以取自己喜欢的英文名称。

MENUBACKGROUNDsplash.png 表示菜单后面的背景文件,我这里就放一个名称为splash.png文件。

TIMEOUT200多少毫秒后超时,可以设大一点。

LABELhdd    用来区分其他kernel的,方便自己管理

MENULABEL^0----BootFromHARDDISK 选项菜单的名称,^0表示按数字”0“可以直接跳到该选项

kernelchain.c32  启动时的内核,这个就是从硬盘启动所需要的东西了

APPENDhd01    这里表示从第一个硬盘中的第一个分区启动,根据实际进行修改。

接着的文件就差不多了,不做多解释。

现在我们再配置TFTP这个文件,我的配置就这样了:

由于我的网卡的IP地址是192.168.1.25,所以WINS/DNS服务器就用我的IP地址吧,默认路由也设置为192.168.1.25,启动文件就是pxelinux.0了,还有,请先关闭你所在网络中的DHCP服务器吧,避免IP冲突了。

现在DHCP、TFTP服务器架设完毕。

接下来的任务就是binl这个东东了,具体是干什么的,前面已经说明清楚了。

我这里在windows环境中就用binlsrv.exe这个由国外高手编写的东东了。

由于binlsrv.exe需要从“驱动数据库”中找客户端网卡对应的驱动文件,将匹配客户端网卡的驱动文件名发给客户端,而“驱动数据库”文件我们没有,怎样办呢?

这时要用到ris-linux点击可以下载,(官方的连接不知道为什么失效,自己上传已经下载好的。

)运行ris-linux压缩包里的infparser.py生成网卡驱动信息文件nics.txt,需要安装Python,首先从已经安装好的WindowsXP系统目录下把inf文件夹(一般情况下为C:

\Windows\inf)复制一份,放到存放infparser.py的目录下,然后运行:

infparser.py inf

如果成功运行的话会生成nics.txt跟devlist.cache两个文件,这里要用到的是nics.txt,将它拷入存放binlsrv.exe的目录下即可。

或者你可以用的nics.txt文件:

====================我是分割线,不要复制我呀=============================================

021b8138RTL8139.SYSrtl8139

021b8139RTL8139.SYSrtl8139

0e11ae32netflx3.sysnetflx3

0e11ae34netflx3.sysnetflx3

0e11ae35netflx3.sysnetflx3

0e11ae40netflx3.sysnetflx3

0e11ae43netflx3.sysnetflx3

0e11b011netflx3.sysnetflx3

0e11b012netflx3.sysnetflx3

0e11b030netflx3.sysnetflx3

0e11f130netflx3.sysnetflx3

0e11f150netflx3.sysnetflx3

100b0020FA312nd5.sysFA312

100b0022DP83820.sysdp83820

10110002dc21x4.sysDC21x4

10110009dc21x4.sysDC21x4

1011000fDEFPA.sysDEFPA

10110014dc21x4.sysDC21x4

10110019dc21x4.sysDC21x4

10111065b1cbase.sysb1cbase

1014003eIBMTRP.SYSIBMTRP

10222000pcntpci5.sysPCnet

10222001pcntn5hl.sysPCnetHL

102f0020tbatm155.systbatm155

10390900sisnic.sysSISNIC

10500840W840ND.sysW840ND

10500940w940nd.sysw89c940

107e0008ip5515.sysip5515

108d0001mdgndis5.sysMadgeTRN

108d0004mdgndis5.sysMadgeTRN

108d0005mdgndis5.sysMadgeTRN

108d0007mdgndis5.sysMadgeTRN

108d0008mdgndis5.sysMadgeTRN

10b60002mdgndis5.sysMadgeTRN

10b60003cpqtrnd5.sysCPQTRND5

10b60006mdgndis5.sysMadgeTRN

10b60007mdgndis5.sysMadgeTRN

10b60009mdgndis5.sysMadgeTRN

10b6000amdgndis5.sysMadgeTRN

10b6000bmdgndis5.sysMadgeTRN

10b70001el985n51.sysel985nd5

10b71f1fNetWlan5.sysNetWlan5

10b74500el90xbc5.sysEL90XBC

10b75057el575nd5.sysel575nd5

10b75157el575nd5.sysel575nd5

10b75257el575nd5.sysel575nd5

10b76055EL556ND5.sysEL556ND5

10b76056EL556ND5.sysEL556ND5

10b76560el656nd5.sysel656nd5

10b76562el656nd5.sysel656nd5

10b76564el656cd5.sysel656cd5

10b77646el90xbc5.sysEL90XBC

10b79000el90xnd5.sysEL90X

10b79001el90xnd5.sysEL90X

10b79004el90xbc5.sysEL90XBC

10b79005el90xbc5.sysEL90XBC

10b79006el90xbc5.sy

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1