web-dev-qa-db-de.com

Wie erstelle ich ein bootfähiges UEFI-USB-Live-Medium?

Live-Medien, die in beide Richtungen booten können, können ein Problem sein, wenn Ubuntu auf derzeit verfügbaren Windows 8-Computern installiert wird.

Mit anderen Worten, der Hauptvorteil bei der Erstellung von nur UEFI bootfähigen USB-Live-Medien ist: Sie wissen, dass sie definitiv über UEFI gebootet und installiert wurden.

Da Valve bereits UEFI-basierte USB-Installer mit ihrem Debian-basierten Steam-Betriebssystem und UNetbootin bootet - die am häufigsten gewählte Alternative zu Ubuntus Startup Disk Creator - ist nicht UEFI-kompatibel und daher irreführend. Ich denke, wir sollten ein separates Thema für die Erstellung von bootfähigen UEFI-USB-Live-Medien haben.

105
LiveWireBT

Überblick

Das Erstellen von USB-Live-Medien, die nur über UEFI gebootet werden können, ist ziemlich einfach. Kopieren Sie einfach die Dateien auf Ihr FAT32-formatiertes USB-Laufwerk. Das war's!

Denken Sie daran, dass für eine Installation oder das Booten des Mediums:

Inhaltsverzeichnis

  • Dateien von der ISO-Methode kopieren
    1. Beispiel über Terminal
    2. Beispiel über GUI
    3. Beispiel unter Windows
  • Die ISO-Loopback-Methode (erweitert)
    1. Erstellen der Binärdatei
    2. Konfigurationsdatei erstellen
    3. Persistenz hinzufügen
    4. Überprüfung der Integrität
    5. UEFI Secure Boot

1. Kopieren Sie die Dateien von der ISO-Methode

Diese Methode funktioniert auch für andere Installationsmedien, die EFI-Loader enthalten, wie z. B. Windows.

1.1. Beispiel über Terminal

Sie können Folgendes tun, wenn 604A-00EA Ihr USB-Laufwerk ist und Sie p7Zip bereits installiert haben:

$ 7z x ubuntu-12.04-desktop-AMD64.iso -o/media/$USER/604A-00EA/

Sie sind fertig, wenn Sie nur eine Partition auf diesem USB-Laufwerk haben. Andernfalls müssen Sie die Partition als bootfähig markieren, z. über parted:

# parted /dev/sdX set 1 boot on

Wobei /dev/sdX Ihr USB-Laufwerk und 1 die Partitionsnummer ist, die zum Booten verwendet werden soll.

1.2. Beispiel über GUI

  1. Hängen Sie die .iso-Datei ein und kopieren Sie den Inhalt auf Ihr USB-Laufwerk. Drücken Sie Ctrl+H in Nautilus, um auch versteckte Dateien anzuzeigen und zu kopieren.

    nautilus showing Disk Image Mounter in context menu when .iso-file is selected

  2. Fügen Sie das Boot-Flag über GParted hinzu.

    GParted showing how to manage partition flags

1.3. Beispiel unter Windows

  1. Wie oben, einfach Dateien kopieren.
  2. Drücken Sie Windows/Super+X, gehen Sie zur Datenträgerverwaltung und prüfen Sie, ob die Partition als aktiv markiert ist. Bei Windows-Versionen vor Windows 8 drücken Sie Windows/Super+R Um das Ausführungsmenü zu öffnen und diskmgmt.msc zu öffnen, wird die Datenträgerverwaltung geöffnet.

2. Die ISO-Loopback-Methode (erweitert)

Anstatt Inhalte aus einem ISO-Image zu extrahieren, konnten GRUB und GRUB2 von ISO-Images direkt über ein Loopback-Gerät booten. Da das ISO-Image UEFI-bootfähig ist, können wir ein USB-Laufwerk einrichten, das mehrere ISOs mit unterschiedlichen Betriebssystemen enthält, ohne dass das USB-Laufwerk durcheinander gebracht wird.

Wenn Sie auch Windows booten möchten, sollten Sie sich SARDU ansehen. Ich erinnere mich, dass ich es mit Windows PE um 2005 verwendet habe, und es scheint aktualisiert worden zu sein, um USB-Laufwerke und UEFI zu unterstützen.

