首頁 > 軟體

PXE實現批次無人值守安裝CentOS7系統

2020-06-16 17:21:36

通過傳統的方式安裝和部署計算機時,都需要人工干預的方式完成安裝。如果需要部署大量的類似功能的工作站或伺服器,則需要耗費大量的時間。同時傳統的安裝方式,每台計算機都需要光碟機裝置及安裝光碟等媒介,會額外增加部署成本。因此,許多系統管理員都希望能夠通過一種網路化的無人值守的自動安裝方式將作業系統部署到目標計算機中。

一、相關服務和工具

1、PXE協定

PXE 是由 Intel 設計的協定,計算機可以通過 PXE 協定從網路引導啟動。PXE 協定在啟動過程分為 client 和 server 端,PXE 協定執行過程主要解決兩個問題:首先解決 IP 地址的問題,然後解決如何傳輸作業系統啟動檔案和安裝檔案的問題。對於第一個問題,可以通過 DHCP Server 解決,通常情況下 DHCP 伺服器主要用於分配 IP 地址給用戶端。但在 PXE 環境下,DHCP 伺服器需要額外載入 PXE 的相關設定。針對第二個問題,在啟動初期因為 PXE client 中有相應的 TFTP 用戶端,可以通過 TFTP 協定到 TFTP 伺服器中下載相關檔案啟動計算機。後期在安裝過程中,則通過 FTP 或 NFS 協定提供大量的作業系統安裝檔案的下載。

2、Kickstart

通過傳統的方式安裝和部署計算機時,都會要求通過互動的方式,回答各類問題,以完成安裝和部署任務,過程繁瑣,且無法實現自動化。紅帽公司開發了 Kickstart 的安裝方法,通過 ks 檔案可以解決所有普通安裝方式中需要回答的問題。可以通過 system-config-kickstart 工具客製化 ks 檔案,也可以通過相關語法來手工編寫安裝指令碼。

3、CentOS作業系統

本次實驗中所使用和安裝的作業系統為CentOS 7,理論上 CentOS 6也是適用的。

4、DHCP

動態主機設定協定,主要用於給 DHCP 用戶端自動分配 IP 地址,便於使用者管理網路內部的計算機。針對 PXE 環境下,DHCP 伺服器除分配 IP 地址外,還需要額外設定”next-server”選項定義 TFTP 伺服器的地址,設定”filename”選項定義啟動檔案的名稱。並且啟動”booting”與”bootp”的支援。

5、TFTP與FTP

簡單檔案傳輸協定(TFTP)主要用於為客戶機與伺服器之間進行簡單檔案傳輸的協定。在 PXE 早期啟動過程中,主要通過 TFTP 協定傳輸”pxelinux.0”。檔案傳輸協定(FTP),適用於大量檔案傳輸的情形,在後期安裝過程,主要通過 FTP 協定傳輸 Linux 作業系統的安裝包。

二、安裝設定FTP服務

FTP 服務主要是下載 ks.cfg 檔案和 作業系統檔案的,也可以用 HTTP 或 NFS 來代替。

1、安裝vsftpd服務

[root@localhost ~]# yum install -y vsftpd

2、提供作業系統映象檔案

FTP 預設設定即可,我們需要適用匿名使用者。通過ftp安裝作業系統,我們需要把作業系統映象檔案拷貝到這個匿名使用者目錄


[root@localhost ~]# mount /dev/cdrom /var/ftp/pub/ # /var/ftp/pub是ftp的匿名使用者目錄

3、啟動ftp服務

[root@localhost ~]# systemctl start  vsftpd    # 啟動ftp服務
[root@localhost ~]# systemctl enable vsftpd    # 設定開機啟動

三、安裝dhcp和tftp

DHCP 和 TFTP 服務可以選擇單獨分別去安裝,也可以通過安裝 dnsmasq 服務,來實現 DHCP 和 TFTP 的功能。

1、安裝dnsmasq軟體包

[root@localhost ~]# yum install -y dnsmasq

2、設定dnsmasq

dnsmasq 的組態檔是 /etc/dnsmasq.conf,主要是去掉以下相關的註釋,並設定修改 DHCP 的範圍和 TFTP 的根目錄。

