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 conf の 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 のおかげで、メンバーの 1 人 (申し訳ありませんが、ニックネームは覚えていません) が、レガシー 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
私の知る限りでは (ただし、私の実験はディスクレス Windows に関するもので、この大手 2 文字の IT 企業によって廃止される前にディスクレス ソリューションを Windows に移植し始めたとしても...)、別の方法が必要になる場合があります。1 - カーネル ラインに「root=」を指定しない 2 - initrd ラインを使用する (および構築する必要がある関連する init ram ドライブ) 3 - この initrd で、ルート パーティション (およびその他のパーティション) をマウントするために必要なブロック デバイスとファイル システム ドライバーを初期化する
このページを確認してください: http://linux120919.blogspot.fr/2015/01/redhat-65-as-legacy-and-uefi-pxe.html 例えば