Linux网络安装Centos/windows 2003/xp 并且启动winpe系统

 Linux网络安装Centos/windows 2003/xp 并且启动winpe系统

 

以前已经实现在Windows 2003上无人职守安装XP,SERVER2003,也解决了驱动等各种问题,主要是用2003自带的Windows ris做的,但是有一个问题是,在局域网中,既想安装Windows,又想安装centos,Windows安装需要启动Windows的tftp引导文件,Linux就需要启动pxelinux.0才能启动,所以如果想同时安装,就不能兼顾,需要不停的修改dhcp引导文件,非常麻烦,所以最近花时间学习了Linux的无人职守安装centos,但是能不同在Linux 上实现同时安
装Windows呢,那就需要ris-linux了。既然Linux能安装XP,那也可以通过pxe启动winpe了,原理都差不多,所以继续研究,也实现了linux启动winpe系统。那就不需要经常带个U盘在身上了,也不担心U盘损坏或者丢失了。
Pxe启动顺序如下:
pxelinux.0—> default—> pxe loader(w2k3.0, startrom.n12)—>setup loader(w2k3l, setupldr.exe) —> ntdetect.com(ntdetect.2k3) and winnt.sif(wi2k3.sif) 这个原理一定要了解清楚,否则在设置启动的时候,遇到很多麻烦都很难解决。
实施方案图如下:
┌────────┐
           │    Boot Server   │
           │(DHCP TFTP samba)│
           └───┬────┘
                     │
           ┌───┴───┐
           │     Switch  │
           └───┬───┘
                     │
       ┌─────┴──────┐
       │                             │
┌──┴───┐         ┌───┴───┐
│Client(PxE) |       │Client(PxE) │
 
一、 配置服务器
DHCP配置
1、 安装DHCP
#yum install –y dhcp
2、 编辑dhcp配置文件
#vim /etc/dhcpd.conf
内容如下:
ddns-update-style interim;
ignore client-updates;
allow booting;
allow bootp;
filename                "/pxelinux.0";
next-server             192.168.11.1;
subnet 192.168.11.0 netmask 255.255.255.0 {
range 192.168.11.11 192.168.11.100;
option routers 192.168.11.1;
option subnet-mask 255.255.255.0;
option domain-name "benet.com";
option domain-name-servers 172.16.1.5,172.16.1.7;
#option broadcast-address 192.168.11.1;
default-lease-time 86400;
max-lease-time 172800;
}
注:
一般参数基本一样,下面我说以下几个重要,平时作为dhcp服务器,不常用的几个参数
allow booting;allow bootp;这两句话的意思是能作为pxe的启动服务器,给他们分配ip地址,next-server作用是指定tftp服务器的地址,filename,找到tftp服务器后找下载那个启动文件。
3、启动DHCP服务
#/etc/init.d/dhcpd start
4、配置DHCP为开机启动
#chkconfig –level 345 dhcpd on
 
TFTP配置
1、安装tftp
#yum install xinetd* -y
2、编辑tftp配置文件
#vim /etc/xinetd.d/tftp
内容如下:
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -v -m /tftpboot/rules -s /tftpboot
        disable                 = no
