Fedora

如何 pxe 啟動 Fedora 25 救援

  • February 15, 2018

由於超出我理解水平的原因,我似乎無法通過 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 啟動有點挑戰,因為它需要很多活動元件:

  1. 能夠分發下一個伺服器參數的 DHCP 伺服器。
  2. 一個工作的 TFTP 伺服器
  3. 核心映像和初始 ramdisk 的副本
  4. 提供掛載的 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。

然後,像你一樣,我將initrdvmlinuz文件從images/pxelinuxISO 映像的目錄中復製到 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在上述所有配置上,它會工作。

引用自:https://unix.stackexchange.com/questions/350813