Ist es weiterhin möglich, Ubuntu mit UEFI auf einer externen Festplatte zu installieren?

Antworten:

12

Es ist tatsächlich möglich .

Bevor ich fortfahre, sind diese Anweisungen für leere EFI-Systempartitionen (ESP) gedacht und überschreiben wahrscheinlich vorhandene Dateien oder funktionieren nicht wie erwartet. Zumindest Backups machen!

Hinzufügen der erforderlichen Partitionen für verschiedene Plattformen

Plattformen: Legacy-PC, UEFI-basierter Windows-Computer, Apple-Computer

Fügen Sie einer vorhandenen Installation mit MBR ein ESP hinzu

Sie müssen diese Anweisungen einer anderen Installation oder eines anderen Live-Mediums befolgen.

  1. Installieren Sie das grub-efi-amd64-binPaket. Dadurch werden nur die benötigten Ressourcen installiert. Es wird Ihre vorhandene Installation im MBR-Stil nicht auf UEFI umstellen und die Dinge auf den Kopf stellen.

  2. Verkleinern Sie Ihre Ubuntu-Partition in GParted , um Platz für ein ESP zu schaffen. Die empfohlenen Größen für ESPs liegen zwischen 100 MB und 500 MB. Für die Dateien, die anhand dieser Anweisungen erstellt wurden, sind jedoch nicht mehr als 2 bis 5 Megabyte erforderlich.

    Hinweis: Es sollte keine Rolle spielen, wo sich Ihr ESP auf der Festplatte befindet, und das Verkleinern Ihrer Ubuntu-Partition um einige Megabyte vom Ende sollte schnell und sicher sein. Das Schrumpfen am Anfang ist nicht sicher . Eine Einschränkung: Ihr ESP sollte eine primäre Partition sein und nicht Teil einer erweiterten Partition oder eines logischen Volumes. Partitionsnummern von 1 bis 4 sind in Ordnung. Die obigen Zahlen geben eine erweiterte Partition in MBR-Partitionstabellen an.

    Wählen Sie FAT32 als Dateisystem und setzen Sie das Boot-Flag.

  3. Hängen Sie das soeben erstellte ESP und das verkleinerte Root-Dateisystem ein:

    mkdir -p /mnt/esp
    mount $esp_device /mnt/esp
    mkdir -p /mnt/rootfs
    mount $root_device /mnt/rootfs
    

    Hinweis: Ersetzen Sie $esp_deviceund $root_devicedurch die entsprechenden Geräte, z . B. /dev/sdb2und /dev/sdb1. Die Mountpunkte /mnt/esp und /mnt/rootfssind nur Beispiele, die ausgewählt wurden, um mit dem verbleibenden Teil dieser Antwort zu arbeiten.

    Installieren Sie das EFI-Image von GRUB und eine minimale Konfigurationsdatei mit:

    grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
    

    Beachten Sie, dass dies $devicedas gesamte Gerät ist, z. B. /dev/sdbkeine Partition.

  4. Das war's, wir sind schon fertig, aber lassen Sie mich versuchen, ein paar Dinge zu erklären.

    Der Parameter stellt --target x86_64-efisicher, dass UEFI-Images und -Module auf den angegebenen Pfaden installiert werden. --removableInstalliert das UEFI-Image auf dem fest codierten Pfad \EFI\BOOT\BOOT{arch}.EFIfür Wechselmedien anstelle eines verteilungsspezifischen Pfads. Ihr grub.cfgIn /boot/grub/sollte mit beiden Startmethoden funktionieren und ein neuer Ordner mit dem Namen x86_64-efisollte jetzt neben vorhanden sein i386-pc.

    Der Vollständigkeit halber ist dies der Befehl für nicht entfernbare Medien, die NVRAM-Einträge auf der Plattform schreiben und darauf zurückgreifen:

    grub-install --efi-directory /mnt/esp --boot-directory /mnt/rootfs/boot --target x86_64-efi --bootloader-id "Ubuntu" $device
    

    Ordnungsgemäße UEFI-Installationen enthalten eine Zeile ähnlich der folgenden in /etc/fstab, aber das Setup funktioniert ohne und das UEFI-Image (ähnlich dem MBR-Bootloader) wird normalerweise nur während der Betriebssysteminstallation geschrieben / aktualisiert.

    UUID=1234-567F /boot/efi vfat defaults 0 1
    

