Welche Befehle zum Konvertieren einer Ubuntu-BIOS-Installation in EFI / UEFI ohne Startreparatur auf einer einzelnen Starthardware?

35

Versehentliche Installation des BIOS-Modus

Ich habe Intel 64-Bit-Hardware mit UEFI-Setup-Dienstprogramm. Ubuntu 14.04.1 LTS wurde als einziges Betriebssystem auf dem einzigen angeschlossenen Laufwerk installiert. Versehentlich wurde Ubuntu im BIOS / CSM / Legacy-Modus installiert.

In UEFI konvertieren

Während Sie später etwas über UEFI lernen, besteht das Ziel darin, diese vorhandene Ubuntu-Installation so zu ändern, dass sie über EFI / UEFI (schneller) startet. Ich möchte immer noch eine Art - 2 Sekunden angezeigtes - Startmenü, über das ich das UEFI-Setup-Dienstprogramm aufrufen kann. Daher denke ich, dass ich Grub verwenden muss (kann keinen EFI-Boot-Stub verwenden), und für die GOP-Unterstützung ist Grub-Version 1.99 oder höher erforderlich . Ich habe das Laufwerk bereits mit einer Live-CD neu partitioniert und eine 200-MiB-EFI-Partition am Anfang des Laufwerks eingefügt und diese mit fat16 formatierte Partition als Typ-ID 0xEF markiert.

Vor:

# fdisk -l /dev/sda
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048   108478463    54238208   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Nach:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *      411648   108478463    54033408   83  Linux
/dev/sda2       108480510   125044735     8282113    5  Extended
/dev/sda3            2048      411647      204800   ef  EFI (FAT-12/16/32)
/dev/sda5       108480512   125044735     8282112   82  Linux swap / Solaris

Partition table entries are not in disk order

Keine Boot-Reparatur bitte

Das Ubuntu-Community-Wiki empfiehlt die Verwendung von Boot-Repair, um Ubuntu in den EFI-Modus zu konvertieren . Ich möchte keine GUI verwenden oder zusätzliche Pakete installieren, und ich möchte nicht, dass versehentlich Daten an pastebin.com gesendet werden, und weil ich wissen möchte, was genau geändert wird, möchte ich nicht Verwenden Sie Boot-Repair .

Unter der Haube

Beim Versuch herauszufinden, was die Boot-Reparatur tatsächlich bewirkt, habe ich folgenden Ausschnitt gefunden:

Boot-Repair konvertiert eine BIOS-Installation in UEFI, indem grub-pc deinstalliert und grub-efi installiert wird, falls gpt partitioniert ist.

Quelle: http://ubuntuforums.org/showthread.php?t=2147295&p=12657352#post12657352

UEFI-Modus-Installationsvergleich

Eine saubere Installation von Ubuntu 14.04.1 im UEFI-Modus erstellt eine mit 512 MiB Fat32 formatierte EFI-Partition. Die Partition enthält ein Verzeichnis /EFI/ubuntu, das 4 - Dateien: grub.cfg, grubx64.efi, MokManager.efiund shimx64.efi. Die grub.cfg enthält:

search.fs_uuid 7d843e47-3917-4114-8725-55dfa1fbe002 root hd0,gpt2
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

Search.fs_uuid verweist auf die UUID der Linux-Installationspartition. In diesem Vergleich wird die UEFI-Installation Linux ist die installierte Partition / dev / sda2 (gegenüber sda1 bei der Installation im BIOS-Modus) .

Es wurden keine potenziellen Probleme mit der Asrock-Firmware gefunden

CSM weiterhin in der Firmware deaktiviert und die Ubuntu-Installation im sauberen UEFI-Modus verwendet. Wenn Sie die Größe der 512-MiB-EFI-Partition mit einer Live-CD auf 200 MiB gpartedändern, ändert sich die Formatierung von FAT32 in FAT16. Die Asrock-Firmware P1.50 (von AMI in der Startmeldung "BIOS-Datum" fälschlicherweise als BIOS bezeichnet) kann weiterhin im UEFI-Modus gestartet werden. Ubuntu: UEFI + FAT16 = ok .
Das Konvertieren der Partitionstabelle von GPT in MBR (MSDOS) unter Verwendung desselben Live CD-Terminalbefehls gdiskund seiner Befehle führt r g p wauch zu einem UEFI-startfähigen Ubuntu auf einem MBR-partitionierten Laufwerk: UEFI + MBR = ok .

Frage

Bedeutet dies, dass die einzigen Befehle, die ich ausführen muss - von der älteren Ubuntu-Installation und in dieser Reihenfolge - sind:

# apt-get install grub-efi
# apt-get remove grub-pc

? Oder muss noch mehr getan werden?

