GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie installiere ich GRUB2 EFI neu?

  • Starten Sie Ihren Computer mit einem Live-USB/CD im UEFI-Modus . Ich hatte zwei Startoptionen <flash_drive> und UEFI: <flash_drive> , die zweite wird benötigt, um die efi-Variablen in /sys/firmware/efi/ verfügbar zu machen also efibootmgr 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 die Y 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? )


Linux
  1. So richten Sie vHosts in Apache ein

  2. Wie führt man ein Downgrade auf Subversion 1.6 durch?

  3. Wie installiere ich die Standard-Grafiktreiber neu?

  4. Wie aktualisiere ich R unter Linux?

  5. Wie installiere ich die neueste cmake-Version neu?

So installieren Sie Ubuntu neu

So aktualisieren Sie auf AlmaLinux 8.5

So installieren Sie Go unter Debian 11

WIE INSTALLIERE ICH NEXTCLOUD AUF UBUNTU?

So installieren Sie Asterisk in Ubuntu 20.04

So installieren Sie Sendmail unter Ubuntu 22.04