Fedora
通過 PXE 引導進行 Fedora 網路安裝
如何使用 PXE 引導通過網路安裝 Fedora?
動機:目標系統的 BIOS 根本無法從 USB 大容量儲存設備啟動。另一個動機是通過網路啟動更方便。
挑戰:LAN 已經有一個無法更改的 DHCP 伺服器,即不支持配置 PXE 相關選項的伺服器(它是 Fritz Box 路由器的一部分)。
也可以為PXE設置代理 DHCP服務。因此,無需更改現有的 DHCP 伺服器。然後可以使用普通的 Linux 系統(例如工作站)來託管預引導執行環境 (PXE)。
需要以下步驟來設置 PXE 以對Fedora 網路安裝映像進行網路引導(假設也是 Fedora 主機):
驗證圖像
$ gpg --verify Fedora-Server-21-x86_64-CHECKSUM $ sha256sum --check Fedora-Server-21-x86_64-CHECKSUM Fedora-Server-netinst-x86_64-21.iso: OK
掛載鏡像
mkdir /mnt/iso mount -o loop Fedora-Server-netinst-x86_64-21.iso /mnt/iso
DHCP 設置
yum install dnsmasq tftp-server syslinux-tftpboot
該
tftp-server
軟體包僅用於創建目錄/var/lib/tftpboot
,dnsmasq 已經集成了一個 tftp 伺服器。配置:
cat > /etc/dnsmasq.conf interface=enp0s25 # and don't bind to 0.0.0.0 bind-interfaces # extra logging log-dhcp dhcp-range=192.168.178.0,proxy # first IP address is the one of the host dhcp-boot=pxelinux.0,192.168.178.34,192.168.178.0 pxe-service=x86PC,"Automatic Network Boot",pxelinux # Specify the IP address of another tftp server enable-tftp # default location of tftp-server on Fedora tftp-root=/var/lib/tftpboot # disable DNS port=0
啟動它:
systemctl start dnsmasq.service
設置 TFTP 目錄
複製所有需要的文件:
cp /mnt/iso/images/pxeboot/initrd.img /var/lib/tftpboot cp /mnt/iso/images/pxeboot/vmlinuz /var/lib/tftpboot cp /tftpboot/pxelinux.0 /var/lib/tftpboot cp /tftpboot/vesamenu.c32 /var/lib/tftpboot cp /tftpboot/ldlinux.c32 /var/lib/tftpboot cp /tftpboot/libcom32.c32 /var/lib/tftpboot cp /tftpboot/libutil.c32 /var/lib/tftpboot
添加配置:
mkdir /var/lib/tftpboot/pxelinux.cfg cat > /var/lib/tftpboot/pxelinux.cfg/default default vesamenu.c32 prompt 0 # disable timeout timeout 0 #timeout 600 # if file is missing, this is ignored display boot.msg label linux menu label Install Fedora 21 Server x86-64 kernel vmlinuz append initrd=initrd.img inst.stage2=http://workstation.example.org/
設置 HTTP 伺服器
yum install nginx
配置實例:
cat > /etc/nginx/conf.d/iso.conf server { listen 80 default_server; server_name localhost; root /mnt/iso ; include /etc/nginx/default.d/*.conf; }
禁用預設實例/將其移動到不同的埠:
--- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -43,7 +43,7 @@ http { include /etc/nginx/conf.d/*.conf; server { - listen 80 default_server; + listen 8080 default_server; server_name localhost; root /usr/share/nginx/html;
啟動伺服器:
systemctl start nginx.service
Fedora 安裝程序(dracut)基本上只需要從該 http 伺服器獲取一個文件:
LiveOS/squashfs.img
配置防火牆
firewall-cmd --add-service=http firewall-cmd --add-service=dhcp firewall-cmd --add-service=tftp firewall-cmd --add-service=http --permanent firewall-cmd --add-service=dhcp --permanent firewall-cmd --add-service=tftp --permanent
引導客戶端
就是這樣。客戶端可以通過 PXE 進行網路引導並獲取 Fedora 網路安裝映像。
變化可能是:為全自動網路安裝添加 kickstart 文件(並設置超時),為不同的客戶端配置不同的 PXE 設置(基於 MAC 地址)等。
清理
可以停止守護程序並解除安裝環回映像:
systemctl stop nginx.service systemctl stop dnsmasq.service umount /mnt/iso
安全說明
此方法只應在受信任的 Intranet 中執行,因為 netboot 客戶端通過 TFTP 和 HTTP 獲取其配置和幾個絕對不安全的映像。