一、PXE
Preboot ExecuteEnvironment:支持工作站通過網絡從遠端服務器下載映像,並由此支持通過網絡啓動操作系統,在啓動過程中,終端要求服務器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial file transfer protocol)協議下載一個啓動軟件包到本機內存中執行,由這個啓動軟件包完成Client端自動化基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。PXE可以引導多種操作系統,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。
二、PXE工作過程
下圖中介紹了Linux中自動安裝系統的詳細工作過程:
基本原理及工作流程:
首先,在客戶端主機的網卡要支持網絡引導,當開機時網卡就會激活當中的程序,自行通過網絡向DHCP請求IP地址,並配置在自己的網卡上。
其次,DHCP服務器迴應給我們的主機,分配了IP地址,掩碼什麼的,再讓DHCP服務器告訴我們的客戶端主機tftp服務器在什麼位置。
接着,客戶端主機就去請求tftp服務器,當然,這裏的DHCP服務器和tftp服務器可以是同一臺,也可以不是同一臺,看情況而定。
而後,tftp服務器就會給客戶端主機提供一個pxe的文件、這個文件就是pxelinux.0,他相當於我們的bootloader、而這個文件是由syslinux這個程序包提供的。
再則,客戶端主機利用tftp服務器提供的pxelinux.0這個文件,再次嘗試到tftp服務器上獲取內核,因爲要啓動安裝就要啓用引導內核。
之後,當引導內核啓動後,客戶端主機通過改名後的default(由pxelinux.0改名而來)文件成功的引導Linux安裝內核後,通過httpd服務獲取該文件中指定的自動應答文件ks.cfg所在位置,根據該位置請求下載該文件。
最後,將ks.cfg文件下載回來後,通過該文件找到ks.cfg文件的配置請求下載安裝過程所需要的軟件包,這樣就可以實現生動化安裝了。
三、PXE實驗環境
1.實驗環境
服務端:
IP:192.168.0.15
關閉iptables,selinux
注:默認情況下,系統存在鏡像,並且鏡像已經掛載/media下
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G 2.6G 15G 16% /
tmpfs 495M 144K 495M 1% /dev/shm
/dev/sda1 291M 33M 243M 12% /boot
/dev/sr0 4.2G 4.2G 0 100% /media/CentOS_6.5_Final
客戶端:
安裝Centos6.5系統
2.DHCP服務(爲客服端分配IP地址,並告訴客服端tftp服務位置)
# yum install dhcp -y
# chkconfig dhcpd on
# cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
# vim /etc/dhcp/dhcpd.conf
此配置只是爲客戶端分配地址,只需要配置IP段,掩碼,地址池,具體配置看個人需求
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
option domain-name "test.cn";
option domain-name-servers 8.8.8.8;
range 192.168.0.110 192.168.0.120;
option routers 192.168.0.3;
filename "pxelinux.0"; ######指定PXE服務文件
next-server 192.168.0.15; ######指定tftp服務器
}
3.tftp/xinetd服務
# chkconfig xinetd on
# vim /etc/xinetd.d/tftp
開啓此項服務,主要是提供pxelinux.0等文件
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #########將yes改爲no,開啓tftp服務
per_source = 11
cps = 100 2
flags = IPv4
}
# cp /media/CentOS_6.5_Final/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
# cp /media/CentOS_6.5_Final/isolinux/{boot.msg,splash.jpg,vesamenu.c32} /var/lib/tftpboot/
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# cd /var/lib/tftpboot/
# mkdir pxelinux.cfg
#cp /media/CentOS_6.5_Final/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
#chmod 777 pxelinux.cfg -R ####準確權限不知
# pwd
/var/lib/tftpboot/pxelinux.cfg
# ls
default
說明:
這些文件爲系統初始化安裝必須文件,包括引導,驅動,安裝,背景圖片等
4.http服務
# rpm -q httpd
httpd-2.2.15-26.el6.centos.x86_64
# mkdir /var/www/html/Centos6.5
# mount /dev/sr0 /var/www/html/Centos6.5
# /etc/init.d/httpd restart
# chkconfig httpd on
瀏覽器訪問http://192.168.0.15/Centos6.5/
5.ks.cfg文件
# yum install system-config-kickstart.noarch -y
# system-config-kickstart ###############通過客戶端定製ks文件
# cp /root/ks.cfg /var/www/html/
6.指定ks.cfg文件位置
# vim /var/lib/tftpboot/pxelinux.cfg/default
18 label linux
19 menu label ^Install or upgrade an existing system
20 menu default
21 kernel vmlinuz
22 append initrd=initrd.img ks=http://192.168.0.15/ks.cfg
7.在客戶端安裝測試
說明:
PXE爲自動安裝過程,分必安裝與非必安裝,若必安裝沒有配置完,則需在安裝過程中手工干預。
ks.cfg文件組成:
命令行部分
url --url="http://192.168.0.15/Centos6.5"
軟件包部分
@base 軟件包組
http 軟件
-http 不安裝
3. 腳本部分
此部分爲安裝完系統之後自己定製的腳本
參考:
http://tanxw.blog.51cto.com/4309543/1371355
http://www.2cto.com/net/201602/490925.html
http://xiexiaojun.blog.51cto.com/2305291/1735097