前言:PXE(preboot execute environment,預啟動執行環境)是由Intel公司開發的最新技術,工作于Client/Server的網絡模式,支援工作站通過網絡從遠端伺服器下載下傳映像,并由此支援通過網絡啟動作業系統,在啟動過程中,終端要求伺服器配置設定IP位址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協定下載下傳一個啟動軟體包到本機記憶體中執行,由這個啟動軟體包完成終端(用戶端)基本軟體設定,進而引導預先安裝在伺服器中的終端作業系統。
PXE工作原理
- Client向PXE Server上的DHCP發送IP位址請求消息,DHCP檢測Client是否合法(主要是檢測Client的網卡MAC位址)。
- 如果合法則傳回Client的IP位址,同時将啟動檔案pxelinux.0的位置資訊一并傳送給Client
- Client向PXE Server上的TFTP發送擷取pxelinux.0請求消息,TFTP接收到消息之後再向Client發送pxelinux.0大小資訊。
- 試探Client是否滿意,當 TFTP收到Client發回的同意大小資訊之後,正式向Client發送pxelinux.0
- Client執行接收到的pxelinux.0檔案
- Client向TFTP Server發送針對本機的配置資訊檔案(在TFTP 服務的 pxelinux.cfg目錄下),TFTP将配置檔案發回Client。
- 繼而Client根據配置檔案執行後續操作。
- Client向TFTP發送Linux核心請求資訊,TFTP接收到消息之後将核心檔案發送給Client
- Client向TFTP發送根檔案請求資訊,TFTP接收到消息之後傳回Linux根檔案系統
- Client啟動Linux核心
- Client下載下傳安裝源檔案,讀取自動化安裝腳本
具體的實驗安裝步驟
1.安裝前準備:關閉防火牆和SELINUX,DHCP伺服器靜态IP
iptables -F setenforce 0 # 隻是臨時有效,永久有效更改配置檔案
2.安裝相關軟體包
yum install httpd tftp-servier dhcp syslinux # 有的系統安裝的是syslinux-nonlinux
3.配置檔案共享服務和yum源
systemctl enable httpd
systemctl start httpd
mkdir /var/www/html/centos/7
mount /dev/sr0/ /var/www/html/centos/7
4.準備kickstart檔案
在這裡我們用系統建立的ks檔案做為模闆來進行修改,下面列舉幾個關鍵的字段資訊
vim /var/www/html/centos/ks7.cfg # ks7.cfg檔案存放在httpe伺服器上,注意權限
# Use CDROM installation media
url --url=http://ip位址/centos/7 # yum指定的路徑
# Use graphical install
text #字元界面安裝
# Network information
network --bootproto=dhcp --device=ens33 --onboot=on --ipv6=auto --activate # 網卡配置
# Partition clearing information
zerombr # 清除MBR
clearpart --all # 清除所有分區
5.配置tftp服務
systemctl enable tftp.socket
systemctl start tftp.socket
6.配置DHCP服務
vim /etc/dhcp/dhcpd.conf # 編輯配置檔案
option domain-name "xdg.com"; # 主機名
default-lease-time 600; # 租期時間
max-lease-time 7200; # 最大租期時間
subnet 192.168.25.0 netmask 255.255.255.0 {
range 192.168.25.50 192.168.25.100; # 位址池
next-server tftp伺服器的ip位址; # 引導檔案的伺服器位址 例如:tftp
filename "pxelinux.0"; # 引導檔案名稱,這個檔案名系統預設的
}
#編輯完成之後啟動服務
systemctl enable dhcpd
systemctl start dhcpd
7.準備PXE相關檔案
mkdir /var/lib/tftpboot/pxelinux.cfg/
cp/usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/
cp/misc/cd/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp/misc/cd/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
注:檔案pxelinux.0和menu.c32都是系統生成的檔案,由軟體syslinux(syslinux-nonlinux)生成
# 建立完成的目錄如下
/var/lib/tftpboot/
├──initrd.img
├──menu.c32
├──pxelinux.0
├──pxelinux.cfg
│└──default
└──vmlinuz
注:如果想安裝多個系統的話(initrd.img和vmlinux放在一個目錄裡,同時需要修改default檔案相關資訊配置),pxelinux.0、menu.c32、pxelinux.cfg目錄,這三個必須放在根目錄下面,引導的時候才會找到檔案位置
8.制作啟動菜單檔案
vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32 # 啟動菜單界面
timeout 600 # 1/10秒
menu title CentOS Linux 7 PXE Install
label centos7
menu label Auto Install CentOS Linux 7
kernel vmlinuz
append initrd=initrd.img ks=http://ip位址/centos/ks7.cfg # 指定ks檔案路徑
label local # 本地啟動
menu default
menu label Boot from ^local drive
localboot 0xffff
menu end
9.相關的注意事項
ks.cfg檔案存放在http伺服器上,檔案的權限有可讀,否則無法讀取安裝配置資訊
/var/lib/tftpboot目錄下檔案的存放的位置
在dhcp伺服器上的配置資訊裡,指定的filename和next-server兩個字段的資訊要正确,否則無法引導
在安裝的時候,虛拟機的硬體配置 - - 記憶體最好大于1G,不然可能導緻安裝失敗
轉載于:https://blog.51cto.com/xddggg/1966284