天天看點

CentOS系統通過PXE實作批量無人值守安裝

    通過傳統的方式安裝和部署計算機時,都需要人工幹預的方式完成安裝。如果需要部署大量的類似功能的工作站或伺服器,則需要耗費大量的時間。同時傳統的安裝方式,每台計算機都需要光驅裝置及安裝CD光牒等媒體,會額外增加部署成本。是以,許多系統管理者都希望能夠通過一種網絡化的無人值守的自動安裝方式将作業系統部署到目标計算機中。

一、相關服務和工具

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 設定方式都不同,需要自己根據具體的硬體來設定。

繼續閱讀