如何 pxe 啟動 Fedora 25 救援
由於超出我理解水平的原因,我似乎無法通過 pxe 啟動 Fedora 25 的救援實例。在無數次嘗試使用工作站版本之後,我恢復到伺服器 dvd,因為最後,我唯一需要的是啟動 pxe fedora 以在我的本地磁碟分區上工作。唉,那裡沒有運氣。
目前正在尋找附加行中不同關鍵字的確切含義。(pxe, grub, …) 希望找到正確的魔法公式,但我的 googlefu 似乎也讓我失望了。
與其他發行版沒有問題,但我想了解為什麼 fedora 如此痛苦。
即:在 centos7 pxe (nfs) 上啟動救援非常簡單:
LABEL c7r kernel centos/7/vmlinuz append initrd=centos/7/initrd.img method=nfs:192.168.16.252:/pxedev/centos/7 rescue
Fedora 25 上的一些嘗試:
LABEL f25r kernel fedora/25s/vmlinuz append initrd=fedora/25s/initrd.img ip=dhcp root=nfs:192.168.16.252:/pxedev/fedora25s/ rescue
從 PXE (nfs) 安裝並不困難:
LABEL f25ws kernel fedora/25/vmlinuz append initrd=fedora/25/initrd.img ip=dhcp inst.stage2=nfs:192.168.16.252:/pxedev/fedora25/
所以我錯過了fedora 25的pxe救援所需的資訊。對於伺服器版本,我下載了dvd:“Fedora-Server-dvd-x86_64-25-1.3.iso”,然後我將其完全提取到文件夾中並拿走了“images/pxeboot”目錄中的核心和 initramfs。
TL;DR 是您忘記為救援圖像提供 inst.stage2 參數。initrd 和核心不足以將 Fedora 引導到救援模式,它需要 Anaconda 的第二階段載入程序。把你
root=nfs
的東西換成inst.stage2=nfs:192.168.16.252:/pxedev/fedora25/
你應該去參加比賽。更長的答案:
PXE 啟動有點挑戰,因為它需要很多活動元件:
- 能夠分發下一個伺服器參數的 DHCP 伺服器。
- 一個工作的 TFTP 伺服器
- 核心映像和初始 ramdisk 的副本
- 提供掛載的 ISO 映像內容的功能性 HTTP 伺服器(NFS 可用作替代方案)
接下來是我如何使它工作。
軟體安裝
dnf -y install dhcp-server tftp-server httpd syslinux-tftpboot
ISC DHCPd 部分
注意:YMMV 與其他 DHCP 伺服器。
該
next-server
參數是您的 TFTP 伺服器的 IP。Subnet 192.168.0.0 netmask 255.255.255.0 { range 192.168.0.100 192.168.0.200; option routers 192.168.0.1; class "pxeclients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; next-server 192.168.0.2; filename "pxelinux.0"; } }
TFTPd 部分
Fedora 將 TFTP 根目錄放在 中
/var/lib/tftpboot
,您需要在其中創建幾個目錄來包含引導映像和 pxe 配置。我通常使我的子目錄是這樣的:
$OSVER/$ARCH
所以我可以在任何給定時間啟動多個版本的 Fedora PXE。然後,像你一樣,我將
initrd
和vmlinuz
文件從images/pxelinux
ISO 映像的目錄中復製到 tftpboot 的相應子目錄中。接下來,在您的 tftpboot 目錄中,創建一個名為
pxelinux.cfg
. 在此目錄中,您將創建配置文件,名為default
. 在此文件中,您將生成類似於以下內容的條目:default vesamenu.c32 prompt 0 timeout 100 label local menu label Boot from ^local drive localboot 0xffff label f25_x86_64 menu label Fedora 25 x86_64 (Generic) kernel f25/x86_64/vmlinuz append initrd=f25/x86_64/initrd.img repo=http://192.168.0.2/os/fedora/25/x86_64/ ks=http://192.168.0.2/ks/f25-x86_64-ks.cfg label f25_rescue menu label Fedora 25 ^Rescue Mode kernel f25/x86_64/vmlinuz append initrd=f25/x86_64/initrd.img inst.stage2=http://192.168.0.2/os/fedora/25/x86_64 rescue
第 2 階段的圖像足夠大,通過 PXE 傳送它們有時會出現問題,因此我通過 HTTP 傳送它們。
接下來,您需要將所有
*.c32
文件從/tftpboot/
to移動,/var/lib/tftpboot
因為 syslinux-tftpboot 由於某種原因不知道 tftp-server 的不同根目錄。HTTPD 部分
通過 HTTPD 獲取可用的 ISO 映像:
mkdir /var/www/html/os/fedora/$FEDORAVERSION/$ARCH
最簡單的方法是mount -o loop,uid=48,gid=48,mode=0755 /path/to/fedora-server.iso /var/www/html/os/fedora/$FEDORAVERSION/$ARCH
一旦配置並啟用了所有守護程序,繁榮,它就可以工作了。
如果你想啟動 Fedora 27,你基本上可以
sed -r -e s/25/27/g
在上述所有配置上,它會工作。