PXE是由Intel公司開發(fā)的最新技術(shù),工作于Client/Server的網(wǎng)絡模式,支持工作站通過網(wǎng)絡從遠端服務器下載映像,并由此支持通過網(wǎng)絡啟動操作系統(tǒng),在啟動過程中,終端要求服務器分配IP地址,再用TFTP或MTFTP協(xié)議下載一個啟動軟件包到本機內(nèi)存中執(zhí)行,由這個啟動軟件包完成終端(客戶端)基本軟件設置,從而引導預先安裝在服務器中的終端操作系統(tǒng)。PXE可以引導多種操作系統(tǒng)。
PXE最直接的表現(xiàn)是,在網(wǎng)絡環(huán)境下工作站可以省去硬盤,但又不是通常所說的無盤站的概念,因為使用該 技術(shù)的PC在網(wǎng)絡方式下的運行速度要比有盤PC快3倍以上。當然使用PXE的PC也不是傳統(tǒng)意義上的TERMINAL終端,因為使用了PXE的PC并不消耗服務器的CPU,RAM等資源,故服務器的硬件要求極低。
PXE遠程啟動過程分析
基本原理
1) 什么是PXE
PXE(Pre-boot Execution Environment)是由Intel設計的協(xié)議,它可以使計算機通過網(wǎng)絡啟動。協(xié)議分為client和server兩端,PXE client在網(wǎng)卡的ROM中,當計算機引導時,BIOS把PXE client調(diào)入內(nèi)存執(zhí)行,并顯示出命令菜單,經(jīng)用戶選擇后,PXE client將放置在遠端的操作系統(tǒng)通過網(wǎng)絡下載到本地運行。
PXE協(xié)議的成功運行需要解決以下兩個問題:
既然是通過網(wǎng)絡傳輸,那么計算機在啟動時,它的IP地址由誰來配置;
通過什么協(xié)議下載Linux內(nèi)核和根文件系統(tǒng)
對于第一個問題,可以通過DHCP Server解決,由DHCP server來給PXE client分配一個IP地址,DHCP Server是用來給DHCP Client動態(tài)分配IP地址的協(xié)議,不過由于這里是給PXE Client分配IP地址,所以在配置DHCP Server時,需要增加相應的PXE特有配置。
至于第二個問題,在PXE client所在的ROM中,已經(jīng)存在了TFTP Client。PXE Client使用TFTP Client,通過TFTP協(xié)議到TFTP Server上下載所需的文件。
這樣,PXE協(xié)議運行的條件就具備了,下面我們就來看看PXE協(xié)議的工作過程。
2) 工作過程
在上圖中,PXE client是需要安裝Linux的計算機,TFTP Server和DHCP Server運行在另外一臺Linux Server上。Bootstrap文件、配置文件、Linux內(nèi)核以及Linux根文件系統(tǒng)都放置在Linux Server上TFTP服務器的根目錄下。
PXE client在工作過程中,需要三個二進制文件:bootstrap、Linux 內(nèi)核和Linux根文件系統(tǒng)。Bootstrap文件是可執(zhí)行程序,它向用戶提供簡單的控制界面,并根據(jù)用戶的選擇,下載合適的Linux內(nèi)核以及Linux根文件系統(tǒng)。
具體配置過程如下:
首先是安裝必要的服務,DHCPD,TFTP-SERVER,NFS(一般默認就有了)
dhcpd和tftp-server都有對應的rpm,直接安裝就可以了。
# vi /etc/xinetd.d/tftp
=============+==========+===========+============+============
service tftp
{
disable = no (默認是yes,這里改成no,啟用它)
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -u nobody -s /tftpboot //-s 表示用/tftpboot作為tftp目錄的根目錄。
per_source = 11
cps = 100 2
flags = IPv4
}
tftp是由xinted來啟動的,修改完后要記得service xinetd restart
# vi /etc/dhcpd.conf
=============+==========+===========+============+============
ddns-update-style interim;
ignore client-updates;
default-lease-time 21600;
max-lease-time 43200;
authourtative;
next-server 192.168.1.103;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
range 192.168.1.1 192.168.1.100;
default-lease-time 21600;
max-lease-time 43200;
filename “/pxelinux.0”;
option domain-name-servers 202.106.0.20;
}
這里的 pxelinux.0就是上面提到的bootstrap,上面已經(jīng)指定了tftp的根目錄,所以這里用相對路徑。
next-server 192.168.1.103;這句一開始我并沒有加上,當要安裝系統(tǒng)的機器啟動以后,在查找pxelinux.cfg目錄下的配置文件的時候,就死活找不到了。經(jīng)過很長時間的等待,出現(xiàn)一個boot:的提示符,告訴我:can‘t load kernel image:linux,一開始以為是/tftpboot/pxelinux.cfg/default的配置文件有誤,檢查后沒問題。
google了半天,總算查到了一個帖子,說可能是dhcp3.0的一個bug,需要加上這個參數(shù)來指定DHCP SERVER的IP.修改配置文件加入此句后,重啟dhcp,然后再重新啟動客戶機,這次速度大大加快,順利通過。
3 配置支持PXE
# mkdir /tftpboot
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
把LINUX第一張安裝光盤上/image/pxeboot/initrd.img和vmlinuz 以及isolinux/*.msg考到/tftpboot目錄下(*.msg也可以不拷,重點是initrd.img和vmlinuz,沒有內(nèi)核是無法引導的)
# cd /tftpboot
# mkdir pxelinux.cfg
# vi defaultdefault centos5
prompt 1
timeout 30
label centos5
kernel vmlinuz
append ks=nfs:192.168.1.103:/root/inst/ks initrd=initrd.img devfs=nomount ramdisk_size=9216
#append initrd=initrd.img devfs=nomount ramdisk_size=9216
這里的ks=nfs:192.168.1.103:/root/inst/ks 文件是指定kickstart配置文件,可以在安裝中不用人工干預,自動按預設的參數(shù)安裝。實現(xiàn)安裝過程的全自動。
4 配置NFS服務
# vi /etc/exports
/root/inst 192.168.1.0/24(ro,sync) //這里是/root/inst 而不是/root/inst/
# mkdir /home/iso
拷貝安裝LINUX的ISO文件到這個目錄
5 需要開啟的系統(tǒng)服務
/dhcpd/network/nfs/portmap/syslog/tftp/xinetd/
service dhcpd start
service portmap start
service nfs start
最后附上ks文件的內(nèi)容。
install
nfs --server=192.168.1.103 --dir=/root/inst
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto static --ip 192.168.1.220 --netmask 255.255.255.0 --gateway 192.168.1.1 --nameserver 192.168.1.1
#network --device eth0 --bootproto DHCP
rootpw --iscrypted $1$WvFbqnpm$m94fa4AopXI/kfYOYbWMW.
firewall --enabled --port=22:tcp
#firewall --disabled
authconfig --enableshadow --enablemd5
selinux --disabled
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda --append=“rhgb quiet”
clearpart --all
zerombr yes
clearpart --linux --initlabel
part /boot --fstype ext2 --size=256
part / --fstype ext3 --size=8192
part /opt --fstype ext3 --size=8192
part /usr --fstype ext3 --size=16384
part swap --size=4096
part /home --fstype ext3 --size=1 --grow
reboot //加入這行后裝完系統(tǒng)后可以自動重啟,需要注意的是機器的啟動順序不能是網(wǎng)卡優(yōu)先,否則會循環(huán)裝系統(tǒng)。。。。。。。。
%packages --resolvedeps
@ everything
grub
kernel
kernel-devel
e2fsprogs
評論
查看更多