web-dev-qa-db-de.com

Wie installiere ich GRUB2 EFI neu?

Nachdem ich mein BIOS erfolgreich aktualisiert hatte, ist ein Fehler aufgetreten und ich habe einen blinkenden Cursor in der oberen linken Ecke eines schwarzen Bildschirms gefunden. Keine Fehler, kein nichts. Das BIOS listet jetzt nur noch eine SATA: <disc name>-Startoption anstelle der üblichen UEFI ubuntu auf. Ich verwende ein GPT-Partitionsschema.

Schließlich stellte ich fest, dass die funktionierende Lösung darin bestand, grub-efi-AMD64 ordnungsgemäß neu zu installieren. Wie mache ich das?

PS: Eigentlich ist es mir gelungen, GRUB2 EFI selbst neu zu installieren und ich werde meine Antwort hier posten, da ich keine vollständige Anleitung dazu finden konnte.

56
Maxime R.
  • Starten Sie Ihren Computer mit einer 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, damit efibootmgr später nicht ausfällt. Beim Booten mit der ersten Option erhalte ich 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 kaputte System (ähnlich wie ubuntu grub2 help aber mit efi-Spezifitäten):

    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 verschiedene Dinge.

    • Für Ubuntu/Debian :

      apt-get install --reinstall grub-efi-AMD64
      

      oder alternativ:

      apt-get install --reinstall grub-efi
      update-grub
      

      sollte das oben genannte Ihnen eine Made geben, aber nicht eine bootfähige

    • Für Fedora (bis zu 16 können für andere arbeiten):

      yum reinstall grub-efi
      

      Im folgenden Befehl müssen Sie sdX durch das Gerät mit der EFI-Partition ersetzen, von der Sie booten möchten. In --part Y müssen Sie die Y durch die Nummer der EFI-Partition ersetzen (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, die Bereitstellung aufzuheben und den Computer neu zu 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 dies hat für mich ganz gut funktioniert.

Ein geeignetes Live-System zum Reparieren von Dingen ist grml . Es gibt auch eine ausführliche Anleitung zum Einrichten eines bootfähigen USB-Geräts, von dem der Mac-Abschnitt am nützlichsten ist (erstellen Sie einfach eine FAT32-Partition, kopieren Sie die Dateien, starten Sie neu, fertig).

87
Maxime R.

Als mögliche Vereinfachung der ersten Methode ist es möglich, das System direkt von der Festplatte aus zu booten, indem nur der Grub der Live-CD verwendet wird. Getestet auf xubuntu 13.10 mit der Live-CD xubuntu 13.10.

Stellen Sie sicher, dass Secure Boot in Ihrem BIOS deaktiviert ist. Legen Sie die Live-CD ein und booten Sie sie über UEFI. Das Menü GRUB der CD wird angezeigt. Drücken Sie "c", um zur Befehlszeile zu gelangen.

configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg

Passen Sie den obigen Befehl grub an, wenn Sie eine andere EFI-Systempartition haben.

Nachdem Ihr System von der Festplatte gebootet wurde, sollte es ausreichen, grub auf der EFI-Systempartition erneut zu installieren und über grub-install bei der Firmware zu registrieren.

Sudo grub-install
8
user302914

Wie bei Maxine habe ich festgestellt, dass meine UEFI-Einstellungen im BIOS beschädigt wurden und mein Computer nicht mehr bootet.

In meinem Fall handelt es sich um einen Lenovo ThinkServer RD430 mit Linux Mint Debian, und es schien, als würde irgendetwas ich etwas gegen Update-Grub unternehmen, oder das Ändern von Festplatten im Server würde dazu führen, dass er nicht startet. In meinem Fall ist das Betriebssystem linuxmint-201403-mate-dvd-64bit über USB installiert. (Im Folgenden finden Sie eine vollständige Beschreibung der Ereignisse, die dazu führen würden, dass UEFI nicht funktioniert.)

Bei genau den gleichen Schritten auf einem ThinkServer TS140 verlor UEFI nicht einmal den Verstand. Schaute auf die RD430-Treiberseite und mein BIOS ist zwei Versionen alt. Ich musste bisher noch nie ein BIOS-Update für ein Motherboard durchführen, daher bin ich nicht einer, der automatisch ein Update durchführt, wenn neue Versionen verfügbar sind. Nach der Aktualisierung des BIOS hat Maxines Antwort oben funktioniert, nur mit einem Dreh ...

# 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 / # 

Der Befehl efibootmgr -c fügte zwei Einträge hinzu: 0000 und 0002!
Der Boot0002* Linux HD-Eintrag zuerst in der Startreihenfolge ist nicht korrekt .
Der 0000 Eintrag ist korrekt.

Um dies zu testen, habe ich versucht, ohne Unterbrechung zu booten. Dies ist der Eintrag 0002. Wie erwartet hat es nicht funktioniert. Also habe ich den Server neu gestartet, F12 gedrückt und linuxmint gewählt. Wie erhofft, wurde meine LMDE-Installation gebootet.

So entfernen Sie unerwünschte Einträge über efibootmgr:

# efibootmgr -b 2 -B

Ich habe diesen Befehl verwendet, um die Einträge 0001 und 0002 zu entfernen. Option 0001 war der letzte meiner vielen Versuche, das Betriebssystem wiederherzustellen.


UEFI-Notizen

Wenn Sie dies lesen und mit UEFI genauso frustriert sind wie ich/war, 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.
»Lenovos UEFI_on_TS430-Dokument ist die einzige Ressource, die mir die Verwendung von efi Shell erklärt.
» Ein weiterer Verweis auf die uefi Shell aus nPartition Administrator's Guide.
»Sie können versuchen, von der efi-Shell aus zu einer Partition zu booten, indem Sie zum Loader navigieren und ihn ausführen.
»UEFI möchte, dass die Festplatte über eine GPT-Partitionstabelle und nicht über eine MSDOS-Partitionstabelle verfügt.
»UEFI möchte, dass die erste Partition auf Ihrer Festplatte mit fat32 oder vfat formatiert wird.
»Für einen" generischen "Start muss sich im Stammverzeichnis ein /EFI/boot-Verzeichnis mit bootx64.efi befinden.
»Einige Leute kopieren ihren grubx64.efi von dem Ort, an dem er installiert wurde, nach /EFI/boot/bootx64.efi und dieser Cheat funktionierte für sie.
»Verwenden Sie efibootmgr -v immer, wenn Sie Änderungen am Grub vornehmen, davor und danach, um sicherzustellen, dass Ihr Neustart in Ordnung ist.


Meine RD430 Erfahrung

Ich habe das OS 10+ Mal in der letzten Woche installiert und versucht, dies zu klären und den Server einzurichten. Meine Konfiguration ist eine SSD auf diesem RAID-Controller im PCIe 2.0-Steckplatz, auf dem LMDE installiert ist. AOC-S3008L-L8i RAID-Controller ( erneut in den IT-Modus versetzt ) im 2. PCIe 3.0-Steckplatz mit 6x 3-TB-Laufwerken. RAM: 12 GB ECC (3 x 4 GB).

Die folgenden Änderungen haben dazu geführt, dass mein System nicht mehr startet:
»Tauschen Sie die S3008L-L8i-PCI-Steckplätze aus (lassen Sie die SSD + -Karte allein).
»Deaktivieren Sie die LSi-Software-RAID-BIOS-Eingabeaufforderung für Onboard-Controller.
»Fügen Sie meine alte HighPoint RocketRaid-Karte in einen freien PCIe-Steckplatz ein.
»Nehmen Sie eine Änderung an /etc/default/grub vor und führen Sie dann update-grub aus.
(möglicherweise muss auch grub-install ausgeführt werden?)

5
Chris K

Ich würde das hochstimmen, aber anscheinend habe ich nicht genug Repräsentanten auf SuperUser. Ich bin froh, dass ich nach Tagen des Kampfes gegen Klone, die funktionierten, aber nicht hochfuhren, endlich eine Antwort darauf gefunden habe. Ich denke, alles hängt mit UEFI und einer Art "sicherem Boot" -Mechanismus oder so zusammen.

Ich arbeite offline, daher kam ein passendes Angebot nicht in Frage. Was ich getan habe, war, Ubuntu Desktop auf einen USB-Stick zu packen, die Pakete grub-efi und grub-efi-AMD64 zum Stammverzeichnis des USB-Sticks hinzuzufügen (grub-efi_1.99 ~ rc1-13ubuntu3_AMD64.deb und grub-efi-AMD64_1.99 ~ rc1-13ubuntu3_AMD64. deb für Ubuntu 11.04 (entsprechend der Distribution und Architektur ändern) und Folgendes in ein Skript auf dem USB-Stick schreiben:

#! /bin/bash
Sudo mount /dev/sda2 /mnt
Sudo mount /dev/sda1 /mnt/boot/efi
dir=`dirname $0`
Sudo cp $dir/grub-efi*.deb /mnt/tmp
for i in /dev /dev/pts /proc /sys; do Sudo mount -B $i /mnt$i; done
Sudo chroot /mnt /bin/sh -c "dpkg -i /tmp/grub-efi*.deb"
Sudo shutdown -r now

Starten Sie den Live-USB-Stick, öffnen Sie ein Terminal, führen Sie den Befehl aus, und der Job ist eine gute Sache! Das einzige gelegentliche Problem ist, dass UEFI manchmal in der Reihenfolge der Startprioritäten unterhalb der Festplatte verschoben wurde. Zu diesem Zeitpunkt müssen Sie das BIOS aufrufen und die Startreihenfolge ändern, um zu verhindern, dass SATA: drive versucht (und fehlschlägt).

Sie können auch dpkg-reconfigure anstelle von dpkg -i verwenden, dabei werden jedoch einige Fragen zum Bootloader gestellt.

[edit] Ich habe auch nicht genug Repräsentanten, um zu kommentieren. Was ich für einen Kommentar auf eine Antwort hielt, stellt sich als Antwort heraus.

3
IBBoard

Auf meinem 32-Bit-Ubuntu 14.10 unter Lenovo Yoga 2 Pro habe ich folgendermaßen auf UEFI-Boot umgestellt:

  • ordner erstellen

    Sudo su
    mkdir /boot/efi
    
  • "EFI System" -Partition in /etc/fstab einhängen

    fdisk -l|grep EFI
    

    dies zeigte: /dev/sda2 2050048 2582527 532480 260M EFI System

    echo "/dev/sda2 /boot/efi   vfat    defaults,sync   0   0">>/etc/fstab
    

    mounten Sie diese Partition

    mount /boot/efi
    
  • grub-efi-AMD64-bin installieren und grub-efi-ia32-bin deinstallieren

    aptitude install grub-efi-AMD64-bin grub-efi-ia32-bin_
    
    grub-install --target=x86_64-efi
    
  • starte Ubuntu im efi Modus neu

    update-grub
    
  • teste ob es gut bootet, dann habe ich grub-efi-AMD64 installiert und grub-pc grub-gfxpayload-lists mit deinstalliert

    aptitude install grub-efi-AMD64 grub-pc_ grub-gfxpayload-lists_
    

Ich entscheide mich nicht zu entfernen/booten, wenn ich gefragt werde.


Vielleicht habe ich es kompliziert gemacht und das hätte gut funktioniert:

apt-get install --reinstall grub-efi
update-grub
1
rubo77

Dieser Eintrag entspricht eher der Vorbereitung Ihres Computers für die Neuinstallation der efi-Einträge. Dies ist möglicherweise auch eine effektive und einfache Möglichkeit, nach der Installation des Systems auf internen Medien (SSD, HDD) eine Rettungsdiskette zu erstellen.

Mit Linux Mint Tara (eine Linux-Variante, die eng mit Ubuntu Bionic Beaver verwandt ist) hat die Methode meine Installation blockiert und es später ermöglicht, sie zu speichern. Es entstand aus dem Wunsch nach einem dauerhaften USB-Laufwerk, und da die Zeit für die Installation eines Dienstprogramms wie Unetbootin für eine dauerhafte Installation in etwa mit einer Neuinstallation identisch ist, habe ich einfach dieselbe Live-Distribution verwendet, um eine Installation auf dem USB-Laufwerk durchzuführen wurde verwendet, um das Betriebssystem auf der internen SSD zu installieren.

Natürlich handelt es sich nicht um RAID oder ein anderes spezielles Setup, aber es war eine vorbereitete Volume-Partition auf dem USB-Laufwerk und eine Installation auf diesem USB-Laufwerk unter Verwendung der verfügbaren Methode der Distribution erforderlich, um das interne Laufwerk für eine Installation auf einem einzelnen Laufwerk zu umgehen Root-Mount (/) der Partition.

Hier verheddert sich die neue Madeninstallation mit dem internen Laufwerk. Beim Neustart über USB schienen die internen UEFI-Grub-Einträge verschwunden zu sein, und beim Versuch, das Laufwerk mithilfe der Einträge im BIOS-Menü auszuwählen, blieb nur das Grub-Menü übrig.

Stattdessen zeigte das Booten von USB, dass die Methode der Distribution ein fertiges Grub-Menü mit einer Auflistung für die/dev/sda2-Partition erzeugt hatte, die die/boot/efi-Einbindung enthielt. Bei den meisten primären internen Laufwerksinstallationen lautet der Gruppenname der Partition hd0, gpt1.

Für den Einstieg in die fortgeschrittene Version war mehr als eine Kernel-Rettung verfügbar. Führen Sie von dort aus das Dienstprogramm grub aus und booten Sie dann normal.

Wenn Sie das Betriebssystem auf dem internen Laufwerk ausführen, auf das zuvor nicht zugegriffen werden konnte, ziehen Sie den USB-Stecker ab und führen Sie Sudo grub-install aus.

Wenn Sie ohne USB neu starten, sollten Sie wieder einsteigen können. Zu diesem Zeitpunkt ist der USB so konfiguriert, dass das interne Laufwerk in den normalen Modus oder in den Rettungsmodus versetzt wird, und das Laufwerk verfügt über ein eigenes Menü.

0
Tim Pozza