2021-05-12 14:32:11
PXE遠端網路裝機服務及CentOS 7無人值守安裝
在大規模的Linux應用環境中,比如Web群集、分散式計算等,伺服器往往並不配備光碟機裝置,在這種情況下,如何給成百上千台伺服器裸機快速安裝系統呢?傳統的USB光碟機、行動硬碟等安裝方式很顯然已經力不從心了,那麼就需要——PXE網路裝機及無人值守安裝。
PXE網路裝機及無人值守安裝可以實現的功能有:
1.規模化:同時裝配多台伺服器;
2.自動化:安裝系統、設定各種服務;
3.遠端實現:不需要光碟、U盤等安裝媒介。
如圖:
關於Windows PXE網路裝機可以參考博文:Windows server 2016部署WDS服務
若要搭建PXE網路體系,必須要滿足的條件有: 1.客戶機的網絡卡支援PXE協定(整合BOOTROM晶片),且主機板支援網路引導; 2.網路中必須有一台DHCP伺服器為客戶機分配IP地址、指定引導檔案的位置; 3.伺服器通過TFTP(簡單檔案傳輸協定)提供引導映象檔案的下載。
其中第一個條件是硬體要求,目前絕大部分伺服器和PC都能夠提供此支援,只需在BIOS設定中允許從Network或LAN啟動即可。
滿足條件後,我們來實現這種功能!
PXE遠端安裝服務的基本部署過程:
本次試驗PXE遠端安裝伺服器整合了CentOS 7 安裝源、FTP服務、TFTP服務、DHCP服務,能夠像客戶機(裸機)傳送PXE載入程式、Linux核心、啟動選單等資料,以及提供安裝檔案。
PXE遠端安裝服務的部署過程大致可以分成這樣幾步: 1.安裝FTP服務並準備CentOS 7 安裝源; 2.安裝TFTP服務並啟動; 3.準備Linux核心、初始化映象檔案; 4.準備PXE載入程式、啟動選單檔案; 5.安裝並啟動DHCP服務; 6.驗證PXE網路安裝效果。
接下來我們開始分步驟完成實驗,並實現理想的效果!
1.安裝FTP服務並準備CentOS 7 安裝源
通過搭建本地YUM的方式安裝一系列服務。如果有朋友對YUM的搭建不明白可以參考博文:YUM倉庫設定及命令詳解
[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# rm -rf *
[root@localhost yum.repos.d]# vim a.repo
[a]
baseurl=file:///mnt
gpgcheck=0
[root@localhost ~]# yum -y install vsftpd
//安裝FTP服務
[root@localhost ~]# mkdir /var/ftp/centos7
[root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/
//將光碟中的東西全部複製到FTP服務科匿名存取的目錄中
[root@localhost ~]# systemctl start vsftpd
//啟動FTP服務
2.安裝TFTP服務並啟動
TFTP(簡單檔案傳輸協定)服務所使用UDP的69埠。
[root@localhost ~]# yum -y install tftp-server
//安裝TFTP服務
[root@localhost ~]# vim /etc/xinetd.d/tftp
//修改TFTP服務的組態檔,內容如下:
service tftp
{
socket_type = dgram
protocol = udp //TFTP服務採用udp傳輸協定
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定TFTP服務的根目錄
disable = no //這項必須改成“no”
per_source = 11
cps = 100 2
flags = IPv4
}
[root@localhost ~]# systemctl start tftp
//啟動TFTP服務
3.準備Linux核心、初始化映象檔案
用PXE網路安裝的Linux核心、初始化檔案可以從CentOS 7系統光碟中獲得,位於images/pxeboot/目錄下,分別是initrd.img和vmlinuz。將這兩個檔案複製到TFTP服務的根目錄下。
[root@localhost ~]# cd /mnt/images/pxeboot/
[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/
4.準備PXE載入程式、啟動選單檔案
用於PXE網路安裝的載入程式為pxelinux.0,由軟體包syslinux提供。因此需要先安裝syslinux。
[root@localhost ~]# yum -y install syslinux
[root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
啟動選單來指導客戶機的引導過程,包括如何呼叫核心、如何載入初始化映象。預設的啟動選單檔案為default,應放置在TFTP根目錄下的pxelinux.cfg子目錄下,典型的啟動選單引導檔案需手動建立,可以參考以下內容:
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
//在TFTP服務根目錄下建立pxelinux.cfg目錄
[root@localhost ~]# cd /var/lib/tftpboot/pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default
//建立default選單檔案。檔案內容如下:
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.1.1/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.1.1/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.1.1/centos7
其中個設定項的含義: default:用來指定預設入口名稱; prompt:用來決定是否需要等待使用者控制(1表示需要,0表示不需要); label:用來定義並分割啟動項,檔案中有三種引導模式: 分別是圖形安裝(預設)、文字安裝、救援模式; kernel:用來指定所需核心; append:追加設定項; initrd:用來指定系統初始化檔案; method:用來指定安裝方式; 引匯入口的個數及內容根據實際情況自定義。
5.安裝並啟動DHCP服務
由於PXE客戶機通常是尚未安裝系統的裸機,因此為了與伺服器取得聯絡並正確的下載相關引導檔案,需要預先設定DHCP伺服器來自動分配地址並告知引導檔案位置。
[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
//複製DHCP服務的模板
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
//修改DHCP服務的組態檔,主要內容如下:
……………… //省略部分內容
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option domain-name-servers 192.168.1.1;
option domain-name "internal.example.org";
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.1.1; //指定TFTP伺服器的地址
filename "pxelinux.0"; //指定PXE載入程式的檔名
}
……………… //省略部分內容
[root@localhost ~]# systemctl start dhcpd
6.驗證PXE網路安裝效果
對於新購買的裸機,一般都不需要設定(如果是重新裝系統,建議則應調BIOS為網路啟動)。若使用vmware虛擬機器進行測試,虛擬機器記憶體至少需要2GB,否則在啟動會報錯。
耐心等待,幾分鐘後:
出現這種情況,表示部署成功!
通過PXE遠端安裝服務,雖然,安裝媒介已經不再受限於光碟、行動硬碟、U盤等裝置,大大提高了系統安裝的靈活想但是,安裝期間仍然需要人為的進行互動式的操作,當需要批次安裝時非常的不方便。那麼就需要使用到——“Kickstart無人值守安裝”
實現Kickstart無人值守安裝
實現Kickstart無人值守安裝部署過程: 1.設定應答檔案並儲存; 2.啟動自動應答檔案; 3.驗證無人值守安裝。
接下來我們開始分步驟完成,並實現理想的效果!
1.設定應答檔案並儲存
要想圖形化的建立應答檔案,則需要安裝system-config-kickstart工具,如果對組態檔非常熟悉的話,也可以直接修改系統自動建立的無人安裝組態檔/root/anaconda-ks.cfg。本次案例安裝system-config-kickstart工具,圖形化的編輯組態檔。
[root@localhost ~]# yum -y install system-config-kickstart
//安裝system-config-kickstart工具,安裝完成之後:
[root@localhost ~]# vim /var/ftp/ks.cfg
//檢視剛才通過圖形化編輯的應答檔案
#platform=x86, AMD64, 或 Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$3uZeSVnX$FYsU4y8y/qqEWA66Wuysg1
# Use network installation
url --url="ftp://192.168.1.1/centos7"
# System language
lang zh_CN
# Firewall configuration
firewall --disabled
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# SELinux configuration
selinux --disabled
# Network information
network --bootproto=dhcp --device=ens33
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part swap --asprimary --fstype="swap" --size=2048
part / --asprimary --fstype="xfs" --grow --size=1
%post --interpreter=/bin/bash
rm -rf /etc/yum.repos.d/*
cd /etc/yum.repos.d/
echo -e "[a]" >> a.repo
echo -e "baseurl=ftp://192.168.1.1/centos7" >> a.repo
echo -e "gpgcheck=0" >> a.repo
%end
不過剛才已經說明了,還缺一個選項——“軟體包選擇”,需要自己手動新增幾行設定項,在末尾新增即可,新增內容如下:
%packages
@^minimal
%end
//這三項的意思就是最小安裝
%packages
@^gnome-desktop-environment
%end
//這三項的意思是桌面安裝
當然也可以參考/root/anaconda-ks.cfg檔案,檔案中%packages到%end之間都是設定選項,每行一個設定選項,任意選擇!
大家可以不經過圖形化編輯,直接複製組態檔!效果也可實現!
2.啟動自動應答檔案
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.1.1/centos7 ks=ftp://192.168.1.1/ks.cfg
將prompt 改為0,表示不等待使用者選擇。新增ks引導引數,並制定URL存取路徑。
3.驗證無人值守安裝
實驗完成!
相關文章