
Wie starte ich vmlinuz-linux von der EFI-Shell aus? Ich gehe ins ESP und gebe ein vmlinuz-linux
(vmlinuz-linux ist im ESP), aber es heißt vmlinuz-linux isn't recognized as an internal or external command, operable program, or batch file
: „Warum muss ich zuerst einen Bootloader starten?“ Ich verstehe es nicht.
Antwort1
Musste /vmlinuz-linux root=PARTUUID=3518bb68-d01e-45c9-b973-0b5d918aae96 initrd=/initramfs-linux.img
das einfach abtippenhttps://wiki.archlinux.org/index.php/EFISTUB#Booting_EFISTUB/
aber vorher musste der Schrägstrich entfernt werden, vmlinuz-linux
damit es funktionierte.
Antwort2
Ob Sie einen Bootloader benötigen oder nicht, hängt davon ab, ob Ihre spezielle Version des Linux-Kernels EFI BOOT STUB unterstützt.
Weitere Informationen finden Sie unter:https://www.kernel.org/doc/Documentation/efi-stub.txt
Antwort3
Soweit ich mich erinnere, startet die EFI-Shell Dateien nicht als Programme, deren Namen nicht auf enden .efi
. Daher müssen Sie zuerst die Kerneldatei umbenennen, sodass ihr Name auf endet .efi
.
Wenn Sie die Kerneldatei nicht umbenennen können, können Sie dennoch einen Kernel mit dem EFI-Stub-Loader über ein anderes Bootmanagerprogramm wie Gummiboot/Systemd-Boot oder rEFInd starten. Diese Tools kümmern sich nicht um die Dateinamenerweiterung – zumindest nicht so sehr wie die Shell. (Die automatische Scanfunktion von rEFInd entspricht *.efi
, vmlinuz*
, bzImage*
, und kernel*
, aber die manuelle Bootkonfiguration für beide Programme funktioniert mit jedem Dateinamen.)
Außerdem muss der Kernel, wie fpmurphy1 sagt, mit EFI-Stub-Unterstützung kompiliert werden. Die meisten Distributionen haben diese Unterstützung in ihren Kerneln 3.3.0 und höher integriert, aber das ist möglicherweise nicht 100 % universell, insbesondere wenn Sie Ihren Kernel selbst kompilieren. (Als ich das letzte Mal nachgesehen habe, war die EFI-Stub-Unterstützung nicht Teil der Standard-Kernelkonfiguration für Kernelquellen, die von bezogen wurden kernel.org
.)
Antwort4
Die beste Beschreibung finden Sie Documentation/efi-stub.txt
in diesem Beispiel:
fs0:> bzImage.efi console=ttyS0 root=/dev/sda4
Auf diese Eingabeaufforderung wird nicht näher eingegangen fs0:>
, und auch (U)EFI Shell wird nicht erwähnt, um einen „herkömmlichen“ Bootloader zu ersetzen. In meinem Fall erhalte ich nach dem Booten in Uefi Shell Shell>
eine Eingabeaufforderung und muss zuerst ein ESP/FAT-Dateisystem auswählen. (Sie können sogar mehr als ein ESP pro Laufwerk haben.)
Der zweite Punkt ist das Hinzufügen der Erweiterung „.efi“ zu bzImage. Das muss ich nicht tun (AMI 2.7). Es lässt sich also wie folgt reduzieren:
fsX:> bzImage root=/dev/sda4 [initrd=...] [...]
Eine weitere Verwirrung können die Schrägstriche im DOS-Stil und die Notwendigkeit absoluter Pfade in .nsh
Skripten sein. Mit den Bildern in einem eigenen Ordner „distro“ sieht die Zeile folgendermaßen aus:
distro\bzImage initrd=distro\initrd root=/dev/sdaX
Beachten Sie, dass der Root-Parameter Schrägstriche enthält. Er wird vom Kernel und nicht von der UEFI-Shell verwendet.