一烛亦、PXE簡介
PXE(preboot execute environment,預(yù)啟動執(zhí)行環(huán)境)是由Intel公司開發(fā)的最新技術(shù)懂拾,工作于Client/Server的網(wǎng)絡(luò)模式煤禽,支持工作站通過網(wǎng)絡(luò)從遠(yuǎn)端服務(wù)器下載映像,并由此支持通過網(wǎng)絡(luò)啟動操作系統(tǒng)岖赋,在啟動過程中呜师,終端要求服務(wù)器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)協(xié)議下載一個啟動軟件包到本機內(nèi)存中執(zhí)行贾节,由這個啟動軟件包完成終端(客戶端)基本軟件設(shè)置汁汗,從而引導(dǎo)預(yù)先安裝在服務(wù)器中的終端操作系統(tǒng)衷畦。PXE可以引導(dǎo)多種操作系統(tǒng),如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系統(tǒng)等知牌。
注:摘自百度百科祈争。
PXE網(wǎng)絡(luò)結(jié)構(gòu)大致如圖:
二、環(huán)境準(zhǔn)備
上傳CentOS7光盤鏡像(這里使用1511和1810演示)
安裝并配置好YUM軟件源
-
安裝所需軟件
yum install -y yum dhcp xinetd tftp-server syslinux vsftpd
-
創(chuàng)建CentOS7系統(tǒng)鏡像文件存放目錄(可根據(jù)實際自定義),并復(fù)制對應(yīng)版本系統(tǒng)文件
#創(chuàng)建對應(yīng)目錄 mkdir -p /pxe/centos7-1511/ mkdir -p /pxe/centos7-1511/ #掛載對應(yīng)系統(tǒng)鏡像并復(fù)制到創(chuàng)建的目錄 mkdir -p /mnt/centos7-1511/ mkdir -p /mnt/centos7-1511/ mount /pxe/CentOS-7-x86_64-DVD-1511.iso /mnt/centos7-1511/ mount /pxe/CentOS-7-x86_64-DVD-1810.iso /mnt/centos7-1511/ cp -R /mnt/centos7-1511/* /pxe/centos7-1511/ cp -R /mnt/centos7-1810/* /pxe/centos7-1810/
關(guān)閉防火墻及SELinux(此處自行查閱資料)角寸。
注:這里使用vsftp來傳輸系統(tǒng)文件菩混,也可以使用http、nfs等方式扁藕,可根據(jù)實際情況選擇配置沮峡。
注:本文非PXE自動化部署,如需無人值守部署可使用ks.cfg文件實現(xiàn)亿柑,文末有參考配置邢疙。
注:這里使用centos7的1511和1810版本演示,如需添加更多版本如上配置即可望薄。
三疟游、軟件配置
-
syslinux加載器設(shè)置
vesamenu.c32
和menu.c32
是syslinux所擁有眾多模塊中的兩個,它們的功能是制定啟動器使用什么模式的背景痕支。vesamenu.c32
圖形模式言蛇,menu.c32
文本模式许起。這里選擇menu.c32
。同時還需要pxelinux.0
文件,它對整個引導(dǎo)器的作用就如同內(nèi)核對系統(tǒng)的作用一般娇妓,它可以解釋default
文件(配置引導(dǎo)菜單的文件)中的每個配置項刁品,并根據(jù)配置項做出不同的反應(yīng)辱姨,如等待的時間阅酪、啟動器背景、啟動菜單察绷、內(nèi)核引導(dǎo)等干签。
將這兩個文件復(fù)制到tftp的訪問目錄中:cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/ cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
然后創(chuàng)建
pxelinux.cfg
目錄,pxelinux被執(zhí)行后拆撼,它會掃描該目錄下是否存在指定的配置文件容劳,若存在則引用被制定的配置文件。
default
文件存放于pxelinux.cfg
目錄中闸度,pxelinux程序最后掃描的配置文件名就是default
竭贩,所以經(jīng)常把啟動器配置項都寫入該文件中。
建立目錄pxelinux.cfg
并在此目錄下建立default
文件:mkdir /var/lib/tftpboot/pxelinux.cfg #為方便后續(xù)區(qū)分莺禁,創(chuàng)建對應(yīng)文件夾以便后續(xù)存放啟動文件 mkdir /var/lib/tftpboot/centos7-1511/ mkdir /var/lib/tftpboot/centos7-1810/
編輯引導(dǎo)菜單如下:
vi /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32 prompt 0 timeout 300 ONTIMEOUT local menu title ########## PXE Boot Menu ########## label 1 menu label ^1) Install CentOS 7 1511 x64 kernel centos7-1511/vmlinuz append initrd=centos7-1511/initrd.img method=ftp://192.168.100.182/centos7-1511/ devfs=nomount label 2 menu label ^2) Install CentOS 7 1810 x64 kernel centos7-1810/vmlinuz append initrd=centos7-1810/initrd.img method=ftp://192.168.100.182/centos7-1810/ devfs=nomount #無人值守安裝留量,需配置對應(yīng)ks.cfg文件 label 3 menu label ^3) Auto Install CentOS 7 1810 x64 kernel centos7-1810/vmlinuz append initrd=centos7-1810/initrd.img ks=ftp://192.168.100.182/centos7-1810/ks.cfg label local menu label ^4) Boot from Local Disk menu default localboot 0xffff
注:這里使用centos7的1511和1810版本演示,如需添加更多版本如上配置即可。
復(fù)制對應(yīng)系統(tǒng)啟動文件到對應(yīng)目錄:cp /pxe/centos7-1511/images/pxeboot/initrd.img /var/lib/tftpboot/centos7-1511/ cp /pxe/centos7-1511/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7-1511/ cp /pxe/centos7-1810/images/pxeboot/initrd.img /var/lib/tftpboot/centos7-1810/ cp /pxe/centos7-1810/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7-1810/
此時
/var/lib/tftpboot
目錄結(jié)構(gòu)如下:/var/lib/tftpboot/ ├── centos7-1511 │ ├── initrd.img │ └── vmlinuz ├── centos7-1810 │ ├── initrd.img │ └── vmlinuz ├── menu.c32 ├── pxelinux.0 └── pxelinux.cfg └── default
dhcp服務(wù)配置
編輯配置文件:vi /etc/dhcp/dhcpd.conf
如下(ip地址等可根據(jù)實際情況修改):
ddns-update-style none;
ignore client-updates;
default-lease-time 259200;
max-lease-time 518400;
#響應(yīng)使用者查詢
allow booting;
#響應(yīng)激活查詢
allow bootp;
subnet 192.168.100.0 netmask 255.255.255.0 {
#分配的ip地址池范圍
range dynamic-bootp 192.168.100.100 192.168.100.200;
#網(wǎng)關(guān)地址
option routers 192.168.100.1;
#子網(wǎng)掩碼
option subnet-mask 255.255.255.0;
#DNS
option domain-name-servers 119.29.29.29,114.114.114.114;
#本機ip地址
next-server 192.168.100.182;
#pxe啟動文件
filename "pxelinux.0";
}
- tftp服務(wù)配置
由于tftp是由xinetd管理的楼熄,修改/etc/xinetd.d/tftp
配置文件如下:
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
#啟用tftp
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
- vsftpd服務(wù)配置
編輯配置文件/etc/vsftpd/vsftpd.conf
如下:
#其他保持默認(rèn)忆绰,最后一行添加如下,路徑為上面系統(tǒng)鏡像目錄
anon_root=/pxe/
檢查并啟動服務(wù)
systemctl start dhcpd xinetd tftp vsftpd
注:若啟動失敗請檢查各服務(wù)配置后重試可岂。-
客戶機從網(wǎng)絡(luò)啟動安裝系統(tǒng)
客戶機開機BIOS選擇從網(wǎng)卡啟動即可引導(dǎo)安裝界面错敢,如圖:
啟動菜單
安裝界面
安裝界面
附1:個人啟動停止腳本
個人為了方便管理PXE服務(wù)項,使用腳本批量啟動或停止服務(wù)缕粹,將腳本放置在/usr/bin/
目錄則可以很方便地使用腳本稚茅。
如下是腳本pxe.sh
內(nèi)容:
#!/bin/bash
# PXE Service
case $1 in
start)
echo -e "\033[32m ### Start PXE Service...\033[0m"
systemctl start dhcpd && echo -e "\033[32m >>> Start DHCP Service Success!\033[0m"
systemctl start xinetd && echo -e "\033[32m >>> Start Xinetd Service Success!\033[0m"
systemctl start tftp && echo -e "\033[32m >>> Start TFTP Service Success!\033[0m"
systemctl start vsftpd && echo -e "\033[32m >>> Start vsFTP Service Success!\033[0m"
echo -e "\033[32m ### Start PXE Service Success!\033[0m"
;;
stop)
echo -e "\033[32m ### Stop PXE Service...\033[0m"
systemctl stop dhcpd && echo -e "\033[32m >>> Stop DHCP Service Success!\033[0m"
systemctl stop xinetd && echo -e "\033[32m >>> Stop Xinetd Service Success!\033[0m"
systemctl stop tftp && echo -e "\033[32m >>> Stop TFTP Service Success!\033[0m"
systemctl stop vsftpd && echo -e "\033[32m >>> Stop vsFTP Service Success!\033[0m"
echo -e "\033[32m ### Stop PXE Service Success!\033[0m"
;;
restart)
echo -e "\033[32m ### Restart PXE Service...\033[0m"
systemctl restart dhcpd && echo -e "\033[32m >>> Restart DHCP Service Success!\033[0m"
systemctl restart xinetd && echo -e "\033[32m >>> Restart Xinetd Service Success!\033[0m"
systemctl restart tftp && echo -e "\033[32m >>> Restart TFTP Service Success!\033[0m"
systemctl restart vsftpd && echo -e "\033[32m >>> Restart vsFTP Service Success!\033[0m"
echo -e "\033[32m ### Restart PXE Service Success!\033[0m"
;;
enable)
echo -e "\033[32m ### Enable PXE Service...\033[0m"
systemctl enable dhcpd && echo -e "\033[32m >>> Enable DHCP Service Success!\033[0m"
systemctl enable xinetd && echo -e "\033[32m >>> Enable Xinetd Service Success!\033[0m"
systemctl enable tftp && echo -e "\033[32m >>> Enable TFTP Service Success!\033[0m"
systemctl enable vsftpd && echo -e "\033[32m >>> Enable vsFTP Service Success!\033[0m"
echo -e "\033[32m ### Enable PXE Service Success!\033[0m"
;;
disable)
echo -e "\033[32m ### Disable PXE Service...\033[0m"
systemctl disable dhcpd && echo -e "\033[32m >>> Disable DHCP Service Success!\033[0m"
systemctl disable xinetd && echo -e "\033[32m >>> Disable Xinetd Service Success!\033[0m"
systemctl disable tftp && echo -e "\033[32m >>> Disable TFTP Service Success!\033[0m"
systemctl disable vsftpd && echo -e "\033[32m >>> Disable vsFTP Service Success!\033[0m"
echo -e "\033[32m ### Disable PXE Service Success!\033[0m"
;;
*)
echo "### The input value is invalid, please try again..."
;;
esac
啟動服務(wù):pxe.sh start
停止服務(wù):pxe.sh stop
重啟服務(wù):pxe.sh restart
開機自啟:pxe.sh enable
取消自啟:pxe.sh disable
注:若使用http或nfs方式,則具體服務(wù)名稱根據(jù)實際情況更改平斩。
附2:個人無人值守配置文件ks.cfg
注:可使用Kickstart工具生成或復(fù)制修改root目錄下的anaconda-ks.cfg
文件亚享。
注:以下url地址自行根據(jù)實際修改,該配置默認(rèn)刪除所有分區(qū)并重新最小化安裝,將此文件放到對應(yīng)系統(tǒng)鏡像文件根目錄下并對應(yīng)修改上文中引導(dǎo)菜單的網(wǎng)絡(luò)文件路徑绘面,此配置密碼為000000
欺税。
安裝Kickstart工具:yum reinstall -y system-config-kickstart
如需X11需安裝:yum install -y xorg-x11-xauth wqy-zenhei-fonts*
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$aq2UlNV/$5NBlTHhpgk6K3BEVHbsin0
# Use network installation
url --url="ftp://192.168.100.182/centos7-1810"
# System language
lang zh_CN.UTF-8
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
# SELinux configuration
selinux --enforcing
# Do not configure the X Window System
skipx
# Firewall configuration
firewall --enabled --ssh
# Network information
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
%packages
@^minimal
@core
chrony
kexec-tools
%end