#       per_source              = 11
#       cps                     = 100 2
#       flags                   = IPv4
}
注:
这里选定了/tftpboot为TFTP 服务器的根目录位置。
-m /tftpboot/rules 这里指定一个规则文件,这个文件的作用下文中指出,
-v的作用是把tftp的log详细输出,log文件为/var/log/message,作用为便于调试。
3、 建立/tftpboot/rules文件
#vim /tftpboot/rules
内容如下:
ri ^[a-z]: # Remove “drive letters”
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
这个文件的作用是把所有的查找大写的内容转为小写,由于windows不区分大小写,故统一改成小写。
并且要设置可执行权限
#chmod +x /tftpboot/rules
我刚开始光盘拷贝过去文件,一直不能自动转换成小写,搞的我走了很多弯路,后来在网上一直文章中无义看到,说这个文件需要可执行权限才行。后来加上去之后,真的搞定了。
如果是单独安装centos,上面那个文件可以不需要,但是需要安装WINDOWS就必须添加。
4、 启动tftp服务
# /etc/init.d/xinetd start
http配置
http主要是为了安装centos,我这边安装centos是用的http方式,但是也可以使用其他的方式共享。
1、 安装http
#yum install –y httpd
2、按默认的配置,HTTP 的根目录是 /var/www/html,在里面创建一个目录用来放置CentOS的安装源:
#mkdir -p /var/www/html/centos/5.5/os/x86_64
指明x86_64架构,便于与i386架构的区分。
3、放入光盘,并且挂载
#mount /dev/cdrom /mnt
4、 复制光盘数据到x86_64目录下。
#cp –rf /mnt/* /var/www/html/centos/5.5/os/x86_64
5、 启动http
#/etc/init.d/httpd start
准备Linux安装介质
首先是 TFTP。在上面 tftp 配置章节中,我们指定了 /tftpboot 作为 tftp 的要目录,如果没有则创建之:
#mkdir /tftpboot
把 pxelinux.0 复制到 /tftpboot 里:
#cp /usr/lib/syslinux/pxelinux.0 /tftpboot
把第一张光盘里的 /image/pxeboot/initrd.img 和 vmlinux 复制到 /tftpboot 里:
#cp /mnt/image/pxeboot/initrd.img /tftpboot
#cp /mnt/image/pxeboot/vmlinux /tftpboot
再在 /tftpboot 里创建一个 pxelinux.cfg 目录:
#mkdir /tftpboot/pxelinux.cfg
#cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
修改 /tftpboot/pxelinux.cfg/default 文件:
#vim /tftpboot/pxelinux.cfg/default
内容:
 
prompt 1
timeout 100
default 0
 
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
 
label 0
        localboot 1
 
label 1
        kernel memtest
        append -
 
label 2
        kernel vmlinuz
        append ks=http://192.168.11.1/ks.cfg initrd=initrd.img ksdevice=eth0
label 5
        kernel w2k3.0
 
label 6
        kernel winxp.0
 
label 7
  kernel vmlinuz
  append initrd=initrd.img text
 
label 8
        kernel winpe.0
 
编辑boot.msg文件
#vim /tftpboot/boot.msg
内容如下:
^L
^Xsplash.lss
                ========== Linux Install ==========
 
0.  Local Disk Boot
 
1. Centos5.5-x86-32     2. Centos5.5-x86-64      3. Centos6.2-x86-32
4. Centos6.2-x86-64     5. windows-2003-32      6. windows-XP-32
7. Linux-Test           8. windows-pe
 
^O0f[F1-Linux] [F2-Tools]^O07
 
/tftpboot目录下,必须要要有这个几个文件,没有就从光盘里面拷贝过来。Boot.msg;initrd.img;param.msg;splash.lss;vmlinuz。
 
Linux自动安装应答文件设置
编辑ks.cfg文件
ks.cfg:
# For CentOS 5.5
# Kickstart file automatically generated by anaconda.
 
 
install
url --url http://192.168.11.1/centos/5.5/os/x86_64
#url --url http://centos.ustc.edu.cn/centos/5.5/os/x86_64
lang zh_CN.UTF-8
langsupport --default=zh_CN.UTF-8 zh_HK.UTF-8 zh_CN.UTF-8 zh_SG.UTF-8 zh_TW.UTF-8 en_US.UTF-8
keyboard us
skipx
network --onboot yes --bootproto dhcp
rootpw --iscrypted $1$469e8jRa$0UsjnjgUqWOhd/8oLDvsw0
user --name=xia
firewall --enabled --port=5901:tcp --ssh --http --smtp
firstboot --disable
authconfig --enableshadow --enablemd5
selinux --enforcing
services --disabled bluetooth,autofs,cups,haldaemon,hidd,kudzu,netfs,nfslock,pcscd,portmap,rawdevices,rpcgssd,rpcidmapd,sendmail --enabled ntpd
timezone Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append="rhgb quiet" --md5pass=$1$kuVpr/$lp6vc5MhJx40q1f3AGJxR.
reboot
zerombr
 
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
## 这里适合只有一个硬盘
#clearpart --all --drives=sda
#part /boot --fstype ext3 --size=100 --ondisk=sda
#part pv.7 --size=0 --grow --ondisk=sda
#volgroup VolGroup00 --pesize=32768 pv.7
#logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=10240 --grow
#logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=4096
## 这里适合两个硬盘需要组成一个软件Raid1的情况
clearpart --all
part raid.0 --size=100 --ondisk=sda
part raid.1 --size=100 --ondisk=sdb
part raid.2 --size=10240 --grow --ondisk=sda
part raid.3 --size=10240 --grow --ondisk=sdb
raid /boot --fstype ext3 --level=RAID1 --device=md0 raid.0 raid.1
raid pv.4 --fstype "physical volume (LVM)" --level=RAID1 --device=md1 raid.2 raid.3
volgroup VolGroup00 --pesize=32768 pv.4
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=10240 --grow
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=4096
 