Pro Backup
quelle
1
Ich würde immer noch Boot Repair verwenden. Sie gehen davon aus, dass Sie Pakete installieren müssen ... Ich glaube, Sie liegen falsch. Siehe: askubuntu.com/questions/226061/…
Rinzwind
@ Rinzwind Ich kann Boot-Repair nicht verwenden, da die aktuelle Ubuntu-Installation (nur Konsole) keine grafische Benutzeroberfläche enthält und Ubuntu-14.04.1-desktop-amd64.iso nicht startet, wenn es als erstes USB-UEFI-Boot-Gerät in Asrock festgelegt ist H81 Pro BTC P1.50 UEFI-Setup-Dienstprogramm.
Pro Backup
1
Boot-Repair ist nicht gui, sondern bash mit einem der Add-Ins, die es mehr gui-like machen. Mit der neueren Version von Ubuntu haben sich die Paketnamen ein wenig geändert, jetzt heißt es, glaube ich, grub-efi-amd64 oder grub-efi-amd64-signed. Möglicherweise möchten sie einen 32-Bit-UEFI-Bootloader freigeben, dessen Name geändert wurde. Chroot-Version, beachte, dass du auch grub installiert und grub.cfg erstellt hast. askubuntu.com/questions/53578/…
oldfred
@oldfred Boot-Repair ist abhängig von der GUI: Wenn Sie apt-get install boot-repairauf dieser Ubuntu-Server-Installation ausführen , erhalten Sie 245 MB GTK, so wie Abhängigkeiten, die Boot-Repair installieren möchte. Und das anschließende Ausführen des boot-repairBefehls schlägt fehl. Das Update der neueren grub-efi-Benennung war sehr hilfreich.
Pro Backup
Stellen Sie bei einem Asrock sicher, dass kein Laufwerk oder DVD-Laufwerk an den Asmedia-Anschlüssen angeschlossen ist. Sie haben keine Fahrer. Es ist besser, nur ein partitioniertes gpt-Laufwerk zu haben, wenn Sie mit UEFI booten. rodbooks.com/gdisk/hybrid.html
oldfred

Antworten:

40

Starten Sie eine Ubuntu Linux (14.04) Live-CD im UEFI-Modus. Deaktivieren Sie im Falle eines USB-Startgeräts "Fast Boot" in UEFI.

Öffne ein Terminalfenster ( Ctrl+ Alt+ T)

Verwenden Sie den folgenden Bash-Befehl, um zu überprüfen, ob Sie tatsächlich im UEFI-Modus ausgeführt werden:

$ [ -d /sys/firmware/efi ] && echo UEFI || echo BIOS

Die resultierende Ausgabe sollte sein:

UEFI

Falls dies BIOSangezeigt wird, starten Sie Ihre Firmware neu und korrigieren Sie die Einstellungen für das Startgerät.

Geben Sie die folgenden Befehle ein, um die Konvertierung von BIOS in EFI / UEFI durchzuführen:

$ sudo mount /dev/sda1 /mnt
$ sudo mkdir -p /mnt/boot/efi
$ sudo mount /dev/sda3 /mnt/boot/efi
$ sudo mount --bind /dev /mnt/dev
$ sudo mount --bind /proc /mnt/proc
$ sudo mount --bind /sys /mnt/sys
$ sudo mount --bind /run /mnt/run
$ modprobe efivars
$ sudo chroot /mnt
# apt-get install grub-efi-amd64

The following extra packages will be installed:
  efibootmgr grub-efi-amd64-bin
The following packages will be removed:
  grub-gfxpayload-lists grub-pc
...
After this operation, 2,399 kB of additional disk space will be used.

# grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Trotz Endung in Fehlermeldung:

Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
Try 'modprobe efivars' as root.

Beim nächsten Neustart wird bereits " ubuntu " im Startoptionsmenü der Firmware angezeigt und die Konsole wird wie zuvor gebootet, mit der Ausnahme, dass jetzt im efi-Modus gebootet wird:

$ dmesg | grep EFI
efi: EFI v2.31 by American Megatrends
fb0: EFI VGA frame buffer device
EFI Variables Facility v0.08 2004-May-17
fb: switching to inteldrmfb from EFI VGA

Falls etwas schief geht, hilft möglicherweise https://superuser.com/questions/376470/how-to-reinstall-grub2-efi .

Pro Backup
quelle
Dies half mir, meine Festplatte zu aktualisieren und ohne Neuinstallation auf GPT / UEFI / SecureBoot zu konvertieren. Vielen Dank. Ein Hinweis: Ich brauchte das grub-efi-amd64-signedPaket, um nicht mit dem Deaktivieren von SecureBoot in meinem UEFI-BIOS herumspielen zu müssen.
Robie Basak
Es ist jetzt 2018 und dieses Problem mit EFI ist immer noch vorhanden. sogar efi boot ist installiert aber ich lande in grub cli. Ich gebe Ubuntu auf.
Abhishek Dujari
Das hat bei mir unter Ubuntu 19.10 geklappt. Ich habe den Live-USB mit EFI gebootet und eine 200-MB-Partition vom Typ FAT32 für EFI am Ende meiner Festplatte hinzugefügt.
Joey Adams
1

Das hat auch bei mir mit einer kleinen Änderung geklappt. Obwohl das Netzwerk funktionierte, konnte ich mit "apt-get install grub-efi-amd64" keinen der Paketserver finden.

Ich habe das umgangen, indem ich ein letztes Mal im BIOS-Modus gebootet und grub-efi-amd64 installiert habe.

Ich könnte dann die hier beschriebenen Schritte ausführen, mit der Ausnahme, dass "apt-get install grub-efi-amd64" weggelassen wird.

WallyZ
quelle
1

Kleine Korrektur:

sudo apt-get install -y grub-efi-amd64
sudo mount /dev/sda1 /mnt
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda3 /mnt/boot/efi
for d in dev sys proc usr run; do sudo mount -B /$d /mnt/$d; done
sudo modprobe efivars
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck --no-floppy --debug

Getan.

Daniel Jean
quelle
Können Sie erklären, warum Sie diese Änderungen aus der Antwort des OP vorschlagen? ………… Bitte antworten Sie nicht in Kommentaren; Bearbeiten Sie  Ihre Antwort, um sie klarer und vollständiger zu gestalten.
G-Man sagt, dass Monica