-
Starten Sie Ihren Computer mit einem Live-USB/CD im UEFI-Modus . Ich hatte zwei Startoptionen
<flash_drive>
undUEFI: <flash_drive>
, die zweite wird benötigt, um die efi-Variablen in/sys/firmware/efi/
verfügbar zu machen alsoefibootmgr
später nicht scheitern. Das Booten mit der ersten Option gibt mir den folgenden Fehler:Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables. Try 'modprobe efivars' as root.
modprobe efivars
hat bei mir nicht funktioniert. -
chroot in das defekte System (ähnlich der Ubuntu-Grub2-Hilfe, aber mit EFI-Besonderheiten):
sudo mount /dev/sda2 /mnt #sda2 is the root partition sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting modprobe efivars # make sure this is loaded sudo chroot /mnt
-
Abhängig von Ihrer Linux-Distribution machen Sie jetzt unterschiedliche Dinge.
-
Für Ubuntu/Debian :
apt-get install --reinstall grub-efi-amd64
oder alternativ:
apt-get install --reinstall grub-efi update-grub
sollte das obige Ihnen ein Grub geben, aber kein bootfähiges
-
Für Fedora (bis 16, kann für andere arbeiten):
yum reinstall grub-efi
Im folgenden Befehl müssen Sie sdX durch das Gerät ersetzen, das die EFI-Partition hat, von der Sie booten möchten. In
--part Y
Sie müssen dieY
ersetzen mit der Nummer der EFI-Partition (wie in/dev/sdXY
).efibootmgr -c --disk /dev/sdX --part Y efibootmgr -v # verify a new record called Linux is there
-
-
Geben Sie nun Strg+D ein um chroot zu beenden, alles unmounten und neu starten:
for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done sudo umount /mnt/boot/efi #please do this. Corrupted efi partitions are not nice sudo umount /mnt sudo reboot
Möglicherweise müssen Sie dies an Ihre Bedürfnisse anpassen (andere Partitionstabelle, separate /boot-Partition usw.) und es ist möglicherweise nicht die einzige Option, aber das hat für mich gut funktioniert.
Ein geeignetes Live-System zum Reparieren ist grml. Es gibt auch eine ausführliche Anleitung, wie man ein bootfähiges USB-Gerät einrichtet, von denen der Mac-Abschnitt tatsächlich am nützlichsten ist (einfach eine FAT32-Partition erstellen, die Dateien kopieren, neu starten, fertig).
Als mögliche Vereinfachung der ersten Methode ist es möglich, direkt von der Festplatte in das System zu booten, nur mit Grub der Live-CD. Getestet auf xubuntu 13.10 mit der xubuntu 13.10 Live-CD.
Stellen Sie sicher, dass Secure Boot in Ihrem BIOS deaktiviert ist. Legen Sie die Live-CD ein und booten Sie sie über UEFI. Das GRUB-Menü der CD wird angezeigt. Drücken Sie "c", um zur Befehlszeile zu gelangen.
configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg
Passen Sie den obigen grub-Befehl an, wenn Sie eine andere EFI-Systempartition haben.
Nachdem Ihr System von der Festplatte gebootet hat, sollte es ausreichen, grub auf der EFI-Systempartition neu zu installieren und per grub-install bei der Firmware zu registrieren.
sudo grub-install
Wie bei Maxine stellte ich fest, dass meine UEFI-Einstellungen im BIOS beschädigt wurden und mein Computer nicht booten konnte.
In meinem Fall ist es ein Lenovo ThinkServer RD430 mit Linux Mint Debian und es schien alles zu sein Ich würde Update-Grub oder das Ändern von Festplatten im Server tun, was dazu führen würde, dass er nicht startet. Das Betriebssystem ist in meinem Fall linuxmint-201403-mate-dvd-64bit, das über USB installiert wird. (unten finden Sie eine vollständige Beschreibung der Ereignisse, die dazu führen würden, dass UEFI nicht funktioniert)
Das Durchlaufen genau derselben Schritte auf einem ThinkServer TS140 führte nicht einmal dazu, dass UEFI den Verstand verlor. Ich habe mir die RD430-Treiberseite angesehen und mein BIOS ist zwei Versionen alt. Ich musste noch nie das BIOS auf einem Motherboard aktualisieren, also bin ich keiner, der automatisch aktualisiert, wenn neue Versionen verfügbar sind. Nach der Aktualisierung des BIOS funktionierte Maxines Antwort oben, nur mit einer Wendung ...
# efibootmgr -c --disk /dev/sdX --part Y
# efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0002,0000,0003,0001,0004
Boot0000* linuxmint HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\EFI\linuxmint\grubx64.efi)
Boot0001* LMDE Linux Mint Debian HD(1,800,15d505800,934c598c-fe3c-fd43-84a1-fa38e4f72552)File(\EFI\linuxmint\grubx64.efi)
Boot0002* Linux HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\elilo.efi)
Boot0003* UEFI: Built-in EFI Shell Vendor(5023b95c-db26-429b-a648-bd47664c8012,)AMBO
Boot0004* UEFI: VerbatimSTORE N GO 1.00 ACPI(a0341d0,0)PCI(1a,0)USB(1,0)USB(4,0)HD(1,80,1d70780,00000000)AMBO
mint / #
Die efibootmgr -c
Befehl hat zwei Einträge hinzugefügt 0000
und 0002
!
Die Boot0002* Linux HD
Eintrag zuerst in der Startreihenfolge ist nicht korrekt .
Die 0000
Eintrag ist richtig.
Um dies zu testen, habe ich versucht, ohne Unterbrechung zu booten, was der 0002
ist Eintrag. Wie erwartet hat es nicht funktioniert. Also habe ich den Server neu gestartet, F12 gedrückt und linuxmint
gewählt . Wie erhofft bootete es zu meiner LMDE-Installation.
Der Weg zum Entfernen unerwünschter Einträge über efibootmgr ist:
# efibootmgr -b 2 -B
Ich habe diesen Befehl verwendet, um die Einträge 0001
zu entfernen und 0002
. Option 0001
war der letzte meiner vielen Versuche, das Betriebssystem wiederherzustellen.
UEFI-Hinweise
Wenn Sie dies lesen und genauso frustriert von UEFI sind wie ich, finden Sie hier einige Hinweise und Ressourcen:
» Das Booten in die UEFI-Shell ähnelt der Verwendung einer DOS-Shell.
» Intel hat ein PDF-Referenzhandbuch für efi-Shell-Befehle erstellt.
» Das UEFI_on_TS430-Dokument von Lenovo ist die einzige Ressource, die ich gesehen habe, die die Verwendung der efi-Shell erklärt.
» Eine weitere uefi-Shell-Referenz aus dem nPartition Administrator's Guide .
» Sie können versuchen, von der efi-Shell auf eine Partition zu booten, indem Sie zum Loader navigieren und ihn ausführen.
» UEFI möchte, dass die Festplatte eine GPT-Partitionstabelle hat, keine msdos-Teiltabelle.
» UEFI möchte, dass die erste Partition auf Ihrer Festplatte mit Fat32 oder Vfat formatiert wird.
» Für einen "generischen" Bootvorgang muss ein /EFI/boot
vorhanden sein Verzeichnis im Stammverzeichnis mit bootx64.efi
drin.
» Manche Leute kopieren ihre grubx64.efi
von dort, wo es installiert wurde, zu /EFI/boot/bootx64.efi
und dieser Cheat hat für sie funktioniert.
» Jedes Mal, wenn Sie Grub-Änderungen vornehmen, verwenden Sie efibootmgr -v
vorher und nachher, um sicherzustellen, dass Ihr Neustart in Ordnung ist.
Meine RD430-Erfahrung
Ich habe das OS 10+ Mal in der letzten Woche neu installiert, um dies zu klären und den Server einzurichten. Meine Konfiguration ist eine SSD auf diesem RAID-Controller im PCIe 2.0-Steckplatz, auf der LMDE installiert ist. AOC-S3008L-L8i RAID-Controller (auf IT-Modus umgeflasht) im 2. PCIe 3.0-Steckplatz mit 6 x 3-TB-Laufwerken. Arbeitsspeicher:12 GB ECC (3x 4 GB).
Hier sind Änderungen, die ich vornehmen würde, die dazu führten, dass mein System nicht startete:
» Ändern Sie die S3008L-L8i-PCI-Steckplätze (lassen Sie die SSD + Karte in Ruhe).
» Deaktivieren Sie die BIOS-Eingabeaufforderung der LSi-Software-RAID für den integrierten Controller.
» Fügen Sie meine alte HighPoint RocketRaid-Karte einem freien PCIe-Steckplatz hinzu.
» Ändern Sie /etc/default/grub
und führen Sie dann update-grub
aus .
(vielleicht grub-install
muss auch ausgeführt werden? )