%packages
@editors
@text-internet
@chinese-support
@core
@base
vnc-server
twm
xterm
screen
sysstat
keyutils
trousers
fipscheck
device-mapper-multipath
ntp
-rwho
-rusers
yum-fastestmirror
 
#%post
#(# Note that in this example we run the entire %post section as a subshell for logging.
#wget http://192.168.11.1/init/init.sh -O /root/init.sh
#chmod +x /root/init.sh
#/root/init.sh
#chmod -x /root/init.sh
#) 1>/root/post_install.lg 2>&1
如果你有其它分区方案可根据自己的需要修改,切勿复制至你的配置里面。
把配置好的 ks.cfg  文件复制到 /var/www/html 目录。
刚开始ks.cfg文件也弄的我头大,但是要想Linux自动安装就全靠它了,详细文档,可以网上找找,我这里给一个链接:我以前放入空间的一个文档。
http://user.qzone.qq.com/369986957/infocenter#!app=2&via=QZ.HashRefresh&pos=1344397309
 
现在Linux可以从网络安装了,客户端从pxe启动,选择菜单栏,选择自己需要安装的系统,但是现在还不能实现安装Windows,启动pe,如果需要,继续看文档。Linux可以自己添加不同的OS进去。
 
配置网络Windows 2003 ,XP
 
安装Linux是用http的模式,但是安装Windows,就必须要用共享方式了。
配置samba服务器
1、安装samba服务器
#yum install –y samba*
2、 编辑samba配置文件
#vim /etc/samba/smb.conf
内容如下:
[global]
null passwords = true
workgroup = BENET
server string = Samba Server
security = share
load printers = no
disable spoolss = yes
debug level = 2
log file = /var/log/samba/%m.log
max log size = 0
dns proxy = no
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
[wininstall]
path = /tftpboot
browsable = true
read only = yes
writable = yes
guest ok = Yes
3、 启动服务器
#/etc/init.d/smb restart
 
在windows下可以通过expand解压缩光盘中的文件,由于linux下面没有这个工具,但是有人写了一个叫cabextract的工具可以解压windows光盘中的压缩文件,具体可以在http://www.cabextract.org.uk/下载到你所需的版本,
由于我采用的centos 5.5 64位版,为简单着想我安装的是rpm包,具体操作如下
1)下载
#wget http://www.cabextract.org.uk/cabextract-1.2-1.i386.rpm
2)安装
#rpm -ivh cabextract-1.2-1.i386.rpm
上传windows 2003,XP的iso镜像或者光盘中的内容到服务器的一个目录,这里我采用上传一个windows 2003的iso镜像到tftpboot目录下。并把光盘挂载到/tftpboot的win2k3与winxp目录下
 
1) 分别建立win2k3目录与winxp
#mkdir /tftpboot/win2k3
#mkdir /tftpboot/winxp
2)挂载iso文件到/mnt目录下
#mount  /dev/cdrom /mnt
记得先将刚才的Linux光盘先卸载掉。
3)为方便我们往后面往里面添加驱动或者添加启动后的脚本文件,我们把光盘中的内容复制到/tftpboot下的win2k3目录下
#cp -r /mnt/* /tftpboot/win2k3
拷贝完成之后,也想XP光盘数据也拷贝winxp目下。
#cp -r /mnt/* /tftpboot/winxp
 
 
如下引导文件是根据我实际情况修改的, 具体可以查阅:
http://oss.netfarm.it/guides/ris-linux.php
 
