如何在 Red Hat Linux 下建立 PXE Server

環境需求:
1.) 
一台 DHCP Servereg: IP 192.10.0.1)和一台 tftp server (eg: IP 192.10.0.1) 
一台具有 PXE 開機功能網路卡的 Client(請先確定 PXE 功能已經在 BIOS 下開啟,並設為第一開機順位)
2.) 
作業系統我選擇的是 Red Hat Enterprise Linux 3 版本
================================================================
Step1 : tftp server 
的設定
1. 
編輯 “/etc/xinetd.d/tftp” 並將 server 開啟
#vi /etc/xinetd.d/tftp

----------------------------------------------------------------------
service tftp
                {
                 socket_type             = dgram
                 protocol                = udp
                 wait              = yes
                 user                   = root
                 server                  = /usr/sbin/in.tftpd
                 server_args             = -s /tftpboot        

                 disable                    = no

                 per_source             =  11

                 CPUS                    =  100 2

                 flags                       =  IPv4
                 }

----------------------------------------------------------------------

或者你可以用下面的指令將 tftp 功能開啟

#chkconfig tftp on

 

2.啟動 tftp servicee

# service xinetd restart
   

3.複製 RedHat 光碟所有的內容 (這邊我是用 RedHat Enterprise Linux Advanced server 3.0 Update 2 為範例)
#mkdir  /var/ftp/as3u2
#cp /mnt/cdrom/*  /var/ftp/as3u2/ ( 1CD )
#cp /mnt/cdrom/*  /var/ftp/as3u2/ ( 2CD )
#cp /mnt/cdrom/*  /var/ftp/as3u2/ ( 3CD )

#cp /mnt/cdrom/*  /var/ftp/as3u2/ ( 4CD )

PS: When the system asks for "replace file? "  please answers "No"

 

4.將開機所需的 kernel  initrd 檔案複製到 "/tftpboot/linux-install/as3u2 目錄下
#mkdir /tftpboot/linux-install/as3u2
#cp /var/ftp/as3u2/image/pxeboot/vmlinuz  /tftp/linux-install/as3u2

#cp /var/ftp/as3u2/image/pxeboot/initrd.img  /tftp/linux-install/as3u2

 

5.編輯 /tftpboot/linux-install/pxelinux.cfg/default
#vi /tftpboot/linux-install/pxelinux.cfg/default

--------------------------------------------------------

default 0
timeout 2000
prompt 1
display msgs/boot.msg
label 1
  kernel as3u2/vmlinuz
  append initrd=as3u2/initrd.img ramdisk_size=65536
--------------------------------------------------------

 

6.編輯 /tftpboot/linux-install/msgs/boot.msg 

#vi /tftpboot/linux-install/msgs/boot.msg 

--------------------------------------------------------

1.  Install RHAS3-QU2

--------------------------------------------------------

 

7.編輯 /etc/rc.d/rc.local 必須加入下面這一行

#vi /etc/rc.d/rc.local 

--------------------------------------------------------
 route add -host 255.255.255.255 eth0

--------------------------------------------------------

 

8.安裝方式

 FTP 來安裝

請確定 ftp 的服務已經開啟
#chkconfig vsftpd on

#service vsftpd restart

 

NFS 來安裝

編輯 "/etc/exports" 並將 "/var/ftp/as3u2" 目錄分享

#vi /etc/exports

--------------------------------------------------------
/var/ftp/as3u2      192.10.0.*(ro,all_squash)

--------------------------------------------------------

並確定 NFS 的服務已經開啟

#chkconfig nfs on

#service nfs start

 

HTTP 來安裝

編輯 "/etc/httpd/conf/httpd.conf" 並將 Document 設為 /var/ftp

#vi /etc/httpd/conf/httpd.conf

--------------------------------------------------------
Document Root "/var/ftp"

--------------------------------------------------------

並確定 HTTP 的服務已經開啟

#chkconfig httpd on
#service httpd restart 

 

Step2 : DHCP Server 
編輯 /etc/dhcpd.conf

#vi /etc/dhcpd.conf

--------------------------------------------------------
#iddns-update-style interim;
ddns-update-style none;
ignore client-updates;

allow booting;
allow bootp;
class "pxeclients" {
match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
     next-server 192.10.0.1;
     filename "linux-install/pxelinux.0";
}

subnet 192.10.0.0 netmask 255.255.255.0 {
 range 192.10.0.150 192.10.0.180;
 option broadcast-address 192.10.0.255;
 option routers 192.10.0.1;
 option subnet-mask 255.255.255.0;
}

--------------------------------------------------------

並確定 DHCP 的服務已經開啟

#chkconfig dhcpd on

#service dhcpd start

 

在整個 DHCP 設定檔中,最重要的就是 filename "linux-install/pxelinux.0"

整個網路開機顯示畫面,流程控制都由 pxelinux.0 來管理,關於更多有關於 pxelinux.0 ,請參考 PXELinux 的官方網頁

http://syslinux.zytor.com/

 

Step 3: The PXE clients
1.
將具有 PXE 功能網路卡的 client 開機

2. 並從 PXE 開機

3. 選擇你想要安裝的作業系統,如果你有參數可以在這邊加入.
Begin Downloading linux kernel image and initrd image ……..

此時就開始安裝作業係統
4.
你可以選擇 FTP , NFS  HTTP 等方式來安裝

5. 至於 server IP 就是 192.10.0.1,我將光碟內容都放在 192.10.0.1:/var/ftp/ 目錄下 

至於目錄根據不同的方式有所不同
使用 FTP 方式的目錄:/as3u2
使用 NFS 方式的目錄:/var/ftp/as3u2

使用 HTTP 方式的目錄 : /as3u2

6. 接下來的安裝過程就和一般光碟安裝一樣.

 

Step 4: 其他 Linux Distribution
I.SuSE powered by UnitedLinux
步驟同 RedHat Linux kernel  initrd.img 的位址在 SuSE 的第一片 CDROM  /boot/loader/ 目錄中 
/boot/loader/linux 
kernel
/boot/loader/initrd
initrd.img

SuSE 有一點要注意的是要加 vga 的參數

ex:

label 2
  kernel sles9/linux
  append initrd=sles9/initrd ramdisk_size=65536 vga=0x317 splash=silent showpts 

這樣安裝時才有 GUI 的模式

note:如果你使用的是 SuSE Linux Enterprise Server 9 CDs 時還要修改一個檔 "var/ftp/sles9/media.1/media" 才能使用網路安裝.

#vi /var/ftp/sles9/media.1/media

---------------------------------------------------------------

SuSE Linux AG

20040702201519

1

MEDIA1 SUSE LINUX ENTERPRISE Server 9 CD1

--------------------------------------------------------------

 

II.Turbo Linux

步驟同 RedHat Linux kernel  initrd.img 的位址在 /images/network.img 檔案中

因為 network.img image 檔所以必須用 mount -o loop 才能看到 kernel initrd.img 檔案

#mount -o loop /images/network.img /mnt

/mnt 目錄下可以看到 vmlinuz(Linux kernel)  initrd.img(initrd image).

Turbo 有一點要注意的是要加 ramdisk_size 的參數 .

因為你在安裝時如果採用 FTP,  turbo linux 會因為 ramdisk size 大小問題而無法載入.

Turbo 7 Linux ramdisk_size 要定設為 16384

Turbo 8 Linux ramdisk_size 要定設為 21000

ex:

label 3
  kernel turbo8/vmlinuz
  append initrd=turbo8/initrd.img ramdisk_size=21000