1. PXE介紹
2. 服務的搭建
2.1 DHCP服務搭建
2.1.1 安裝DHCP軟件包
2.1.2 修改dhcp配置文件
2.1.3 開啟DHCP服務
2.1.4 查看dhcp服務是否開啟
2.2 TFTP服務搭建
2.2.1 安裝軟件包
2.2.2 掛載並拷貝鏡像
2.2.3 創建pxelinux配置文件
2.2.4 開啟tftp服務
2.2.5 查看tftp服務是否開啟
2.2.6 測試tftp服務是否可以正常訪問
2.3 HTTP服務搭建
2.3.1 安裝軟件包
2.3.2 拷貝光盤內容
2.3.3 開啟httpd服務
2.3.4 查看httpd服務是否開啟
2.3.5 測試http服務是否可以正常訪問
3. 自動化安裝
3.1 創建kickstart文件
3.2 使得安裝源可以被訪問
3.3 使得kickstart文件可以被訪問
4. 外部引用



1. PXE介紹
PXE(Pre-boot Execution Environment)是由Intel公司開發的技術,支持主機(客戶機)通過遠程主機提供的 安裝服務安裝操作系統。
PXE的基本工作原理如下:
1. PXE客戶機從支持PXE的網卡啟動,向本網絡中的DHCP服務器獲取IP地址。
2. DHCP服務器返回分配給客戶機的IP地址以及pxelinux.0文件的存放位置。
3. PXE客戶機向本網絡中的TFTP服務器索取pxelinux.0文件,並執行。
4. 從TFTP服務器獲取pxelinux的配置文件pxelinux.cfg。
5. 客戶機選擇啟動項,從TFTP服務器下載內核文件和initrd。
6. 加載內核,並啟動安裝過程。
為了提供PXE安裝服務,需要在本地網絡中開啟如下服務:
1. DHCP服務 為待安裝機器分配IP地址,以及提供PXE安裝所需要的其他信息。
2. TFTP服務 用於提供PXE安裝所需要的bootloader,內核鏡像等文件。
3. HTTP(S)、NFS、FTP服務 提供安裝過程中所使用的安裝源,支持HTTP(S)、NFS和FTP多種協議,本文以HTTP服務為例。
2. 服務的搭建
2.1 DHCP服務搭建
2.1.1 安裝DHCP軟件包
[root@promote ~]# yum install dhcp -y
2.1.2 修改dhcp配置文件 /etc/dhcp/dhcpd.conf
# # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page # option space pxelinux; option pxelinux.magic code 208 = string; option pxelinux.configfile code 209 = text; option pxelinux.pathprefix code 210 = text; option pxelinux.reboottime code 211 = unsigned integer 32; option architecture-type code 93 = unsigned integer 16; subnet 192.168.1.0 netmask 255.255.255.0 { option routers 192.168.1.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.1.255; range 192.168.1.2 192.168.1.254;
class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.1.1; if option architecture-type = 00:07 { filename "uefi/shim.efi"; } elsif option architecture-type = 00:09 { filename "uefi/shim.efi"; } else { filename "pxelinux.0"; } } }
2.1.3 開啟DHCP服務 在開啟DHCP服務之前,確保本機有192.168.1.0/24網段的IP地址。由於將所有服務放在同一個機器中,而TFTP 服務的IP地址是192.168.1.1.,所以需要將192.168.1.1這個IP地址配置在本機中。 假設配置在網卡eth0上,可以使用下面的命令:
[root@promote ~]# ip addr add 192.168.1.1/24 dev eth0
開啟DHCP服務:
[root@promote ~]# systemctl enable dhcpd.service
[root@promote ~]# systemctl start dhcpd.service
2.1.4 查看dhcp服務是否開啟
[root@promote ~]# ss -uln | grep 67 UNCONN 0 0 *:67 *:*
2.2 TFTP服務搭建 2.2.1 安裝軟件包
[root@promote ~]# yum install tftp-server syslinux-tftpboot -y
2.2.2 掛載並拷貝鏡像 掛載BCLinux 7光盤,拷貝其中的內核鏡像和initrd文件到tftp根目錄下。假定/mount_point是光盤的掛載目錄
[root@promote ~]# mkdir -p /var/lib/tftpboot/bclinux7/ [root@promote ~]# cp /mount_point/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/bclinux7/
2.2.4 創建pxelinux配置文件 PXE安裝默認會從pxelinux.cfg目錄下獲取PXE的配置文件,首先創建這個目錄:
[root@promote ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/
默認配置文件名是default,如果需要對不同的客戶機給於不同的配置文件,可以用IP地址作為文件名。例如對 於IP地址是10.0.0.1的客戶機而言,針對它的配置文件名稱是0A000001。下面是一個典型的配置文件內容:
[root@promote ~]# cat /var/lib/tftpboot/pxelinux.cfg/default default vesamenu.c32 prompt 1 timeout 600 display boot.msg
label linux menu label ^Install or upgrade an existing system menu default kernel bclinux7/vmlinuz append initrd=bclinux7/initrd.img label vesa menu label Install system with ^basic video driver kernel bclinux7/vmlinuz append initrd=bclinux7/initrd.img xdriver=vesa nomodeset label rescue menu label ^Rescue installed system kernel bclinux7/vmlinuz append initrd=bclinux7/initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memtest append -
將boot menu中需要的文件拷貝到tftp目錄下:
[root@promote ~]# cp /mount_point/isolinux/{boot.msg,memtest} /var/lib/tftpboot/
2.2.5 開啟tftp服務 將/etc/xinetd.d/tftp文件中的disable選項改成no,重啟xinet服務:
[root@promote ~]# systemctl enable xinetd
[root@promote ~]# systemctl start xinetd
2.2.6 查看tftp服務是否開啟
[root@promote ~]# ss -uln | grep 69 UNCONN 0 0 *:69 *:*
2.2.7 測試tftp服務是否可以正常訪問 在本網段內找一台機器,測試tftp服務是否可以正常訪問。
2.3 HTTP服務搭建
2.3.1 安裝軟件包
[root@promote ~]# yum install httpd -y
2.3.2 拷貝光盤內容
[root@promote ~]# mkdir /var/www/html/bclinux7/ [root@promote ~]# cp -rf /mount_point/* /var/www/html/bclinux7/
2.3.3 開啟httpd服務
[root@promote ~]# systemctl enable httpd
[root@promote ~]# systemctl start httpd
2.3.4 查看httpd服務是否開啟
[root@promote ~]# ss -tln | grep 80 LISTEN 0 128 :::80 :::*
2.3.5 測試http服務是否可以正常訪問 確保上述服務的端口在防火牆中是放行的,也可以將防火牆關閉:
[root@promote ~]# systemctl stop firewalld
3. 自動化安裝
按照前面的步驟,在本地局域網內搭建上述服務后,將客戶機重啟並從網卡啟動,就會啟動PXE安裝。在安裝過 程中,需要對待安裝系統做一些配置,例如時區、磁盤分區等。為了實現這部分的自動化,可以使用kickstart 安裝方式。
kickstart可以解析配置文件,其中可以給出安裝過程中所有需要回答的問題。安裝程序解析這個配置文件,就可以實現完全的自動化安裝。
為了實現kickstart安裝,需要完成以下步驟。
3.1 創建kickstart文件
kickstart文件是一個文本文件,通過關鍵字指定了安裝過程中需要配置的選項。可以使用圖形化的工具 Kickstart Configurator生成kickstart文件,也可以手動寫。在系統安裝結束后,安裝程序也會創建一個 kickstart文件在/root/目錄下,文件名是anaconda-ks.cfg,這個文件保存的是安裝系統時的配置參數。
由於kickstart支持的選項非常多,這里就不一一列舉,可以參考kickstart選項。
3.2 使得安裝源可以被訪問
無論使用kickstart安裝還是其他方式安裝,都必須訪問安裝源。安裝源可以在光盤上,也可以在磁盤和網絡 上,其內容包含了待安裝的軟件包,一般是從安裝光盤中復制而來的。
3.3 使得kickstart文件可以被訪問
在使用PXE安裝時,為了使用自動化安裝,需要訪問kickstart文件。此時需要將kickstart文件放置在網絡服務 器上,在安裝過程中通過網絡獲取文件,開啟自動化安裝。
現在支持三種形式的網絡服務:nfs、http、https,分別需要在啟動參數中添加如下配置項:
ks=nfs:<server>:/<path> ks=http://<server>/<path> ks=https://<server>/<path>
對於PXE安裝,啟動的配置文件是pxelinux.cfg/default。假設ks文件被放置HTTP服務上的根目錄 下,pxelinux.cfg/default文件需要被修改為如下內容:
[root@promote ~]# cat /var/lib/tftpboot/pxelinux.cfg/default default vesamenu.c32 prompt 1 timeout 600 display boot.msg
label linux menu label ^Install or upgrade an existing system menu default kernel bclinux7/vmlinuz append initrd=bclinux7/initrd.img ks=http://192.168.1.1/ks.cfg label vesa menu label Install system with ^basic video driver kernel bclinux7/vmlinuz append initrd=bclinux7/initrd.img xdriver=vesa nomodeset ks=http://192.168.1.1/ks.cfg label rescue menu label ^Rescue installed system kernel bclinux7/vmlinuz append initrd=bclinux7/initrd.img rescue label local menu label Boot from ^local drive localboot 0xffff label memtest86 menu label ^Memory test kernel memte
append -
4. 外部引用
1. kickstart選項