Linux中國

RHEL/CentOS 7 中配置 PXE 網路啟動伺服器

在RHEL/CentOS 7中設置PXE網路啟動

前置閱讀

本文將介紹如何在配置有本地鏡像安裝倉庫的RHEL/CentOS 7 64位上安裝並配置一台PXE伺服器,倉庫源由CentOS 7 DVD 的 ISO鏡像提供,並由DNSMASQ伺服器提供解析。

該機器提供了DNSDHCP服務,用於網路啟動引導的Syslinux包,TFTP-Server——提供了可通過網路使用小文件傳輸協議下載的可啟動鏡像,以及提供本地掛載DVD鏡像的VSFTPD伺服器——它將扮演官方RHEL/CentOS 7鏡像安裝倉庫的角色,安裝器將從這裡提取所需的包。

步驟1: 安裝並配置DNSMASQ伺服器

1. 不需要提醒你來確定你的網路介面卡吧,除非你的伺服器上有多個網路介面卡,該網卡必須配置有靜態IP地址,該IP地址必須處於你要提供PXE服務的網段中。

那麼,在你配置好靜態IP地址後,更新你的系統並進行其它初始設置。請使用以下命令來安裝DNSMASQ進程。

# yum install dnsmasq

Install dnsmasq Package

安裝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 Configuration

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

Install Syslinux Bootloaders

安裝Syslinux啟動載入器

5. PXE啟動載入器文件位於/usr/share/syslinux系統絕對路徑下,你可以通過列出該路徑下的內容來查看。該步驟不是必須的,但你可能需要知道該路徑,因為在下一步中,我們將拷貝該路徑下的所有內容到TFTP伺服器路徑下。

# ls /usr/share/syslinux

Syslinux Files

Syslinux文件

步驟3: 安裝TFTP-Server並加入SYSLINUX載入啟動器

6. 現在,讓我們進入下一步,安裝TFTP-Server。然後,拷貝上述位置中Syslinux包提供所有啟動載入器文件到/var/lib/tftpboot路徑中,命令如下。

# yum install tftp-server
# cp -r /usr/share/syslinux/* /var/lib/tftpboot

Install TFTP Server

安裝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

Configure PXE Server

配置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

Mount CentOS DVD

掛載CentOS DVD

如果你的機器沒有DVD驅動器,你也可以使用wgetcurl工具從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

Copy CentOS Bootable Files

拷貝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

Install Vsftpd Server

安裝Vsftpd伺服器

Copy Files to FTP Path

拷貝Files到FTP路徑

Set Permissions on FTP Path

設置FTP路徑的許可權

步驟7: 在系統範圍內啟動並啟用進程

12. 既然PXE伺服器配置已經完成,那麼就來啟動DNSMASQVSFTPD伺服器吧。驗證它們的狀況並在系統上啟用,以便讓這些服務在每次系統重啟後都能隨系統啟動,命令如下。

# systemctl start dnsmasq
# systemctl status dnsmasq
# systemctl start vsftpd
# systemctl status vsftpd
# systemctl enable dnsmasq
# systemctl enable vsftpd

Start Dnsmasq Service

啟動Dnsmasq服務

Start Vsftpd Service

啟動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

Check Listening Ports

檢查監聽埠

Open Ports in Firewall

在防火牆上開啟埠

14. 要測試FTP安裝源網路路徑,請在本地或另外一台計算機上打開瀏覽器(lynx就可以做此事),然後輸入你架設有FTP服務的PXE伺服器的IP地址,並在填入的URL後面加上/pub網路位置,結果應該和截圖中看到的一樣。

ftp://192.168.1.20/pub

Access FTP Files via Browser

通過瀏覽器訪問FTP文件

15. 要解決PXE伺服器最終的配置或其它信息產生的問題,請在live模式下診斷,命令如下:

# tailf /var/log/messages

Check PXE Logs for Errors

檢查PXE日誌錯誤

16. 最後,最終所需的步驟就是卸載CentOS 7 DVD,並移除物理介質。

# umount /mnt

步驟9: 配置客戶端從網路啟動

17. 現在,你的客戶端可以通過它們的系統BIOS或在BIOS開機自檢時按指定鍵來配置網路啟動作為首選啟動設備,具體方法見主板說明手冊。

為了選擇網路啟動,在第一次PXE提示符出現時,請按下F8鍵進入到PXE安裝界面,然後敲回車鍵繼續進入PXE菜單。

PXE Network Boot

PXE網路啟動

PXE Network OS Boot

PXE網路OS啟動

18. 一旦你進入PXE菜單,請選擇你的CentOS 7安裝類型,敲回車鍵繼續安裝過程,就像你使用本地啟動介質安裝一樣。

請記住這一點,使用菜單中的變體2需要激活目標客戶端上的互聯網連接。在下面的屏幕截圖中,你可以通過VNC看到遠程安裝的實例。

PXE Menu

PXE菜單

Remote Linux Installation via VNC

通過VNC遠程安裝Linux

Remote Installation of CentOS

遠程安裝CentOS

以上是CentOS 7上配置最小化PXE伺服器的所有內容。在我的本系列下一篇文章中,我將討論其它PXE伺服器配置過程中的其它問題,如怎樣使用Kickstart文件來配置自動化安裝CentOS 7,以及添加其它Linux發行版到PXE菜單——Ubuntu ServerDebian 7

via: http://www.tecmint.com/install-pxe-network-boot-server-in-centos-7/

作者:Matei Cezar 譯者:GOLinux 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國