無碟 Linux UEFI 啟動在要指定 root 的pivot_root 處失敗,但如何決定根裝置?

無碟 Linux UEFI 啟動在要指定 root 的pivot_root 處失敗,但如何決定根裝置?

我們需要設定 EFI PXE 伺服器。我已經成功地讓測試機器一直啟動,直到我們到達啟動過程的pivot_root 部分。然後我就得到了可怕的:

VFS: Cannot open root device "nvram" or unknown-block(0,0)
Please append a correct "root=" boot option; here are the available partitions:

是的,分區列表是nil

誰能告訴我如何為無磁碟機 centos 機器取得舊版 grub 配置的 root= 裝置?顯然,我已經嘗試過了/dev/nvram,並且/dev/ram

當我們 PXE 啟動(傳統模式)時,沒有任何問題或要求根設備的特殊設定。它就是有效的。這是我第一次使用 EFI 啟動,所以我確信我只是缺少一些參數。

目前設定:CentOS 6.8、舊版 Grub (bootx64)、ISC DHCP、TFTP

目前 EFI 配置(/EFI/efidefault):

default=0
timeout=3
splashimage=(nd)/splash.xpm.gz
#prompt 0
#ONTIMEOUT default

title Linux
   menu label UEFI Image
   menu default
   root (nd)
   kernel /discovery_images/2.6.32-642.el6.x86_64/vmlinuz-2.6.32-642.el6.x86_64 root=/dev/nvram
   append initrd=/discovery_images/2.6.32-642.el6.x86_64/centos-initramfs-2.6.32-642.el6.x86_64.img.gz rw shell init=/init biosdevname=0 consoleblank=0 vga=773 ramdisk_size=9216

最終修復

所以問題是我對舊版 GRUB 設定使用了錯誤的語法。感謝 Freenode (IRC) 中的 #CENTOS,其中一位成員(抱歉,我不記得他/她的暱稱)指出 Legacy GRUB 不理解該append指令。因此,將append我的配置字串(上面)中的參數移動到kernel指令並丟失append該行上的字串initrd,最後刪除和=之間的參數,解決了問題:initrd/discover...

default=0
timeout=3
splashimage=(nd)/splash.xpm.gz

title Linux
   menu label UEFI Image
   menu default
   root (nd)
   kernel /discovery_images/2.6.32-642.el6.x86_64/vmlinuz-2.6.32-642.el6.x86_64 rw shell init=/init biosdevname=0 consoleblank=0 vga=773 ramdisk_size=9216
   initrd /discovery_images/2.6.32-642.el6.x86_64/centos-initramfs-2.6.32-642.el6.x86_64.img.gz

答案1

AFAICT(但我自己的實驗更多的是無碟Windows,即使我們在它被這家大兩個字母IT公司殺死之前就開始將我們的無碟解決方案移植到Windows...) ,您可能需要一些不同的東西。 1 - 不要在核心行上指定任何「root=」 2 - 使用 initrd 行(以及您必須建置的相關 init ram 磁碟機) 3 - 在此 initrd 中,啟動您需要安裝的任何區塊裝置和檔案系統驅動程式您的根分區(以及其他分區)

檢查此頁面: http://linux120919.blogspot.fr/2015/01/redhat-65-as-legacy-and-uefi-pxe.html 例如

相關內容