webentwicklung-frage-antwort-db.com.de

Wie installiere ich mit UEFI zwei unabhängige Ubuntu-Installationen auf einer einzelnen Festplatte?

Aus Sicherheitsgründen möchte ich mithilfe von UEFI ein sekundäres, vollständig unabhängiges Betriebssystem auf einem Computer mit einer Festplatte installieren. Beide Installationen sollten in der Lage sein, unterschiedliche LUKS-Kryptopartitionen als Root-Gerät zu verwenden (LVM über Krypto) und müssen in der Lage sein, ihre eigenen Kernel zu verwenden.

Dual Boot mit zwei verschiedenen Betriebssystemen ist keine große Sache. Ein Ubuntu und Fedora greifen nicht ein und können die EFI-Systempartition gemeinsam nutzen, aber zwei Ubuntu-Installationen kämpfen miteinander, weil beide ihre Grub-Instanz auf demselben EFI-Speicherort installieren sollen.

  • Gibt es eine Möglichkeit, Ubuntu so zu ändern, dass Grub während der Installation an einem anderen Ort als /boot/efi/EFI/ubuntu installiert wird? Ich benötige eine beständige Methode, damit Paketaktualisierungen und Kernel-/Grub-Aktualisierungen weiterhin in diesem Pfad installiert werden. Genau wie Fedora's Grub in /boot/efi/EFI/Fedora installiert würde. Ich kann diese Konfigurationsoption in Grub nicht finden. Wenn ich könnte, würde mein Dell UEFI-Startmenü es mir ermöglichen, das zu ladende Betriebssystem auszuwählen. Vielleicht fehlt mir hier etwas Kleber zwischen efibootmgr und grub-efi.

  • Wäre es alternativ möglich, eine einzelne Grub-Installation von einer der beiden Ubuntu-Installationen aus zu verwenden und die richtigen Boot-Einstellungen automatisch zu erkennen? Ich meine, ich weiß, dass os-prober die andere /boot Partition mit Kerneln findet, aber wie kann es die richtigen Boot-Parameter für dieses Betriebssystem kennen (z. B. LVM-Volume im gesperrten Krypto-Volume als Root-Dateisystem)? Ich kann verstehen, dass dies bei unverschlüsselten Einzelpartitionsinstallationen möglich ist, aber es kann kein /boot mit dem entsprechenden Root-Dateisystem übereinstimmen, oder? Und es ist völlig unmöglich, wenn es verschlüsselt ist. Das würde also eine Menge manueller Anpassungen der Grub-Konfigurationsdateien erfordern. Ich mag auch diese Option einer einzelnen gemeinsam genutzten Bootloader-Konfiguration nicht, wodurch die beiden Betriebssysteme in gewissem Maße weniger isoliert sind.

Ich bin übrigens in Ordnung mit der Server-Text-basierten Experten-Installation. Außerdem einige benutzerdefinierte Konfigurationen, solange ich die Schritte nicht für jedes Kernel/Grub-Update wiederholen muss.

8
gertvdijk

Ich habe zwei Vorschläge ...

Option 1: Separate ESPs

Unter EFI befindet sich der Bootloader auf "der" EFI System Partition (ESP). Ich setze das Wort "die" in Anführungszeichen, da es keine Regel gibt, die besagt, dass Sie auf einen ESP beschränkt sind. Wenn Sie zwei ESPs auf Ihrer Festplatte erstellen, können Sie einen davon für Ihre erste Installation und den zweiten ESP für die zweite Installation verwenden. Dies sollte ziemlich nahtlos funktionieren, obwohl Sie Ihre Partitionen manuell erstellen müssen (mit der Option "Something Else" während der Installation), zumindest für Ihre zweite Ubuntu-Installation.

Ein Problem bei diesem Ansatz ist, dass, obwohl in der EFI-Spezifikation ausdrücklich angegeben ist, dass Sie so viele ESPs erstellen können, wie Sie möchten, manche Software dadurch möglicherweise verwirrt wird. Ein prominentes Beispiel hierfür ist das Windows-Installationsprogramm, zumindest über Windows 7 (ich kenne Windows 8 oder höher nicht). Wenn das Windows 7-Installationsprogramm einen Datenträger mit zwei ESP-Funktionen erkennt, kommt es zu Ausbrüchen und seltsamen Aktionen. IIRC führt die eigene Installation nicht ordnungsgemäß aus. Es ist vorstellbar, dass Windows-Reparaturtools unter demselben Problem leiden. Wenn Sie Windows auf diesem System nicht booten, sollte dies keine große Sache sein. Wenn Sie mit Windows booten , sollten Sie sich des Problems einfach bewusst sein, da Sie es leicht überwinden können, indem Sie den Typcode des Nicht-Windows-Computers vorübergehend ändern. Windows ESP (s), wenn Sie auf Probleme stoßen. Beachten Sie, dass Windows auf einer Festplatte mit mehreren ESPs problemlos bootet. Es ist nur der Installer, der an solchen Festplatten erstickt.