bogus-priv
filterwin2k
interface=eth0
dhcp-range=192.168.0.50,192.168.0.100,12h
dhcp-boot=pxelinux.0
enable-tftp
tftp-root=/var/tftp    # tftp目錄預設是沒有的,需要手動建立
dhcp-authoritative

3、建立tftp根目錄

[root@localhost ~]# mkdir /var/tftp

4、啟動dnsmasq

[root@localhost ~]# systemctl start  dnsmasq
[root@localhost ~]# systemctl enable dnsmasq

四、拷貝和準備相關檔案

1、從iso中拷貝核心映象和檔案系統映象

cp /var/ftp/pub/images/pxeboot/initrd.img /var/tftp/    # 拷貝檔案系統映象
cp /var/ftp/pub/images/pxeboot/vmlinuz    /var/tftp/    # 拷貝核心映象檔案

2、生成pxe啟動檔案pxelinux.0

yum install -y syslinux                           # 安裝pxelinux.0所需要的包
rpm -ql syslinux | grep "pxelinux.0"              # 查詢檔案所在目錄
cp /usr/share/syslinux/pxelinux.0 /var/tftp/      # 拷貝pxelinux.0檔案到tftp根目錄

3、準備預設的選單組態檔

mkdir /var/tftp/pxelinux.cfg/         # 建立pxelinux.cfg目錄,固定目錄名稱
vim /var/tftp/pxelinux.cfg/default    # default檔案,必須為這個名稱
# 編輯內容如下
default linux
prompt 1
timeout 60
display boot.msg
label linux
  kernel vmlinuz
  append initrd=initrd.img text ks=ftp://192.168.0.3/ks.cfg    # 這個地方指定了ks.cfg檔案下載路徑,後邊會生成該檔案

4、生成kickstart檔案

kickstart 檔案可以通過 system-config-kickstart 視覺化工具來進行設定,生成 ks.cfg 檔案;也可以通過已經安裝好的作業系統的模板檔案 anaconda-ks.cfg 來稍加修改即可。下邊的 ks.cfg 檔案是做實驗時的樣本,內容如下(加粗為修改部分):

#version=DEVEL
# System authorization information
auth --enableshadow --passalgo=sha512
# Use CDROM installation media
install
url --url=ftp://192.168.0.3/pub/    # 需要指定安裝方式通過ftp來下載安裝作業系統
# Use graphical install
graphical
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'
# System language
lang en_US.UTF-8

# Network information
network  --bootproto=dhcp --device=ens33 --onboot=off --ipv6=auto --no-activate
network  --hostname=localhost.localdomain

# Root password
rootpw --iscrypted $6$LK7yftVlSa2zcGia$4loHYYWZUosdWvZA7Qzf.0lhmrcD5n26BK1xWm7QCNBdbBSjC7MK7yAYRvmIXGI8wu.t96jo6m8RRmNyjsKY60
# System services
services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp
# System bootloader configuration
bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel --drives=sda


... ... ... ... # 還有很多內容

拷貝 ks.cfg 檔案到 FTP 目錄

[root@localhost ~]# cp /root/anaconda-ks.cfg /var/ftp/ks.cfg


[root@localhost ~]# chmod +r /var/ftp/ks.cfg

五、用戶端安裝作業系統驗證

以上工作完成之後,就可以開始安裝作業系統了:

1、準備一台適當設定的物理機
2、連線網線,與伺服器在同一個區域網內
3、設定 BIOS 從網絡卡啟動
4、等待安裝

遇到的問題,有的主機即使設定了 BIOS 從 network 啟動,仍然不能正常從網路來啟動安裝,需要仔細查詢到 BISO 的關於 PXE 的開關設定,然後將其開啟,每個主機的 BIOS 設定方式都不同,需要自己根據具體的硬體來設定。

搭建PXE伺服器安裝Linux系統  http://www.linuxidc.com/Linux/2017-02/140481.htm

設定PXE 自動化安裝CentOS 6.7  http://www.linuxidc.com/Linux/2016-04/129926.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-02/140512.htm


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