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 = "\\YOUR_SERVER_NAME\YOUR_SHARE_NAME\win2k3\i386"

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 = "\\192.168.11.1\wininstall\win2k3\I386"

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= "\\192.168.11.1\wininstall\winxp\i386"

    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網上或者從服務器上拷貝出來的。請見諒。

 

 

需要合作交流的可以加QQ羣:163935235

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章