Was brauchen wir?

  • Sehr grundlegende Kenntnisse über GRUB Konfigurationsdateien.
  • Sehr grundlegende Kenntnisse über UEFI-Boot und GRUB, da wir ein eigenes GRUB Bootloader-Image mit einer Vielzahl von Modulen erstellen werden.
  • Ein bootfähiges UEFI-ISO-Image, ein FAT-formatiertes USB-Laufwerk und ein Computer, auf dem Linux ausgeführt wird.
    • Nein, wir brauchen keine UEFI-Installation von Linux (was eine Hühnchen-und-Ei-Situation sein kann), ein traditionelles Linux VM wie in VirtualBox ist in Ordnung.

2.1. Erstellen der Binärdatei

Stellen Sie auf Ihrem Ubuntu-Computer oder auf VM sicher, dass das Paket grub-efi-AMD64-bin installiert ist (grub-efi-ia32-bin ist auch für 32-Bit-Intel-Architekturen verfügbar) neuere Versionen). Das Paket kann in einer anderen Distribution einen anderen Namen haben. Sie können das Dateiliste des Pakets vergleichen, um das richtige Paket in Ihrer Distribution zu finden.

Der folgende Befehl generiert das Image GRUB, in diesem Fall eine EFI-Binärdatei, die jeder Computer mit einer UEFI-Firmware ausführen kann:

grub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi \
 fat iso9660 part_gpt part_msdos \
 normal boot linux configfile loopback chain \
 efifwsetup efi_gop efi_uga \
 ls search search_label search_fs_uuid search_fs_file \
 gfxterm gfxterm_background gfxterm_menu test all_video loadenv \
 exfat ext2 ntfs btrfs hfsplus udf

Jede Standard UEFI-Firmware sollte in \EFI\BOOT\ nach einer Datei mit dem Namen boot{Arch}.efi suchen. Erstellen Sie daher die Ordner auf dem USB-Laufwerk und kopieren Sie das soeben erstellte Image dieser Ort. Andere Architekturen anstelle von x64 sind möglich, aber lassen Sie es uns mit x64/AMD64 einfach halten.

2.2. Konfigurationsdatei erstellen

Ein sehr einfaches Beispiel für eine grub.cfg -Konfigurationsdatei, die im selben Verzeichnis wie bootx64.efi abgelegt werden soll, sieht folgendermaßen aus:

set timeout=3
set color_highlight=black/light-Magenta

menuentry 'Boot Ubuntu 14.04.2 LTS from ISO' {
        set isofile="/efi/boot/ubuntu-14.04.2-desktop-AMD64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash persistent --
        initrd (loop)/casper/initrd.lz
}
submenu 'Useful snippets' {
    menuentry 'Ubuntu' {
            chainloader /efi/ubuntu/grubx64.efi
    }
    menuentry 'Windows' {
            chainloader /efi/Microsoft/Boot/bootmgfw.efi
    }
    menuentry 'Firmware Setup' {
            fwsetup
    }
}

Wichtig ist der Konfigurationsblock mit dem Titel Boot Ubuntu 14.04.2 LTS from ISO. Sie können die Farbe und das Zeitlimit nach Ihren Wünschen ändern. Ich habe black/light-Magenta gewählt, da es immer noch etwas Ubuntu-artig aussieht, aber beim Laden anderer Konfigurationen leicht zu unterscheiden ist. Weitere Beispiele für andere Distributionen finden Sie im Arch Wiki und das Lesen des GRUB-Handbuch ist wirklich Ihre Zeit wert, wenn Sie darüber hinausgehen möchten.

Wenn Sie zum Konfigurationsblock zurückkehren, sollte es offensichtlich sein, dass die ISO als /efi/boot/ubuntu-14.04.2-desktop-AMD64.iso bezeichnet wird. Kopieren Sie also Ihre ISO nach \EFI\BOOT\ und ersetzen Sie ubuntu-14.04.2-desktop-AMD64.iso in der Konfiguration durch den tatsächlichen Dateinamen Ihrer ISO .