分别配置windows 2003与XP的引导。
Windows 2003配置如下:一行一个命令
cd /tftpboot
cabextract win2k3/i386/startrom.n1_
sed -i -e 's/NTLDR/W2K3L/gi' startrom.n12
mv startrom.n12 /tftpboot/w2k3.0
cabextract win2k3/i386/setupldr.ex_
sed -i -e 's/winnt\.sif/wi2k3\.sif/gi' setupldr.exe
sed -i -e 's/ntdetect\.com/ntdetect\.2k3/gi' setupldr.exe
mv setupldr.exe /tftpboot/w2k3l
cp win2k3/i386/ntdetect.com /tftpboot/ntdetect.2k3
 
Windows XP配置如下:一行一个命令
cd /tftpboot
cabextract winxp/i386/startrom.n1_
sed -i -e 's/NTLDR/XPLDR/gi' startrom.n12
mv startrom.n12 /tftpboot/winxp.0
cabextract winxp/i386/setupldr.ex_
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 /tftpboot/XPLDR
cp win2k3/i386/ntdetect.com /tftpboot/ntdetect.wxp
 
引导文件搞定了之后,那就需要配置应答文件了,如果不需要自动安装XP,2003,配置如下就可以引导蓝色界面了。 (编辑wi2k3.sif)
[data]
floppyless = "1"
msdosinitiated = "1"
; Needed for second stage
OriSrc=\'#\'" /div>
OriTyp = "4"
LocalSourceOnCD = 1
DisableAdminAccountOnDomainJoin = 1
 
[SetupData]
OsLoadOptions = "/fastdetect"
; Needed for first stage
SetupSourceDevice = "\Device\LanmanRedirector\YOUR_SERVER_NAME\YOUR_SERVER_SHARE\win2k3"
 
[UserData]
ComputerName = *
; if needed
;ProductID=
 
但是要想实现驱动问题,自动分区,自动输入序列号等,就可以按我的下面的就可以了。
#vim wi2k3.sif
[data]
AutoPartition = "1"
floppyless = "1"
msdosinitiated = "1"
; Needed for second stage
OriSrc=\'#\'" /div>
OriTyp = "4"
LocalSourceOnCD = "1"
DisableAdminAccountOnDomainJoin = "1"
 
[SetupData]
OsLoadOptions = "/fastdetect"
SetupSourceDevice = "\Device\LanmanRedirector\192.168.11.1\wininstall\win2k3"
 
[Unattended]
    UnattendMode=FullUnattended
    OemSkipEula=Yes
    DriverSigningPolicy=Ignore
    NonDriverSigningPolicy=Igonre
    OemPreinstall=no
    TargetPath=\WINDOWS
    FileSystem=LeaveAlone
    NtUpgrade=No
    OverwriteOemFilesOnUpgrade=No
 
[GuiUnattended]
    AdminPassword=*************
    EncryptedAdminPassword=No
    OEMSkipRegional=1
    TimeZone="220"
    OemSkipWelcome=1
 
[UserData]
    ProductKey=JCGMJ-TC669-KCBG7-HB8X2-FXG7M
    FullName="He Haijun"
    OrgName="LEG3S"
    ComputerName=*
 
[LicenseFilePrintData]
    AutoMode=PerServer
    AutoUsers=999
 
[RegionalSettings]
    LanguageGroup=9,10
 
[SetupMgr]
    DistFolder=C:\windist
    DistShare=windist
 
[Identification]
JoinWorkgroup=benet
 
[Networking]
    InstallDefaultComponents=Yes
    ProcessPageSections=Yes
 
[RemoteInstall]
Repartition=Yes
 
 
上面是WINDOWS 2003的自动应答文件,如下是XP的自动应答文件。
#vim winxp.sif
[data]
    AutoPartition= "1"
    MsDosInitiated= "1"
;    UnattendedInstall="Yes"
    floppyless="1"
    OriSrc=\'#\'" /div>
    OriTyp= "4"
    LocalSourceOnCD= 1
 
[SetupData]
    OsLoadOptions= "/fastdetect"
    SetupSourceDevice= "\Device\LanmanRedirector\192.168.11.1\wininstall\winxp"
 
[Unattended]
    UnattendMode=FullUnattended
    OemSkipEula=Yes
    DriverSigningPolicy=Ignore
    NonDriverSigningPolicy=Igonre
