Der Festplattenlose Linux UEFI-Boot schlägt bei Pivot_Root fehl, obwohl Root angegeben werden soll. Wie bestimme ich jedoch das Root-Gerät?

Der Festplattenlose Linux UEFI-Boot schlägt bei Pivot_Root fehl, obwohl Root angegeben werden soll. Wie bestimme ich jedoch das Root-Gerät?

Wir müssen einen EFI PXE-Server einrichten. Ich habe es erfolgreich geschafft, eine Testmaschine bis zum Pivot_Root-Teil des Bootvorgangs zu booten. Dann bekomme ich das gefürchtete:

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

Und ja, die Liste der Partitionen ist nil.

Kann mir jemand sagen, wie ich das Root-Gerät für meine alte Grub-Konfiguration für CentOS-Maschinen ohne Festplatte bekomme? Ich habe es offensichtlich bereits mit /dev/nvramund versucht /dev/ram.

Beim PXE-Booten (Legacy-Modus) gibt es kein Problem und auch keine speziellen Einstellungen, die ein Root-Gerät anfordern. Es funktioniert einfach. Dies ist das erste Mal, dass ich mit EFI-Booten arbeite, daher bin ich sicher, dass mir einfach ein paar Parameter fehlen.

Aktuelles Setup: CentOS 6.8, Legacy Grub (bootx64), ISC DHCP, TFTP

Aktuelle EFI-Konfiguration (/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

ENDGÜLTIGE BEHEBUNG

Das Problem bestand also darin, dass ich die falsche Syntax für die Legacy-GRUB-Konfiguration verwendete. Dank #CENTOS in Freenode (IRC) wies eines der Mitglieder (Entschuldigung, ich erinnere mich nicht an seinen/ihren Spitznamen) darauf hin, dass Legacy-GRUB die appendDirektive nicht versteht. Das Verschieben der Argumente in der appendZeichenfolge meiner Konfiguration (oben) in die kernelDirektive und das Entfernen der appendZeichenfolge in der initrdZeile sowie das Entfernen des =Zwischenzeichens initrdund /discover...löste das Problem:

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

Antwort1

Soweit ich weiß (aber mein eigenes Experiment bezieht sich eher auf festplattenloses Windows, auch wenn wir begonnen haben, unsere festplattenlose Lösung auf Windows zu portieren, bevor sie von diesem großen IT-Unternehmen mit zwei Buchstaben abgeschafft wurde...), benötigen Sie möglicherweise etwas anderes. 1 – Geben Sie in der Kernelzeile kein „root=“ an. 2 – Verwenden Sie eine Initrd-Zeile (und das zugehörige Init-RAM-Laufwerk, das Sie erstellen müssen). 3 – Initialisieren Sie in diesem Initrd alle Blockgeräte und Dateisystemtreiber, die Sie zum Mounten Ihrer Root-Partition (und auch anderer Partitionen) benötigen.

Schauen Sie sich diese Seite an: http://linux120919.blogspot.fr/2015/01/redhat-65-as-legacy-and-uefi-pxe.html zum Beispiel

verwandte Informationen