UEFI iPXE 引導到 debian 會導致 grub shell
對於一些上下文,我是一名系統管理員學生,試圖擴展我的網路知識,因為這不是我的強項。
目前,我正在試驗 PXE。幾天前,我設置了幾台 ESXi 虛擬機,一台是 DHCP 和 TFTP 伺服器,另外兩台是 BIOS 和 UEFI 客戶端。我設法在 BIOS 和 UEFI 機器上通過 PXE 啟動 debian。
我聽說了 iPXE 以及它帶來的可能性(例如在 HTTP、iSCSI 上啟動……)並決定試一試。目前,我仍在嘗試啟動我的本地 debian netboot 安裝程序,我想我會在確保安裝正確後測試遠端文件。
在這一點上,這就是我的 DHCP conf 的樣子(減去不真正感興趣的東西):
option arch code 93 = unsigned integer 16; class "pxe-clients" { match if substring (option vendor-class-identifier, 0, 9) = "PXEClient"; option tftp-server-name "192.168.0.5"; next-server 192.168.0.5; if option arch = 00:00 { if exists user-class and option user-class = "iPXE" { filename = "pxelinux.0"; } else { filename = "undionly.kpxe"; } } elsif option arch = 00:02 or option arch = 00:06 or option arch = 00:07 or option arch = 00:08 or option arch = 00:09 { if exists user-class and option user-class = "iPXE" { filename = "bootnetx64.efi"; } else { filename = "ipxe.efi"; } } else { filename = "UNKNOWN_VCI"; } }
192.168.0.5
是 DHCP/TFTP 伺服器的 LAN IP。至於我的 TFTP 伺服器的根目錄:
root@vmpxe:/srv/tftp# ls -l total 968 lrwxrwxrwx 1 root root 37 Sep 22 14:01 bootnetx64.efi -> debian-installer/amd64/bootnetx64.efi drwxrwxr-x 3 root root 4.0K Sep 22 00:21 debian-installer -rw-r--r-- 1 root root 896K Sep 22 16:00 ipxe.efi lrwxrwxrwx 1 root root 47 Sep 22 00:21 ldlinux.c32 -> debian-installer/amd64/boot-screens/ldlinux.c32 lrwxrwxrwx 1 root root 33 Sep 22 00:21 pxelinux.0 -> debian-installer/amd64/pxelinux.0 lrwxrwxrwx 1 root root 35 Sep 22 00:21 pxelinux.cfg -> debian-installer/amd64/pxelinux.cfg -rw-r--r-- 1 root root 64K Sep 22 16:00 undionly.kpxe -rw-rw-r-- 1 root root 64 Sep 22 00:21 version.info
同樣,我堅持這樣一個事實,即在 iPXE 之前,兩種架構上的一切都執行良好。我所做的唯一更改是從 iPXE 的網站下載
undionly.kpxe
和ipxe.efi
文件,並編輯 DHCP conf 以將文件名設置包裝在if exists user-class and option user-class = "iPXE" {...} else {...}
條件中。現在,BIOS 機器執行 PXE -> iPXE -> Debian 的 netboot 安裝程序。一切正常。
但是,UEFI 機器執行 PXE -> iPXE -> grub shell。
我試圖 tcpdump 程序,但沒有產生任何結果:所有流量看起來都是正常的和預期的。它與我在 iPXE 之前所擁有的沒有太大區別。
知道這裡可能會發生什麼嗎?
編輯:進一步的 tcpdump 測試表明,如果沒有 iPXE,我的 EFI 機器會為引導載入程序和一堆其他文件發送 RRQ 數據包,我認為這些文件由引導載入程序本身引用。但是,對於 iPXE,只有引導載入程序我只看到引導載入程序。
所以我想正確的問題是:iPXE 會發生什麼,因為它不能檢索標準 PXE 正確下載的所有文件?
與您的問題無關,但
用於引導 EFI64
} elsif option arch = 00:02 or option arch = 00:06 or option arch = 00:07 or option arch = 00:08 or option arch = 00:09 {
應該改為
} elsif option arch = 00:07 or option arch = 00:09 {
關於你的問題,如果你啟動
bootnetx64.efi
那就是你得到的;一個蠐螬螢幕。見這裡: http: //lists.ipxe.org/pipermail/ipxe-devel/2015-December/004532.html
編輯:當您根據版本載入 pxelinux.0 時,它將檢索動態組件以及 pxelinux.0 菜單定義。當您載入 iPXE 時,您沒有載入那些額外的文件。