loopback loop $isofile ist die Zeile, die unsere ISO-Datei auf ein Loopback-Gerät lädt, von dem aus wir den Linux-Kernel direkt booten können. Dies ist möglich, weil unser EFI GRUB -Image das Loopback-Modul enthält. (Mit ein wenig Versuch und Irrtum musste herausgefunden werden, welche Module zumutbar sind. Es sollten keine Fehlermeldungen angezeigt werden, es ist jedoch immer noch nicht perfekt.) Apropos Kernel: Sie können Kernelparameter wie toram hinzufügen. , Parameter für verschiedene Sprachen (Beispiel locale=de_DE bootkbd=de) und wie im Beispiel: persistent

2.3. Persistenz hinzufügen

Sie können eine Partition wie folgt hinzufügen: Wie verwende ich eine Live-USB-Partition für die Persistenz? Oder Sie erstellen eine casper-rw -Datei und platzieren sie im Stammverzeichnis Ihrer USB Laufwerk.

dd if=/dev/zero of=casper-rw bs=1M count=4094
mkfs.ext4 -m 0 casper-rw

Ich habe nicht getestet, was das absolute Maximum ist, es sollte irgendwo zwischen 4094 und 4096 MB liegen. Verwenden Sie eine Partition, wenn Sie mehr Speicherplatz verwenden möchten. Beachten Sie, dass jede Änderung an (root) eine Änderung am Overlay-Dateisystem ist, auch das Löschen von Dateien.

2.4. Überprüfung der Integrität

Sie sollten sich die Antworten auf die folgenden Fragen ansehen, um sicherzustellen, dass sich der Live-ISO-Inhalt auf dem USB-Laufwerk in einwandfreiem Zustand befindet:

2.5. UEFI Secure Boot

Auf Windows 10-Computern ist der sichere Start obligatorisch. Ich schlage vor, Sie werfen einen Blick auf den PreLoader der Linux Foundation, um diesem Setup die Funktion für den sicheren Start hinzuzufügen. Hier sind einige ASCII-Grafiken, die Menüs des zugehörigen HashTools veranschaulichen .


Herzlichen Glückwunsch, ich würde sagen, Sie haben das UEFI-Booten jetzt gemeistert und sollten keine Angst mehr haben.

133
LiveWireBT

Auszug aus der ISO-Datei nach FAT32

Das Extrahieren des Inhalts einer Ubuntu 64-Bit-Desktop-ISO-Datei auf eine Partition mit einem FAT32-Dateisystem und einem Startflag erledigt die Aufgabe: Erstellen eines Live-Laufwerks, das nur im UEFI-Modus gestartet wird. Hier (in der akzeptierten Antwort) heißt es "Dateien von der ISO-Methode kopieren".

Testen Sie, ob Sie im UEFI- oder BIOS-Modus ausgeführt werden

Es ist jedoch einfach, in einem laufenden Ubuntu-System (sowohl live als auch installiert) zu testen, ob es im UEFI- oder BIOS-Modus gestartet wurde. Führen Sie diese Befehlszeile aus,

test -d /sys/firmware/efi && echo efi || echo bios

Dies macht es einfach, Live-Systeme zu verwenden, die in beiden Startmodi verwendet werden können, was ebenfalls von Vorteil sein kann.

Siehe auch die folgenden Links für eine detailliertere Erklärung und Beschreibung der Methode.

help.ubuntu.com/community/Installation/iso2usb

help.ubuntu.com/community/Installation/iso2usb/diy

3
sudodus

Die Verwendung von dd hat bei mir aus irgendeinem Grund nicht funktioniert. Als erstes möchten Sie vielleicht den Fortschritt von dd überwachen , eine andere Option verwendet die Option SIGUSR1, um dd auszulösen, um den Fortschritt in regelmäßigen Abständen zu melden. Dies ist jedoch komplizierter als pv.

Dann:

Sudo dd if=path/to/image/file | pv | Sudo dd of=/dev/device_you_want_to_use

(/dev/device_you_want_to_use ist normalerweise /dev/sdb, aber überprüfen Sie mit df!)

2
sup