如何在 Red Hat Linux 下建立 PXE Server
環境需求:
1.) 一台 DHCP
Server(eg: 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 的官方網頁
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