Debian

UEFI iPXE 引導到 debian 會導致 grub shell

  • July 30, 2021

對於一些上下文,我是一名系統管理員學生,試圖擴展我的網路知識,因為這不是我的強項。

目前,我正在試驗 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.kpxeipxe.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 時,您沒有載入那些額外的文件。

引用自:https://serverfault.com/questions/804750