Hinzufügen eines ESP oder GRUB-BBP zu einer Installation mit GPT

Das Hinzufügen eines ESP zu einer Legacy-Installation auf einem GPT-partitionierten Laufwerk ist dem oben genannten sehr ähnlich:

  1. Installieren Sie das grub-efi-amd64-binPaket.
  2. Erstellen Sie eine Partition mit einem FAT32-Dateisystem ähnlich den obigen Anweisungen, indem Sie die Größe der Root-Partition ändern und das bootFlag setzen.
  3. Hängen Sie die Partitionen ein und führen Sie den grub-installBefehl von oben aus, der den --removableParameter enthält.

Dies funktioniert auch, wenn Sie nur Ihre vorhandene UEFI-Installation auf einem anderen Computer starten möchten.

Das Erstellen einer BIOS Bootable Partition (BBP) für GRUB ist etwas anders:

  1. Installieren Sie das grub-pc-binPaket.

  2. Erstellen Sie eine Partition ähnlich den obigen Anweisungen, indem Sie die Größe der Root-Partition ändern und das bios_grubFlag setzen. Wählen Sie kein Dateisystem und lassen Sie es unformatiert.

  3. Bearbeiten Sie die Konfigurationsdatei /etc/default/grubmit Administratorrechten und fügen Sie GRUB_DEVICE=/dev/sdb6sie am Ende hinzu. Ersetzen Sie /dev/sdb6durch den tatsächlichen Gerätenamen Ihres BBP. Sie können den Befehlszeileneditor nano verwenden , um die Sache einfach zu halten.

    Installieren Sie das GRUB MBR-Image auf dem BBP mit:

    grub-install --boot-directory /mnt/test/boot/ --target i386-pc $device
    

    Möglicherweise möchten Sie die Zeile entfernen oder auskommentieren /etc/default/grubund zur eigentlichen Installation hinzufügen.

Bonus: Fügen Sie bei einer Installation mit GPT eine Partition für Macs hinzu

Ich fand heraus, dass der sehr neue Mac (Mac Mini A1347 EMC 2840), mit dem ich getestet habe, von einem Standard-FAT32-ESP booten konnte, sogar von MBR! Wie auch immer, los geht's:

  1. Installieren Sie die grub-efi-amd64-bin, hfsprogs, mactel-bootund mactel-boot-logo(optional) Pakete. Sie müssen die Universe- Repositorys aktivieren ( Wie aktiviere ich das "Universe" -Repositorium über die Befehlszeile? ) Und die aktuelle Mactel-Support-PPA hinzufügen ( weitere Informationen finden Sie im Mactel-Support-Community-Team ), um alle zu installieren.

  2. Erstellen Sie eine Partition mit einem HFS + -Dateisystem ähnlich den obigen Anweisungen, indem Sie die Größe der Root-Partition ändern. Dieses Mal benötigen wir ein paar Megabyte mehr Speicherplatz. Verdoppeln Sie also die Größe des ESP, wenn Sie zuvor nur 5 Megabyte oder weniger hatten. Es ist keine Flagge erforderlich.

  3. Montieren Sie die Partitionen:

    mkdir -p /mnt/esp-mac
    mount $esp-mac_device /mnt/esp-mac
    mkdir -p /mnt/rootfs
    mount $root_device /mnt/rootfs
    

    Hinweis: Ich habe Konflikte gewählt $esp-mac_deviceund /mnt/esp-macvermieden.

    Führen Sie den grub-installBefehl aus, der den --removableParameter enthält:

    grub-install --efi-directory /mnt/esp-mac --boot-directory /mnt/rootfs/boot --target x86_64-efi --removable $device
    

    Richten Sie die Partition schließlich so ein, wie es ein Mac erwartet:

    sudo hfs-bless /mnt/esp-mac/EFI/BOOT/bootx64.efi
    sudo cp -v /mnt/esp-mac/EFI/BOOT/bootx64.efi /mnt/esp-mac/System/Library/CoreServices/boot.efi
    sudo cp -v /mnt/esp-mac/EFI/BOOT/grub.cfg /mnt/esp-mac/System/Library/CoreServices/grub.cfg
    sudo cp -v /usr/share/mactel-boot/SystemVersion.plist /mnt/esp-mac/System/Library/CoreServices/SystemVersion.plist
    sudo cp -v /usr/share/mactel-boot-logo/ubuntu.icns /mnt/esp-mac/.VolumeIcon.icns
    echo "Dummy kernel for booting" | sudo tee /mnt/esp-mac/mach_kernel
    

    Um Ubuntu von einem externen Medium auf einem Mac zu starten, müssen Sie nur noch die Optionstaste oder Altauf Windows-Tastaturen drücken und die richtige Festplatte auswählen.

    Mac Startup Manager mit Volumes und Ubuntu-Logo

