我們需要設定 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 例如