首頁 > 軟體

PXE遠端網路裝機服務及CentOS 7無人值守安裝

2020-06-16 16:33:17

在大規模的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.驗證無人值守安裝



實驗完成!


IT145.com E-mail:sddin#qq.com