;    OemPreinstall=YES
;OemPnpDriversPath="Drivers\NIC;Drivers\Audio\ADI;Drivers\Audio\ALI;Drivers\Audio\Media;Drivers\Audio\Conexant;Drivers\Audio\Creative;Drivers\Audio\HDAudio;Drivers\Audio\nVIDIA;Drivers\Audio\Other;Drivers\Audio\Realtek;Drivers\Audio\Sigmatel;Drivers\Audio\SiS;Drivers\Audio\VIA;Drivers\Camera;Drivers\Chipset;Drivers\MassSto;Drivers\Modem;Drivers\Others;Drivers\Display"
    TargetPath=\WINDOWS
    FileSystem=LeaveAlone
    NtUpgrade=No
    OverwriteOemFilesOnUpgrade=No
UnattendSwitch=yes
WaitForReboot=No
 
[Display]
BitsPerPel=32
Xresolution=800
Yresolution=600
 
[Components]
msmsgs=off
msnexplr=off
freecell=off
hearts=off
minesweeper=off
pinball=off
solitaire=off
spider=off
zonegames=off
 
[GuiRunOnce]
 
[Shell]
DefaultStartPanelOff=Yes
 
[GuiUnattended]
AdminPassword="**************"
    EncryptedAdminPassword=NO
    OEMSkipRegional=1
    TimeZone=%TIMEZONE%
    OemSkipWelcome=1
 
[UserData]
    ProductKey=DG8FV-B9TKY-FRT9J-6CRCC-XPQ4G
    FullName="He Haijun"
    OrgName="LEG3S"
    ComputerName=%MACHINENAME%
 
[TapiLocation]
    CountryCode=86
    Dialing=Pulse
    AreaCode=755
    LongDistanceAccess="99"
 
[RegionalSettings]
    LanguageGroup=9,10
    Language=00000804
 
[SetupMgr]
    DistFolder=C:\windist
    DistShare=windist
 
[Identification]
    JoinWorkgroup=benet
    DoOldStyleDomainJoin=no
 
[Networking]
    InstallDefaultComponents=Yes
    ProcessPageSections=Yes
 
[RemoteInstall]
Repartition=Yes
 
如上二个自动应答文件具体的意思,我这里不多说,应该涉及的东西太多了,自己可以网上查阅,其实Linux跟Windows的自动应答文件差不多,直接拷贝过来修改小地方是可以直接用的,因为我原来的Windows ris已经能实现自动安装系统,所以我直接拷贝到Linux里面也是可以直接用了。
 
经过上面的步骤,发现到了蓝色界面一会之后就又报错了,提示找不到网卡驱动,那OK,如下是需要将网卡驱动加载进去。
由于要驱动网卡,需要一个binlserver, BINL读取所有新的与网络接口卡相关的 .inf 文件,并在映像中创建 .pnf 文件。
配置binl server,用来加载网卡驱动
1)服务器下载
wget http://oss.netfarm.it/guides/ris-linux-0.4.tar.gz
2)解压
tar xf ris-linux-0.4.tar.gz
3)执行
#cd ris-linux-0.4
#./infparser.py /tftpboot/win2k3/i386/
#./binlsrv.py –d
记得一定要讲驱动文件拷贝到I386目录里面去,而且XP也是要做同样的操作。
 
现在可以网络安装了,但是安装完成之后,没有任何驱动,这时跟Windows一样,在I386同一个目录下建立$oem$文件夹,并且里面拷贝所有的驱动过来,然后修改sif应答文件就可以了。
现在就已经实现网络安装Windows 2003跟XP了,如下是实现PXE启动winpe系统。
 
Linux PXE启动winpe
Pxe网络启动需要如下5个文件就可。
Ntdetect.com
Ntldr
Startrom.n12
Winnt.sif
Winpe.iso
 
网上还有很多其他版本说可以启动pe,我这边测试了,都可能是引导文件有错,一直都报错,最终失败,如上的这几个文件我试验过,是可以的,如果有需要的,联系我,我将单独打包发给你们。
将如上5个文件通过ftp上传到tftpboot目录下。并且编辑winnt.sif文件。
 
 
备注:有部分语句跟代码是直接copy网上或者从服务器上拷贝出来的。请见谅。
 
 
 
 
 
2012/08/14
何海军
 
分享至
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别: linux┆阅读( 0)┆评论( 0) ┆ 返回博主首页┆ 返回博客首页
下一篇 wordpress建立的博客

你可能感兴趣的:(linux,windows,pxe,网络安装)