1.簡介
1.1、 什么是PXE
PXE(Pre-boot Execution Environment,預啟動執行環境)是由Intel公司開發的最新技術,工作於Client/Server的網絡模式,支持工作
站通過網絡從遠端服 務器下載映像,並由此支持通過網絡啟動操作系統,在啟動過程中,終端要求服務器分配IP地址,再用TFTP(trivial
file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協議下載一個啟動軟件包到本機內存中執行,由這個啟動軟件
包完成終端基本軟件設置,從而引導預先安裝在服務器中的終端操作系統。
嚴格來說,PXE 並不是一種安裝方式,而是一種引導方式。進行 PXE 安裝的必要條件是在要安裝的計算機中必須包含一個 PXE 支持的網
卡(NIC),即網卡中必須要有 PXE Client。PXE 協議可以使計算機通過網絡啟動。此協議分為 Client端和 Server 端,而PXE Client則
在網卡的 ROM 中。當計算機引導時,BIOS 把 PXE Client 調入內存中執行,然后由 PXE Client 將放置在遠端的文件通過網絡下載到本
地運行。運行 PXE 協議需要設置 DHCP 服務器和 TFTP 服務器。DHCP 服務器會給 PXE Client(將要安裝系統的主機)分配一個 IP 地
址,由於是給 PXE Client 分配 IP 地址,所以在配置 DHCP 服務器時需要增加相應的 PXE 設置。此外,在 PXE Client 的 ROM 中,已經
存在了 TFTP Client,那么它就可以通過 TFTP 協議到 TFTP Server 上下載所需的文件了。
PXE的工作過程:
- PXE Client 從自己的PXE網卡啟動,向本網絡中的DHCP服務器索取IP;
- DHCP 服務器返回分配給客戶機的IP 以及PXE文件的放置位置(該文件一般是放在一台TFTP服務器上) ;
- PXE Client 向本網絡中的TFTP服務器索取pxelinux.0 文件;
- PXE Client 取得pxelinux.0 文件后之執行該文件;
- 根據pxelinux.0 的執行結果,通過TFTP服務器加載內核和文件系統 ;
- 進入安裝畫面, 此時可以通過選擇HTTP、FTP、NFS 方式之一進行安裝;
1.2 什么是Kickstart
Kickstart是一種無人值守的安裝方式。它的工作原理是在安裝過程中記錄典型的需要人工干預填寫的各種參數,並生成一個名為ks.cfg的
文 件。如果在安裝過程中(不只局限於生成Kickstart安裝文件的機器)出現要填寫參數的情況,安裝程序首先會去查找Kickstart生成的
文件,如 果找到合適的參數,就采用所找到的參數;如果沒有找到合適的參數,便需要安裝者手工干預了。所以,如果Kickstart文件涵蓋
了安裝過程中可能出現的 所有需要填寫的參數,那么安裝者完全可以只告訴安裝程序從何處取ks.cfg文件,然后就去忙自己的事情。等安
裝完畢,安裝程序會根據ks.cfg中的設 置重啟系統,並結束安裝。
PXE+Kickstart 無人值守安裝操作系統完整實驗過程如下:
實驗拓撲
2. 准備工作
實驗環境:VirtualBox 系統平台:CentOS 7 系統狀態:最小化安裝 網絡模式:nat模式 DHCP / TFTP IP:192.168.8.10 HTTP / FTP / NFS IP:192.168.8.10
2.2 為了實驗方便,先關閉防火牆和SELinux
[root@CentOS ~]# setenforce 0
修改配置文件/etc/selinux/config 內容如下
2.3 在服務器中,生成ks.cfg 文件需要system-config-kickstart 工具,而此工具依賴於X Windows,所以我們需要安裝X Windows 和Desktop 並重啟系統
這里從鏡像光盤安裝相關組件,首先掛載光盤
修改源文件:/etc/yum.repos.d/CentOS-Base.repo為如下內容,記得先備份
刷新緩存
安裝組件:
[root@CentOS ~]#yum groupinstall "X Window System"
[root@CentOS ~]# yum groupinstall "GNOME Desktop"
3、配置HTTP安裝方式
系統的安裝方式可以選擇HTTP、FTP、 NFS,我們這里介紹HTTP方式的安裝,其他兩種方式的安裝,大家可以自行百度。
3.1 安裝並配置HTTP
[root@CentOS ~]# yum install httpd
[root@CentOS ~]# systemctl start httpd.service
[root@CentOS ~]# systemctl enable httpd.service
3.2、掛載光盤鏡像
[root@CentOS ~]# mount /dev/cdrom /mnt/cdrom/
3.3、復制光盤全部內容至http 的根目錄/var/www/html/os/下
[root@CentOS ~]# cp -r /mnt/cdrom/* /var/www/html/os
4、配置TFTP
4.1、安裝tftp-server
[root@CentOS ~]# yum install tftp-server
[root@CentOS ~]# yum install xinetd
4.2、啟用tftp 服務,編輯配置文件/etc/xinetd.d/tftp 內容如下,紅框位置由yes修改為no
4.3、啟動tftp服務
因為tftp服務是掛載在超級進程xinetd 下的,所以通過啟動xinetd 來啟動tftp服務。
[root@CentOS ~]# systemctl start xinetd.service
[root@CentOS ~]# systemctl enable xinetd.service
4.4、查看tftp端口號是否打開,從圖中可以看到udp端口號69已經打開
5、配置支持PXE的啟動程序
5.1、安裝syslinux
[root@CentOS ~]# yum install syslinux
5.2、復制pxelinux.0 文件至/var/lib/tftpboot/ 文件夾中
[root@CentOS ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
說明:syslinux是一個功能強大的引導加載程序,而且兼容各種介質。更加確切地說:SYSLINUX是一個小型的Linux操作系統,它的目的
是簡化首次安裝Linux的時間,並建立修護或其它特殊用途的啟動盤。
5.3、復制iso 鏡像中的/image/pxeboot/initrd.img 和vmlinux 至/var/lib/tftpboot/ 文件夾中
[root@CentOS ~]# cp /var/www/html/os/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@CentOS ~]# cp /var/www/html/os/images/pxeboot/vmlinuz /var/lib/tftpboot/
5.4、復制iso 鏡像中的/isolinux/*.msg 至/var/lib/tftpboot/ 文件夾中
[root@CentOS ~]# cp /var/www/html/os/isolinux/*.msg /var/lib/tftpboot/
5.5、在/var/lib/tftpboot/ 中新建一個pxelinux.cfg目錄
[root@CentOS ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
5.6、將iso 鏡像中的/isolinux 目錄中的isolinux.cfg復制到pxelinux.cfg目錄中,同時更改文件名稱為default
編輯配置文件
[root@CentOS ~]# cp /var/www/html/os/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@CentOS ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
在位置1處添加menu default這一行,在位置2處修改成圖中樣式,在位置3處刪除兩行之間的menu default,最后效果如圖所示,位置1
在63行
6、配置DHCP
6.1、安裝DHCP服務
[root@CentOS ~]# yum install dhcp
6.2、復制配置模板文件到DHCP的配置目錄中
[root@CentOS ~]# cp -f /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
6.3、修改/etc/dhcp/dhcpd.conf 配置文件,內容如下:
6.4、啟動DHCP服務
[root@CentOS ~]# systemctl start dhcpd.service
[root@CentOS ~]# systemctl enable dhcpd.service
7、生成ks.cfg 文件
7.1、安裝Kickstart
[root@CentOS ~]# yum install system-config-kickstart
7.2、在桌面環境下配置Kickstart,啟動X Windows 環境
[root@CentOS ~]# startx
在圖形界面中打開終端,輸入如下命令啟動Kickstart
[root@CentOS ~]# system-config-kickstart
按下列圖形填,第1個
第二個
第三個
第四個
第五個
然后保存,保存完之后在文件最后添加三行內容
7.3、保存后使用命令檢查語法是否正確
[root@CentOS ~]# ksvalidator ks.cfg
7.4、如果語法沒有問題就復制文件到www根目錄
[root@CentOS ~]# cp ks.cfg /var/www/html/
7.5、重啟一下httpd服務
[root@CentOS ~]# systemctl restart httpd.service
