一、說(shuō)明
什么是PXE?
PXE(Pre-boot Execution Environment,預(yù)啟動(dòng)執(zhí)行環(huán)境)是由Intel公司開發(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(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協(xié)議下載一個(gè)啟動(dòng)軟件包到本機(jī)內(nèi)存中執(zhí)行,由這個(gè)啟動(dòng)軟件包完成終端基本軟件設(shè)置,從而引導(dǎo)預(yù)先安裝在服務(wù)器中的終端操作系統(tǒng)。
嚴(yán)格來(lái)說(shuō),PXE 并不是一種安裝方式,而是一種引導(dǎo)方式。
進(jìn)行 PXE 安裝的必要條件是在要安裝的計(jì)算機(jī)中必須包含一個(gè) PXE 支持的網(wǎng)卡(NIC),即網(wǎng)卡中必須要有 PXE Client。PXE 協(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í)行,然后由 PXE Client 將放置在遠(yuǎn)端的文件通過(guò)網(wǎng)絡(luò)下載到本地運(yùn)行。
運(yùn)行 PXE 協(xié)議需要設(shè)置 DHCP 服務(wù)器和 TFTP 服務(wù)器,DHCP 服務(wù)器會(huì)給 PXE Client(將要安裝系統(tǒng)的主機(jī))分配一個(gè) IP 地址,由于是給 PXE Client 分配 IP 地址,所以在配置 DHCP 服務(wù)器時(shí)需要增加相應(yīng)的 PXE 設(shè)置。此外,在 PXE Client 的 ROM 中,已經(jīng)存在了 TFTP Client,那么它就可以通過(guò) TFTP 協(xié)議到 TFTP Server 上下載所需的文件了。
部署PXE需要哪些服務(wù)?
DHCP服務(wù),分配IP地址,定位引導(dǎo)程序
DNS服務(wù),為客戶機(jī)分配主機(jī)名
TFTP服務(wù),提供引導(dǎo)程序下載
HTTP服務(wù)(或ftp/nfs),提供yum安裝源

客戶機(jī)應(yīng)具備的哪些條件?
網(wǎng)卡ROM必須支持PXE協(xié)議
主板支持網(wǎng)絡(luò)啟動(dòng)
PXE工作流程圖



PXE+Kickstart安裝過(guò)程

二、實(shí)驗(yàn)環(huán)境
操作系統(tǒng):CentOS7.3 (GNOME桌面版)
pxeServer: 192.168.2.2
三、設(shè)置pxeServer網(wǎng)絡(luò)
我們配置pxe的安裝網(wǎng)段為 192.168.2.0/24,設(shè)置在自定義網(wǎng)絡(luò)VMnet1

設(shè)置VMware網(wǎng)絡(luò),禁用VMnet1的本地DHCP



配置pxeServer在VMnet1網(wǎng)絡(luò)中的靜態(tài)IP為192.168.2.2
# vim /etc/sysconfig/network-scripts/ifcfg-ens33
#############################
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
ONBOOT="yes"
IPADDR="192.168.2.2"
NETMASK="255.255.255.0"
GATEWAY="192.168.2.1"
###############################

# systemctl restart network
# ip addr list

四、在pxeServer上搭建本地yum源
用CentOS7.3 鏡像搭建本地yum源,如果ISO映像文件路徑中沒(méi)有,可自行上傳搭建。

#? mount? /dev/cdrom? /mnt/

# mkdir? /etc/yum.repos.d/backup
# mv? /etc/yum.repos.d/*.repo? /etc/yum.repos.d/backup
# vim /etc/yum.repos.d/pxe.repo
#######################
[development]? ? ? ? ? ? ? ? ?
?// 注意:此處[]內(nèi)容必須為development
name=pxe
baseurl=file:///mnt
enabled=1
gpgcheck=0
#########################

# yum clean all
# yum repolist

設(shè)置開機(jī)自動(dòng)掛載
#? vim? /etc/fstab
#####################################
/dev/cdrom? ? /mnt? iso9660? ? defaults? ? 0 0
#####################################

# mount -a
五、在pxeServer上安裝軟件包
#? yum? -y install? ? dhcp? httpd? xinetd? tftp-server?
配置httpd,為客戶端裝機(jī)提供http網(wǎng)絡(luò)yum源
#? mkdir? /var/www/html/CentOS7/?
# cp? -r? /mnt/*? /var/www/html/CentOS7/
創(chuàng)建kickstarts文件目錄
# mkdir? /var/www/html/kickstarts
配置xinetd,對(duì)服務(wù)tftp訪問(wèn)進(jìn)行控制
# vim /etc/xinetd.d/tftp
將配置文件中 yes改成no,開啟服務(wù)

配置DHCP,為客戶端裝機(jī)提供IP
# vim /etc/dhcp/dhcpd.conf
##################################
subnet 192.168.2.0 netmask 255.255.255.0 {
? ? range 192.168.2.110 192.168.2.150;
filename "pxelinux.0";
next-server 192.168.2.2;
}
###################################

配置pxe裝機(jī)文件
#? yum? -y? install? syslinux?
# rpm -ql? syslinux? |grep pxe

# cp /usr/share/syslinux/pxelinux.0? ? /var/lib/tftpboot/
# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk}? /var/lib/tftpboot
# cp /var/www/html/CentOS7/isolinux/{initrd.img,vmlinuz}? ? /var/lib/tftpboot/
#? ll? ? /var/lib/tftpboot/

在tftp的根目錄下新建pxe文件夾和文件
#? mkdir? /var/lib/tftpboot/pxelinux.cfg
#? vim? /var/lib/tftpboot/pxelinux.cfg/default
########################################################################
default menu.c32
? ? prompt 5
? ? timeout 30
? ? MENU TITLE CentOS7.x PXE
? ? LABEL linux_auto
? ? MENU LABEL Install CentOS7.x x86_64 Auto
? ? KERNEL vmlinuz
? APPEND initrd=initrd.img inst.repo=http://192.168.2.2/CentOS7/ ks=http://192.168.2.2/kickstarts/centos7.cfg
? ? LABEL linux
? ? MENU LABEL Install CentOS7.x x86_64
? ? KERNEL vmlinuz
? ? APPEND initrd=initrd.img inst.repo=http://192.168.2.2/CentOS7/
###########################################################################

五、生成 kickstarts應(yīng)答文件
#? yum? -y? install system-config-kickstart
#? system-config-kickstart



















# cp? /root/centos7.cfg? /var/www/html/kickstarts/
六、關(guān)閉pxeServer防火墻,啟動(dòng)服務(wù)
# setenforce 0
# sed? -i? 's/^SELINUX=.*/SELINUX=permissive/g'? /etc/selinux/config
# systemctl? stop firewalld
# systemctl disable firewalld
# systemctl? start xinetd httpd dhcpd? tftp
# systemctl? enable? xinetd httpd dhcpd? tftp
# systemctl status? xinetd httpd dhcpd? tftp


七、創(chuàng)建虛擬機(jī),啟動(dòng)PXE 安裝
























# systemctl get-default
# systemctl set-default graphical.target
#? reboot



八、參考
PXE 裝機(jī)詳解
https://blog.51cto.com/1992tao/1870431
通過(guò)PXE網(wǎng)絡(luò)安裝CentOS7操作系統(tǒng)
https://o-my-chenjian.com/2018/07/11/Install-CentOS7-By-Using-PXE
CentOS 7 安裝大全 之 PXE網(wǎng)絡(luò)篇
https://blog.csdn.net/sqa_star/article/details/84029965
PXE+kickstart無(wú)人值守安裝CentOS 7
https://www.cnblogs.com/f-ck-need-u/p/7342919.html
PXE 和 Kickstart 部署記錄
https://blog.tankywoo.com/2014/01/13/pxe-and-kickstart-deploy-operation.html
kickstart文件
http://www.itdecent.cn/p/46993025012d
圖形化生成kickstart文件
https://blog.51cto.com/13150617/1973002
kickstart-由于下載軟件包信息失敗,軟件包選擇被禁止
https://blog.51cto.com/zaa47/1927790
https://www.linuxidc.com/Linux/2018-07/153260.htm
基于DHCP、PXE和kickstart自動(dòng)安裝設(shè)置CentOS 7.3
http://hmli.ustc.edu.cn/doc/linux/centos-autoinstall.htm
KICKSTART無(wú)人值守安裝
https://blog.oldboyedu.com/autoinstall-kickstart
PXE Kickstart 無(wú)人值守安裝系統(tǒng)
http://www.opsroad.com/759.html
CentOS7安裝后重啟出現(xiàn)Initial setup of CentOS Linux 7 (core)
https://blog.csdn.net/jyusun/article/details/70231416
如何執(zhí)行 KICKSTART 安裝?
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/installation_guide/sect-kickstart-howto#sect-kickstart-installation-starting