RHEL/CentOS 7 中配置 PXE 網路啟動伺服器
前置閱讀
- CentOS 7最小化安裝步驟
- RHEL 7最小化安裝步驟
- 在RHEL/CentOS 7中配置靜態IP地址
- 移除RHEL/CentOS 7中不要的服務
- 安裝NTP伺服器以設置RHEL/CentOS 7的正確時間
本文將介紹如何在配置有本地鏡像安裝倉庫的RHEL/CentOS 7 64位上安裝並配置一台PXE伺服器,倉庫源由CentOS 7 DVD 的 ISO鏡像提供,並由DNSMASQ伺服器提供解析。
該機器提供了DNS和DHCP服務,用於網路啟動引導的Syslinux包,TFTP-Server——提供了可通過網路使用小文件傳輸協議下載的可啟動鏡像,以及提供本地掛載DVD鏡像的VSFTPD伺服器——它將扮演官方RHEL/CentOS 7鏡像安裝倉庫的角色,安裝器將從這裡提取所需的包。
步驟1: 安裝並配置DNSMASQ伺服器
1. 不需要提醒你來確定你的網路介面卡吧,除非你的伺服器上有多個網路介面卡,該網卡必須配置有靜態IP地址,該IP地址必須處於你要提供PXE服務的網段中。
那麼,在你配置好靜態IP地址後,更新你的系統並進行其它初始設置。請使用以下命令來安裝DNSMASQ進程。
# yum install dnsmasq
安裝dnsmasq包
2. DNSMASQ的默認的主配置文件位於/etc目錄中,雖然不需要任何說明就能看懂,但編輯起來確實相當困難的,即使有很詳細的說明性注釋。
首先,確保你備份了該文件,以便你需要在以後對它進行恢復。然後使用你愛用的文本編輯器創建一個新的空配置文件,命令如下。
# mv /etc/dnsmasq.conf /etc/dnsmasq.conf.backup
# nano /etc/dnsmasq.conf
3. 現在,複製並粘貼以下配置到dnsmasq.conf文件中,並確保根據如下說明進行相應修改,以適應你的網路設置。
interface=eno16777736,lo
#bind-interfaces
domain=centos7.lan
# DHCP range-leases
dhcp-range= eno16777736,192.168.1.3,192.168.1.253,255.255.255.0,1h
# PXE
dhcp-boot=pxelinux.0,pxeserver,192.168.1.20
# Gateway
dhcp-option=3,192.168.1.1
# DNS
dhcp-option=6,92.168.1.1, 8.8.8.8
server=8.8.4.4
# Broadcast Address
dhcp-option=28,10.0.0.255
# NTP Server
dhcp-option=42,0.0.0.0
pxe-prompt="Press F8 for menu.", 60
pxe-service=x86PC, "Install CentOS 7 from network server 192.168.1.20", pxelinux
enable-tftp
tftp-root=/var/lib/tftpboot
Dnsmasq配置
你需要修改的聲明有以下這些:
- interface – 伺服器需要監聽並提供服務的網路介面。
- bind-interfaces – 取消注釋來綁定到該網路介面
- domain – 替換為你的域名。
- dhcp-range – 替換為你的網路掩碼定義的網段。
- dhcp-boot – 替換該IP地址為你的網路介面IP地址。
- dhcp-option=3,192.168.1.1 – 替換該IP地址為你的網段的網關。
- dhcp-option=6,92.168.1.1 – 替換該IP地址為你的DNS伺服器IP——可以定義多個IP地址。
- server=8.8.4.4 – 這裡放置DNS轉發伺服器IP地址。
- dhcp-option=28,10.0.0.255 – 替換該IP地址為網路廣播地址——可選項。
- dhcp-option=42,0.0.0.0 – 這裡放置網路時鐘伺服器——可選項(0.0.0.0地址表示參考自身)。
- pxe-prompt – 保持默認——按F8進入菜單,60秒等待時間。
- pxe=service – 使用x86PC作為32為/64位架構,並在字元串引述中輸入菜單描述提示。其它類型值可以是:PC98,IAEFI,Alpha,Arcx86,IntelLeanClient,IA32EFI,BCEFI,XscaleEFI和X86-64EFI。
- enable-tftp – 啟用內建TFTP伺服器。
- tftp-root – 使用/var/lib/tftpboot——所有網路啟動文件所在位置。
其它和配置文件相關的高級選項,請參閱dnsmasq手冊。
步驟2: 安裝SYSLINUX啟動載入器
4. 在編輯並保存DNSMASQ主配置文件後,我們將繼續安裝Syslinux PXE啟動載入器,命令如下。
# yum install syslinux
安裝Syslinux啟動載入器
5. PXE啟動載入器文件位於/usr/share/syslinux系統絕對路徑下,你可以通過列出該路徑下的內容來查看。該步驟不是必須的,但你可能需要知道該路徑,因為在下一步中,我們將拷貝該路徑下的所有內容到TFTP伺服器路徑下。
# ls /usr/share/syslinux
Syslinux文件
步驟3: 安裝TFTP-Server並加入SYSLINUX載入啟動器
6. 現在,讓我們進入下一步,安裝TFTP-Server。然後,拷貝上述位置中Syslinux包提供所有啟動載入器文件到/var/lib/tftpboot路徑中,命令如下。
# yum install tftp-server
# cp -r /usr/share/syslinux/* /var/lib/tftpboot
安裝TFTP伺服器
步驟4: 設置PXE伺服器配置文件
7. 通常,PXE伺服器從位於pxelinux.cfg文件夾中一組指定的文件中讀取配置(首先是GUID文件,接下來是MAC文件,最後是Default文件),該文件夾必須位於DNSMASQ主配置文件中tftp-root聲明指定的目錄中。
創建需要的目錄pxelinux.cfg,然後添加default文件到該目錄中,命令如下。
# mkdir /var/lib/tftpboot/pxelinux.cfg
# touch /var/lib/tftpboot/pxelinux.cfg/default
8. 現在,該來編輯PXE伺服器配置文件了,為它添加合理的Linux發行版安裝選項。請注意,該文件中使用的所有路徑必須是相對於/var/lib/tftpboot目錄的。
下面,你可以看到配置文件的樣例,你可以使用該模板,但請修改安裝鏡像(kernel和initrd文件)、協議(FTP、HTTP、HTTPS、NFS)以及映射你網路安裝源倉庫和路徑的IP地址等參數。
# nano /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 x64 with Local Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount
label 2
menu label ^2) Install CentOS 7 x64 with http://mirror.centos.org Repo
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=http://mirror.centos.org/centos/7/os/x86_64/ devfs=nomount ip=dhcp
label 3
menu label ^3) Install CentOS 7 x64 with Local Repo using VNC
kernel centos7/vmlinuz
append initrd=centos7/initrd.img method=ftp://192.168.1.20/pub devfs=nomount inst.vnc inst.vncpassword=password
label 4
menu label ^4) Boot from local drive
配置PXE伺服器
正如你所見,CentOS 7啟動鏡像(kernel和initrd)位於名為centos7的目錄,該目錄是/var/lib/tftpboot目錄的相對路徑(其系統絕對路徑為/var/lib/tftpboot/centos7),而安裝器倉庫位於可通過FTP協議訪問的192.168.1.20/pub網路位置中——在本例中,這些倉庫位於本地,因為IP地址和PXE伺服器地址相同。
同時,菜單label 3指定客戶端安裝應該通過VNC從一個遠程位置實現(這裡替換VNC密碼為一個健壯的密碼),如果你在一台沒有輸入輸出的客戶端上安裝,菜單label 2指定了作為安裝源的一個CentOS 7官方互聯網鏡像(這種情況要求客戶端通過DHCP和NAT連接到互聯網)。
重要:正如你在上述配置中所看到的,我們使用了CentOS 7進行演示,但是你也可以定義一個 RHEL 7鏡像。而下面的整個的說明和配置都只是基於CentOS 7的,所以在選發行版時要注意一下。
步驟5: 添加CentOS 7啟動鏡像到PXE伺服器
9. 對於此步驟,需要用到CentOS的kernel和initrd文件。要獲取這些文件,你需要CentOS 7 DVD ISO鏡像。所以,去下載CentOS DVD鏡像吧,然後把它(刻錄成光碟)放入你的DVD驅動器並掛載鏡像到/mnt路徑,命令見下面。
使用DVD,而不是最小化CD鏡像的原因在於,在後面我們將使用該DVD的內容為FTP源創建本地安裝器倉庫。
# mount -o loop /dev/cdrom /mnt
# ls /mnt
掛載CentOS DVD
如果你的機器沒有DVD驅動器,你也可以使用wget或curl工具從CentOS鏡像站下載CentOS 7 DVD ISO到本地並掛載。
# wget http://mirrors.xservers.ro/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso
# mount -o loop /path/to/centos-dvd.iso /mnt
10. 在DVD內容可供使用後,創建centos7目錄並將CentOS 7 的可啟動的 kernel和initrd映像文件從DVD掛載位置拷貝到centos7文件夾。
# mkdir /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7
# cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7
拷貝CentOS可啟動文件
使用該方法的原因在於,今後你可能會在/var/lib/tftpboot路徑中創建新的獨立的目錄,並添加其它Linux發行版到PXE菜單中,你就不會將整個目錄結構弄得一團糟了。
步驟6: 創建CentOS 7本地鏡像安裝源
11. 雖然你可以通過多種協議設置安裝源鏡像,如HTTP、HTTPS或NFS,但對於本指南,我選擇了使用FTP協議。因為通過vsftpd,你可以很便捷地配置,而且它也很穩定。
接下里,安裝vsftpd進程,然後複製所有DVD掛載目錄中的內容到vsftpd默認伺服器路徑下(/var/ftp/pub)——這會花費一些時間,這取決於你的系統資源。然後為該路徑設置可讀許可權,命令如下。
# yum install vsftpd
# cp -r /mnt/* /var/ftp/pub/
# chmod -R 755 /var/ftp/pub
安裝Vsftpd伺服器
拷貝Files到FTP路徑
設置FTP路徑的許可權
步驟7: 在系統範圍內啟動並啟用進程
12. 既然PXE伺服器配置已經完成,那麼就來啟動DNSMASQ和VSFTPD伺服器吧。驗證它們的狀況並在系統上啟用,以便讓這些服務在每次系統重啟後都能隨系統啟動,命令如下。
# systemctl start dnsmasq
# systemctl status dnsmasq
# systemctl start vsftpd
# systemctl status vsftpd
# systemctl enable dnsmasq
# systemctl enable vsftpd
啟動Dnsmasq服務
啟動Vsftpd服務
步驟8: 打開防火牆並測試FTP安裝源
13. 要獲取需要在防火牆打開的埠列表,以便讓客戶機可訪問並從PXE伺服器啟動,請運行netstat命令並根據dnsmasq和vsftpd監聽列表添加CentOS 7防火牆規則。
# netstat -tulpn
# firewall-cmd --add-service=ftp --permanent ## Port 21
# firewall-cmd --add-service=dns --permanent ## Port 53
# firewall-cmd --add-service=dhcp --permanent ## Port 67
# firewall-cmd --add-port=69/udp --permanent ## Port for TFTP
# firewall-cmd --add-port=4011/udp --permanent ## Port for ProxyDHCP
# firewall-cmd --reload ## Apply rules
檢查監聽埠
在防火牆上開啟埠
14. 要測試FTP安裝源網路路徑,請在本地或另外一台計算機上打開瀏覽器(lynx就可以做此事),然後輸入你架設有FTP服務的PXE伺服器的IP地址,並在填入的URL後面加上/pub網路位置,結果應該和截圖中看到的一樣。
ftp://192.168.1.20/pub
通過瀏覽器訪問FTP文件
15. 要解決PXE伺服器最終的配置或其它信息產生的問題,請在live模式下診斷,命令如下:
# tailf /var/log/messages
檢查PXE日誌錯誤
16. 最後,最終所需的步驟就是卸載CentOS 7 DVD,並移除物理介質。
# umount /mnt
步驟9: 配置客戶端從網路啟動
17. 現在,你的客戶端可以通過它們的系統BIOS或在BIOS開機自檢時按指定鍵來配置網路啟動作為首選啟動設備,具體方法見主板說明手冊。
為了選擇網路啟動,在第一次PXE提示符出現時,請按下F8鍵進入到PXE安裝界面,然後敲回車鍵繼續進入PXE菜單。
PXE網路啟動
PXE網路OS啟動
18. 一旦你進入PXE菜單,請選擇你的CentOS 7安裝類型,敲回車鍵繼續安裝過程,就像你使用本地啟動介質安裝一樣。
請記住這一點,使用菜單中的變體2需要激活目標客戶端上的互聯網連接。在下面的屏幕截圖中,你可以通過VNC看到遠程安裝的實例。
PXE菜單
通過VNC遠程安裝Linux
遠程安裝CentOS
以上是CentOS 7上配置最小化PXE伺服器的所有內容。在我的本系列下一篇文章中,我將討論其它PXE伺服器配置過程中的其它問題,如怎樣使用Kickstart文件來配置自動化安裝CentOS 7,以及添加其它Linux發行版到PXE菜單——Ubuntu Server和Debian 7。
via: http://www.tecmint.com/install-pxe-network-boot-server-in-centos-7/
作者:Matei Cezar 譯者:GOLinux 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive