PXE是由Intel公司開(kāi)發(fā)的最新技術(shù),工作于Client/Server的網(wǎng)絡(luò)模式,支持工作站通過(guò)網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像,并由此支持通過(guò)網(wǎng)絡(luò)啟動(dòng)操作系統(tǒng),在啟動(dòng)過(guò)程中,終端要求服務(wù)器分配IP地址,再用TFTP或MTFTP協(xié)議下載一個(gè)啟動(dòng)軟件包到本機(jī)內(nèi)存中執(zhí)行,由這個(gè)啟動(dòng)軟件包完成終端(客戶端)基本軟件設(shè)置,從而引導(dǎo)預(yù)先安裝在服務(wù)器中的終端操作系統(tǒng)。PXE可以引導(dǎo)多種操作系統(tǒng)。
PXE最直接的表現(xiàn)是,在網(wǎng)絡(luò)環(huán)境下工作站可以省去硬盤(pán),但又不是通常所說(shuō)的無(wú)盤(pán)站的概念,因?yàn)槭褂迷摗 〖夹g(shù)的PC在網(wǎng)絡(luò)方式下的運(yùn)行速度要比有盤(pán)PC快3倍以上。當(dāng)然使用PXE的PC也不是傳統(tǒng)意義上的TERMINAL終端,因?yàn)槭褂昧薖XE的PC并不消耗服務(wù)器的CPU,RAM等資源,故服務(wù)器的硬件要求極低。
PXE遠(yuǎn)程啟動(dòng)過(guò)程分析
基本原理
1) 什么是PXE
PXE(Pre-boot Execution Environment)是由Intel設(shè)計(jì)的協(xié)議,它可以使計(jì)算機(jī)通過(guò)網(wǎng)絡(luò)啟動(dòng)。協(xié)議分為client和server兩端,PXE client在網(wǎng)卡的ROM中,當(dāng)計(jì)算機(jī)引導(dǎo)時(shí),BIOS把PXE client調(diào)入內(nèi)存執(zhí)行,并顯示出命令菜單,經(jīng)用戶選擇后,PXE client將放置在遠(yuǎn)端的操作系統(tǒng)通過(guò)網(wǎng)絡(luò)下載到本地運(yùn)行。
PXE協(xié)議的成功運(yùn)行需要解決以下兩個(gè)問(wèn)題:
既然是通過(guò)網(wǎng)絡(luò)傳輸,那么計(jì)算機(jī)在啟動(dòng)時(shí),它的IP地址由誰(shuí)來(lái)配置;
通過(guò)什么協(xié)議下載Linux內(nèi)核和根文件系統(tǒng)
對(duì)于第一個(gè)問(wèn)題,可以通過(guò)DHCP Server解決,由DHCP server來(lái)給PXE client分配一個(gè)IP地址,DHCP Server是用來(lái)給DHCP Client動(dòng)態(tài)分配IP地址的協(xié)議,不過(guò)由于這里是給PXE Client分配IP地址,所以在配置DHCP Server時(shí),需要增加相應(yīng)的PXE特有配置。
至于第二個(gè)問(wèn)題,在PXE client所在的ROM中,已經(jīng)存在了TFTP Client。PXE Client使用TFTP Client,通過(guò)TFTP協(xié)議到TFTP Server上下載所需的文件。
這樣,PXE協(xié)議運(yùn)行的條件就具備了,下面我們就來(lái)看看PXE協(xié)議的工作過(guò)程。
2) 工作過(guò)程
在上圖中,PXE client是需要安裝Linux的計(jì)算機(jī),TFTP Server和DHCP Server運(yùn)行在另外一臺(tái)Linux Server上。Bootstrap文件、配置文件、Linux內(nèi)核以及Linux根文件系統(tǒng)都放置在Linux Server上TFTP服務(wù)器的根目錄下。
PXE client在工作過(guò)程中,需要三個(gè)二進(jìn)制文件:bootstrap、Linux 內(nèi)核和Linux根文件系統(tǒng)。Bootstrap文件是可執(zhí)行程序,它向用戶提供簡(jiǎn)單的控制界面,并根據(jù)用戶的選擇,下載合適的Linux內(nèi)核以及Linux根文件系統(tǒng)。
具體配置過(guò)程如下:
首先是安裝必要的服務(wù),DHCPD,TFTP-SERVER,NFS(一般默認(rèn)就有了)
dhcpd和tftp-server都有對(duì)應(yīng)的rpm,直接安裝就可以了。
# vi /etc/xinetd.d/tftp
=============+==========+===========+============+============
service tftp
{
disable = no (默認(rèn)是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來(lái)啟動(dòng)的,修改完后要記得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的根目錄,所以這里用相對(duì)路徑。
next-server 192.168.1.103;這句一開(kāi)始我并沒(méi)有加上,當(dāng)要安裝系統(tǒng)的機(jī)器啟動(dòng)以后,在查找pxelinux.cfg目錄下的配置文件的時(shí)候,就死活找不到了。經(jīng)過(guò)很長(zhǎng)時(shí)間的等待,出現(xiàn)一個(gè)boot:的提示符,告訴我:can‘t load kernel image:linux,一開(kāi)始以為是/tftpboot/pxelinux.cfg/default的配置文件有誤,檢查后沒(méi)問(wèn)題。
google了半天,總算查到了一個(gè)帖子,說(shuō)可能是dhcp3.0的一個(gè)bug,需要加上這個(gè)參數(shù)來(lái)指定DHCP SERVER的IP.修改配置文件加入此句后,重啟dhcp,然后再重新啟動(dòng)客戶機(jī),這次速度大大加快,順利通過(guò)。
3 配置支持PXE
# mkdir /tftpboot
# cp /usr/lib/syslinux/pxelinux.0 /tftpboot
把LINUX第一張安裝光盤(pán)上/image/pxeboot/initrd.img和vmlinuz 以及isolinux/*.msg考到/tftpboot目錄下(*.msg也可以不拷,重點(diǎn)是initrd.img和vmlinuz,沒(méi)有內(nèi)核是無(wú)法引導(dǎo)的)
# 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配置文件,可以在安裝中不用人工干預(yù),自動(dòng)按預(yù)設(shè)的參數(shù)安裝。實(shí)現(xiàn)安裝過(guò)程的全自動(dòng)。
4 配置NFS服務(wù)
# vi /etc/exports
/root/inst 192.168.1.0/24(ro,sync) //這里是/root/inst 而不是/root/inst/
# mkdir /home/iso
拷貝安裝LINUX的ISO文件到這個(gè)目錄
5 需要開(kāi)啟的系統(tǒng)服務(wù)
/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)后可以自動(dòng)重啟,需要注意的是機(jī)器的啟動(dòng)順序不能是網(wǎng)卡優(yōu)先,否則會(huì)循環(huán)裝系統(tǒng)。。。。。。。。
%packages --resolvedeps
@ everything
grub
kernel
kernel-devel
e2fsprogs
評(píng)論
查看更多