Ein weiteres Problem ist, wie Sie zwischen Ihren beiden Distributionen wechseln. Möglicherweise müssen Sie eines oder beide der GRUB - Setups Ihrer Installation mit einem Tool wie GRUB Customizer. anpassen. Eine andere (aber nicht inkompatible) Option ist die Verwendung des Boot-Managers Ihrer Firmware Wechseln Sie zwischen Ihren beiden GRUB Installationen und booten Sie jeweils nur eine eigene Ubuntu-Version.

Option 2: Abbruch von GRUB (oder zumindest von Ubuntus GRUB Tools)

Das Problem mit GRUB für Ihre Situation ist, dass Sie zwei Installationen haben und die GRUB Wartungstools wahrscheinlich durch diese Konfiguration verwirrt werden. Diese Beobachtung führt zu der offensichtlichen Lösung, dass Sie diese Werkzeuge einfach nicht verwenden sollten. Es gibt mehrere andere EFI-Bootloader für Linux , von denen die meisten einfacher manuell zu warten sind als GRUB. Sie können ELILO, SYSLINUX, Fedoras gepatchtes GRUB Legacy, Gummiboot oder REFInd einrichten und beide Installationen manuell verwalten. Da rEFInd beim Booten Kernel erkennt, sollte rEFInd nach der Einrichtung nahezu wartungsfrei sein. Alternativ, aber in ähnlicher Weise, können Sie Ihre grub.cfg -Datei manuell bearbeiten, um das zu tun, was Sie möchten, anstatt sich auf die GRUB -Einrichtungsskripten zu verlassen.

Abgesehen von rEFInd müssen Sie bei all diesen Tools Konfigurationsänderungen vornehmen, wenn Sie einen Kernel aktualisieren. Es stellt sich auch die Frage, wann und wie das zusätzliche Boot-Programm installiert werden soll. Ich würde es wahrscheinlich erst nach Ihrer zweiten Ubuntu-Installation verschieben, da jede Installation eine eigene Kopie von GRUB als Standard-Bootloader registriert und Sie diesen Standard überschreiben möchten.

Beachten Sie auch, dass keines dieser Tools einen Kernel von einem verschlüsselten Dateisystem oder von einem LVM lesen kann, sodass Sie für jede Ihrer Ubuntu-Installationen eine separate unverschlüsselte /boot -Partition benötigen. Dies ist die Art und Weise, wie die meisten Anweisungen, die ich gesehen habe, ohnehin sagen, um eine verschlüsselte Ubuntu-Installation einzurichten, so dass es wahrscheinlich keine große Sache ist, es sei denn, Sie möchten auf dem neuesten Stand der Festplattenverschlüsselung spielen.

Einige EFI-Bootloader haben zusätzliche spezifische Partitionierungs- oder Dateisystemanforderungen. Insbesondere für ELILO, SYSLINUX und gummiboot muss sich der Kernel auf einer FAT-Partition befinden, und das ESP funktioniert am besten. Sie können dies tun, indem Sie ESP unter /boot einhängen. Dies ist jedoch eine problematische Lösung in Ubuntu, da für einige Paketaktualisierungen symbolische Links erforderlich sind. Bei zwei getrennten Ubuntu-Installationen würde dies ebenfalls zu Problemen führen, da beide versuchen würden, dieselben Dateien zu beanspruchen. (In diesem Fall bedeutet "das ESP" wirklich "die Partition, von der der Bootloader ausgeführt wurde", sodass Sie in diesem Fall nur ein ESP haben können.) GRUB Legacy and rEFInd sind diesbezüglich flexibler.

Meine Empfehlung

Persönlich würde ich dafür rEFInd verwenden - aber da ich rEFInd beibehalten habe, bin ich nicht gerade unvoreingenommen. Tatsächlich habe ich einen Computer, der zwischen drei Ubuntu-Installationen mehrere Startvorgänge ausführt und zwischen ihnen problemlos wechselt. Dieses spezielle System verwendet keine Verschlüsselung, aber ich bezweifle, dass dies aus der Sicht von rEFInd zu neuen Problemen führen wird.

Das heißt, separate ESPs sollten auch mit der Einschränkung gut funktionieren, dass Sie möglicherweise GRUB Customizer verwenden müssen, um die Einstellungen von mindestens einer dieser GRUB Kopien zu optimieren.

6
Rod Smith