Informationen zu Partitionsflags, Typcodes und GUIDs

Um so genau wie möglich zu sein, ist das Startflag für GRUB nicht wichtig. Standardmäßig sucht GRUB nach UUIDs, um das richtige Dateisystem zum Booten zu finden. Durch Setzen des Boot-Flags oder des bios_grub-Flags in GParted wird normalerweise ein Typ (MBR) oder eine GUID (GPT) für die Partition festgelegt.

Der Vorteil des Festlegens des richtigen Typs oder der richtigen GUID besteht neben einem ordnungsgemäß funktionierenden Setup darin, dass diese Partitionen im Dateimanager ausgeblendet werden. Der einfachste Weg, Typen und GUIDs zu überprüfen und zu ändern, ist über Disks ( gnome-disks).

Screenshot mit Laufwerken und Partitionen in Gnome-Disks

Screenshot zeigt den Dialog zum Bearbeiten der Partition in Gnome-Disks

Alternativ können Sie parted oder gdisk verwenden:

  • 0xef ist der Typcode für ESP in MBR zur Verwendung mit fdisk
  • ef00 ist der abgekürzte Typcode für ESP in GPT zur Verwendung mit gdisk
  • ef02 ist der abgekürzte Typcode für BBP in GPT zur Verwendung mit gdisk

Wikipedia hat eine große Liste von GUIDs für GPT .

Befehlszeilenäquivalente partedgemäß Handbuch sind parted $device set partition esp onund parted $device set partition bios_grub on.

LiveWireBT
quelle
Details habe ich nicht dokumentiert. Aber konnte mein Flash-Laufwerk einfach auf gpt partitionieren, eine EFI-Partition erstellen und EFI-Boot-Dateien in die EFI-Partition kopieren. Das grub-mkimage erstellt ein grubx64.efi, das bestimmte Pfade für Dateien erwartet. Daher habe ich die Dateistruktur aus meiner Installation in ein / boot / grub kopiert und eine grub.cfg mit einem Konfigurationsdateieintrag zu einem anderen grub.cfg in meinem / iso hinzugefügt Ordner zum Loopmount Booten meiner ISOs. Wahrscheinlich korrekter, um Ihr eigenes grubx64.efi mit dem make-Bild zu erstellen, aber die Kopie hat funktioniert.
Oldfred
Ich habe hoch und niedrig gesucht, um herauszufinden, wie der Teil "Hinzufügen eines ESP zu einer vorhandenen Installation mit MBR" ausgeführt wird. Ich war nervös, aber es hat beim ersten Versuch funktioniert! Gute Antwort!
Mark E. Haase
Ich versuche, einer vollständigen BIOS / MRR-Installation von Ubuntu auf USB EFI-Startfunktionen hinzuzufügen, indem ich den Teil ESP zu einer vorhandenen Installation mit MBR hinzufügen als Teil der Antwort hinzufüge . Ich erhalte die Meldung "Fehler: Datei /boot/nicht gefunden". Die grub.cfgin der ESP-Partition zeigt auf die rechte UUID. Irgendwelche Ideen? Gerne stelle ich eine neue Frage.
user68186
@ user68186 konnten Sie es tun?
BRabbit27
Ich konnte Ubuntu von einem Mac auf meinem externen Laufwerk installieren. Wenn es mit dem Mac verbunden ist, bootet es korrekt in Ubuntu. Bei Verbindung mit einem Windows 10-Computer (xps 15 9560) auf den Startgeräten wird die externe Festplatte jedoch nicht angezeigt. Meine Vermutung ist, dass dies an der UEFI liegt. Kann jemand bestätigen, ob meine Vermutung richtig ist und ob dieser Thread das ist, was ich möglicherweise brauche, um von einem Windows-Computer booten zu können?
BRabbit27