Hier sind die Schritte, die ich ausgeführt habe, um mit zwei LUKS-verschlüsselten Ubuntu-Systemen auf einer einzelnen Festplatte mit UEFI unter Verwendung der zuvor von Rod Smith empfohlenen Option 2 zu starten. Dies war speziell mit Ubuntu 18.04.1-Desktop. Die Verschlüsselung des Basisverzeichnisses wird während der Installation nicht mehr als Option angeboten, da Bedenken hinsichtlich der Zuverlässigkeit und Wartung von eCryptfs bestehen. Es wird empfohlen, stattdessen LUKS zu verwenden. Ich denke, dies ist die beste Option, um mehrere Benutzer mit verschlüsselten Home-Partitionen zu haben.

    1. Starten Sie ein Live-USB-Gerät, indem Sie die ISO-Datei herunterladen und mit Startup Disk Creator ein USB-Laufwerk formatieren und einrichten.
    1. Verwenden Sie GParted, um die Festplatte zu partitionieren. Dies beruhte auf den Empfehlungen unter https://help.ubuntu.com/community/ManualFullSystemEncryption und der Verwendung einiger der vom Ubuntu-Installationsprogramm festgelegten Standardeinstellungen bei der Auswahl der Festplattenverschlüsselung für die gesamte Festplatte.
      • EFI-Systempartition/512 MB/FAT32/boot, esp (Flags)
      • Booten Sie das System 1/732MiB/EXT4
      • Booten Sie das System 2/732MiB/EXT4
      • Daten verschlüsselt # 1/[gewünschte Größe]/gelöscht
      • Daten verschlüsselt # 2/[gewünschte Größe]/gelöscht
    1. Starten Sie Live USB erneut
      • Installieren Sie Ubuntu
      • Wählen Sie die Installationseinstellungen
      • Wählen Sie "Etwas anderes" für das Partitionsfestplattenlayout und innerhalb dieser Partitionskonfiguration für die Installation:
        • Wählen Sie "EFI System Partition" als Bootloader im Menü unten.
        • Wählen Sie "Data Encrypted # 1" und "Physical Device for Encryption" und geben Sie dann die für die Partition zu verwendende Verschlüsselungsphrase ein.
        • Wählen Sie mit EXT4 die neu erstellte Partition aus und ändern Sie den Mount-Punkt auf "/".
        • Wählen Sie "Boot System # 1" und geben Sie den Mount-Punkt "/ boot" an.
      • Weiter und installieren
    1. Starten Sie die neue Installation neu
      • Installieren Sie "refind" über "apt-get install refind" und lassen Sie es automatisch auf dem ESP, der "EFI System Partition", installieren.
    1. Starten Sie das Live-USB-Gerät erneut
      • Wiederholen Sie die Schritte 3 und 4 für die Partitionen # 2 Boot System und Data Encrypted # 2, auf denen die zweite Ubuntu-Installation installiert ist.
    1. Konfigurieren und aktualisieren Sie jede Installation nach Bedarf.
1
brihoriq

Ich benutze den folgenden Ansatz mit einem einzelnen ESP:

Ich habe zusätzliche Bootloader für jedes Betriebssystem mit erstellt

Sudo grub-install --bootloader-id=ID

verwenden Sie für jedes Betriebssystem ein anderes ID.

Beispiel:

Ich habe Ubuntu 16.04 und Ubuntu 18.04 installiert. Ich boote in Ubuntu 16.04 und starte

Sudo grub-install --bootloader-id=Ubuntu1604

Dann von Ubuntu 18.04 gebootet laufe ich

Sudo grub-install --bootloader-id=Ubuntu1804

In den UEFI-Einstellungen sehe ich die neuen Boot-Einträge mit den Namen Ubuntu1604 und Ubuntu1804 und ordne die Boot-Reihenfolge neu, um einen der neuen Einträge auf den ersten Platz zu setzen.

Ich kann auch die Ordner mit diesen Namen im ESP sehen.

Wenn ein System-Upgrade mit einer neuen Version von grub ausgeliefert wird, wird eine neue Instanz von grub im Ordner ubuntu- auf dem ESP neu installiert. Dies hat keine Auswirkungen auf die von mir erstellten Bootloader, muss aber neu arrangiert werden Die Startreihenfolge wird erneut als ubuntu- Eintrag an die erste Stelle in der Startreihenfolge verschoben.

Das zeigt efibootmgr -v in meiner Konfiguration:

~ $ efibootmgr -v 
 BootCurrent: 0001 
 Timeout: 0 Sekunden 
 BootOrder: 0001,0002,0004,0000,0003,0005 
 Boot0000 * ubuntu HD ( 1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000)/Datei (\ EFI\ubuntu\shimx64.efi) 
 Boot0001 * US1804 HD (1, GPT, 249ac0f6-d3-4c3 91d5-6e8d63c093c3,0x800,0x9a000)/File (\ EFI\US1804\grubx64.efi) 
 Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093x9.0x9 (\ EFI\US1604\grubx64.efi) 
 Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000)/File (\ EFI\BOOTX64.EI ) 
 Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000)/File (\ EFI\US1904\shimx64.efi) 
 Boot0005 * ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000)/Datei (EFI\Ubuntu\grubx64.efi)
0
mook765