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

8

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

Dual Boot mit zwei verschiedenen Betriebssystemen zu haben, ist keine große Sache. Ubuntu und Fedora stören sich nicht und können die EFI-Systempartition gemeinsam nutzen. Zwei Ubuntu-Installationen kämpfen jedoch miteinander, da beide ihre Grub-Instanz am selben EFI-Speicherort installieren möchten.

  • Gibt es eine Möglichkeit, Ubuntu so zu ändern, dass Grub an einem anderen Ort als /boot/efi/EFI/ubuntuwährend der Installation installiert wird? Ich benötige einen dauerhaften Weg, damit Paketupdates und Kernel / Grub-Updates weiterhin in diesem Pfad installiert werden. Genau wie Fedoras Grub installiert werden würde /boot/efi/EFI/fedora. Ich kann diese Konfigurationsoption in Grub nicht finden. Wenn ich könnte, könnte ich in meinem Dell UEFI-Startmenü auswählen, welches Betriebssystem geladen werden soll. Vielleicht fehlt mir hier etwas Kleber zwischen efibootmgr und grub-efi.

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

Ich bin übrigens in Ordnung mit der textbasierten Serverinstallation von Servern. Auch einige benutzerdefinierte Konfigurationen, solange ich die Schritte nicht für jedes Kernel / Grub-Update wiederholen muss.

gertvdijk
quelle

Antworten:

6

Ich habe zwei Vorschläge ...

Option 1: Separate ESPs

Unter EFI befindet sich der Bootloader auf "der" EFI-Systempartition (ESP). Ich habe das Wort "the" in Anführungszeichen gesetzt, weil es keine Regel gibt, die besagt, dass Sie auf ein ESP beschränkt sind. Wenn Sie zwei ESPs auf Ihrer Festplatte erstellen, können Sie eines davon für Ihre erste Installation und das zweite ESP für die zweite Installation verwenden. Dies sollte ziemlich nahtlos funktionieren, obwohl Sie Ihre Partitionen manuell erstellen müssen (mit der Option "Etwas anderes" während der Installation), zumindest für Ihre zweite Ubuntu-Installation.

Ein Problem bei diesem Ansatz besteht darin, dass, obwohl in der EFI-Spezifikation ausdrücklich angegeben ist, dass Sie so viele ESPs erstellen können, wie Sie möchten, einige Softwareprodukte dadurch verwirrt werden können. Ein prominentes Beispiel hierfür ist das Windows-Installationsprogramm, zumindest über Windows 7 (ich weiß nichts über Windows 8 oder höher). Wenn das Windows 7-Installationsprogramm eine Festplatte mit zwei ESP-Dateien sieht, wird sie ausgeblendet und führt seltsame Aktionen aus. IIRC führt die eigene Installation nicht ordnungsgemäß durch. Es ist denkbar, dass Windows-Reparaturtools unter demselben Problem leiden. Wenn Sie Windows auf diesem System nicht booten, sollte dies keine große Sache sein. Wenn du bistWenn Sie mit Windows booten, sollten Sie sich des Problems einfach bewusst sein, da Sie es leicht beheben können, indem Sie den Typcode der Nicht-Windows-ESPs vorübergehend ändern, wenn Probleme auftreten. Beachten Sie, dass Windows auf einer Festplatte mit mehreren ESPs einwandfrei startet. Es ist nur das Installationsprogramm, das an solchen Festplatten erstickt.

Ein weiteres Problem ist, wie Sie zwischen Ihren beiden Distributionen wechseln würden. Möglicherweise müssen Sie eines oder beide GRUB-Setups Ihrer Installation mit einem Tool wie GRUB Customizer anpassen . Eine andere (aber nicht inkompatible) Option wäre, den Boot-Manager Ihrer Firmware zu verwenden, um zwischen Ihren beiden GRUB-Installationen zu wechseln, und jeweils nur eine eigene Version von Ubuntu zu booten.

Option 2: GRUB (oder zumindest die GRUB-Tools von Ubuntu) aufgeben

Das Problem mit GRUB für Ihre Situation ist, dass Sie zwei Installationen haben und die GRUB-Wartungstools durch diese Konfiguration wahrscheinlich 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 Kernel beim Booten erkennt, sollte rEFInd nach seiner Einrichtung nahezu wartungsfrei sein. Alternativ, aber in ähnlicher Weise, können Sie Ihre grub.cfgDatei von Hand bearbeiten, um das zu tun, was Sie möchten, anstatt sich auf die GRUB-Setup-Skripte zu verlassen.

Abgesehen von rEFInd müssen Sie für alle diese Tools Konfigurationsänderungen vornehmen, wenn Sie einen Kernel aktualisieren. Dies ist ein Problem. Es stellt sich auch die Frage, wann und wie das zusätzliche Startprogramm installiert werden soll. Ich würde es wahrscheinlich erst nach Ihrer zweiten Ubuntu-Installation verschieben, da jede Installation ihre eigene Kopie von GRUB als Standard-Bootloader registriert und Sie diesen Standard überschreiben möchten.

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

Einige EFI-Bootloader haben zusätzliche spezifische Partitionierungs- oder Dateisystemanforderungen. Vor allem für ELILO, SYSLINUX und gummiboot muss sich der Kernel auf einer FAT-Partition befinden, und das ESP funktioniert hierfür am besten. Sie können dies tun, indem Sie das ESP unter /bootmounten. Dies ist jedoch eine zweifelhafte Lösung in Ubuntu, da für einige Paketaktualisierungen symbolische Links erforderlich sind. Sie hätten auch Probleme mit zwei separaten Ubuntu-Installationen, da beide versuchen würden, dieselben Dateien zu beanspruchen. (In diesem Fall bedeutet "das ESP" wirklich "die Partition, von der aus der Bootloader ausgeführt wurde", sodass Sie in diesem Fall nur ein ESP haben können.) GRUB Legacy und rEFInd sind diesbezüglich flexibler.

Meine Empfehlung

Persönlich würde ich rEFInd dafür verwenden - aber da ich rEFInd pflege, bin ich nicht gerade unvoreingenommen. Tatsächlich habe ich einen Computer, der zwischen drei Ubuntu-Installationen mehrfach bootet, und rEFInd wechselt problemlos zwischen ihnen. Dieses spezielle System verwendet keine Verschlüsselung, aber ich bezweifle, dass dies aus Sicht von rEFInd neue Probleme verursachen wird.

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

Rod Smith
quelle
Sehr gute Vorschläge, danke! Ich bin mir sicher, dass Sie in Bezug auf die Spezifikation mehrere ESPs haben können, aber ich bezweifle, dass meine Dell Latitude UEFI-Implementierung dies auch unterstützt. Es erlaubt mir nur, Pfade nach einzelnen Laufwerken zu durchsuchen. Ich muss es aber tatsächlich versuchen.
Gertvdijk
Wenn die EFI-Implementierung Ihres Dell so fehlerhaft ist, dass nicht mehrere ESPs verarbeitet werden können, sollten Sie sie für eine Rückerstattung an den Store zurücksenden. Ernsthaft; Diese Art von Fehler würde auf eine solche Schrecklichkeit hinweisen, dass ich der Firmware nicht trauen würde, ihre grundlegendsten Aufgaben zu erledigen. In der Praxis denke ich nicht, dass es so schlimm wäre; Ich habe noch nie von einem EFI gehört, der nicht mit mehreren ESPs umgehen kann.
Rod Smith
1

Hier sind die Schritte, die ich zum Dual-Boot mit zwei LUKS-verschlüsselten Ubuntu-Systemen auf einer einzelnen Festplatte mit UEFI unter Verwendung der von Rod Smith zuvor empfohlenen Option 2 verwendet habe. Dies war speziell mit Ubuntu 18.04.1-Desktop. Die Verschlüsselung des Home-Verzeichnisses 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 einen Live-USB-Stick, indem Sie die ISO herunterladen und mit dem Startup Disk Creator ein USB-Laufwerk formatieren und einrichten.
    1. Verwenden Sie GParted, um die Festplatte zu partitionieren. Dies beruhte auf Empfehlungen unter https://help.ubuntu.com/community/ManualFullSystemEncryption und auf der Verwendung einiger der vom Ubuntu-Installationsprogramm festgelegten Standardeinstellungen bei der Auswahl der Festplattenverschlüsselung für die gesamte Festplatte.
      • EFI-Systempartition / 512MiB / FAT32 / boot, esp (Flags)
      • Boot-System Nr. 1 / 732MiB / EXT4
      • Boot 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 neu
      • Installieren Sie Ubuntu
      • Wählen Sie die Installationseinstellungen
      • Wählen Sie "Etwas anderes" für das Layout der Partitionsfestplatte und innerhalb dieser Partitionskonfiguration für die Installation:
        • Wählen Sie "EFI System Partition" als Bootloader im Menü unten.
        • Wählen Sie "Daten verschlüsselt # 1" und "Physisches Gerät für die Verschlüsselung" und geben Sie dann die Verschlüsselungsphrase ein, die für die Partition verwendet werden soll.
        • Wählen Sie die neu erstellte Partition mit EXT4 aus und ändern Sie den Einhängepunkt in "/".
        • Wählen Sie das "Boot System # 1" und lassen Sie den Mount-Punkt dafür "/ boot" sein.
      • 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 den Live USB neu
      • Wiederholen Sie die Schritte 3 und 4 für die Partitionen # 2 Boot System und Data Encrypted # 2, um die zweite Ubuntu-Installation zu installieren.
    1. Konfigurieren und aktualisieren Sie jede Installation nach Bedarf.
brihoriq
quelle
1

Ich verwende 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 eines anderen IDfür jedes Betriebssystem.

Beispiel:

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

sudo grub-install --bootloader-id=Ubuntu1604

Dann von gebootet in Ubuntu 18.04 laufe ich

sudo grub-install --bootloader-id=Ubuntu1804

In den UEFI-Einstellungen sehe ich die neuen Starteinträge mit den Namen Ubuntu1604und Ubuntu1804ordne die Startreihenfolge neu, um einen der neuen Einträge an die erste Stelle 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 ubuntuOrdner-auf dem ESP neu installiert. Dies hat keine Auswirkungen auf die von mir selbst erstellten Bootloader, aber ich muss die Boot-Reihenfolge erneut ändern da der ubuntu-entry in der Boot-Reihenfolge an die erste Stelle geschoben wird.

Folgendes efibootmgr -vzeigt sich in meiner Konfiguration:

~ $ efibootmgr -v
BootCurrent: 0001
Zeitüberschreitung: 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-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Datei (\ EFI \ US1804 \ grubx64.efi)
Boot0002 * US1604 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Datei (\ EFI \ US1604 \ grubx64.efi)
Boot0003 * UEFI OS HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Datei (\ EFI \ BOOT \ BOOTX64.EFI)
Boot0004 * US1904 HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Datei (\ EFI \ US1904 \ shimx64.efi)
Boot0005 * Ubuntu HD (1, GPT, 249ac0f6-d3e4-4b91-91d5-6e8d63c093c3,0x800,0x9a000) / Datei (EFI \ Ubuntu \ grubx64.efi)
mook765
quelle
Hat bei mir immer noch nicht funktioniert. Ich ändere die Standardeinstellung in / etc / default / grub in verteilungsähnlich GRUB_DISTRIBUTOR="Bionic_18_04"und installiere die Neuinstallation von grub als UEFI-Standard-ID. Aber jedes Mal wird nur /EFI/ubuntu/grub.cfg als Standardspeicherort verwendet, um nicht von meinem neuen /EFI/bionic_18_04/grub.cfg zu booten.
Oldfred
@oldfred Für mich funktioniert das gut für mehrere Jahre mit einem Triple Boot.
mook765
Versuchte Ihren Befehl, anstatt die Umbenennung in / etc / default / grub. Machte keinen Unterschied. UEFI ist auf den Standardeintrag für den Neustart eingestellt. Aber es wurde mit meinem / efi / ubuntu mit Disco als Standardstart gestartet, anstatt im neuen Ordner / EFI / ubuntu1804 zu grubben. Ich würde denken, dass es nicht UEFI ist, das den Unterschied macht.
Oldfred
@oldfred Bitte werfen Sie einen Blick auf die Ausgabe, efibootmgr -vdie ich meiner Antwort hinzugefügt habe. Es klappt. Möglicherweise haben Sie zusätzliche Änderungen, die Sie daran hindern. Was ich beschrieben habe, ist das einzige, was ich tue, damit es funktioniert.
mook765
Ich habe efibootmgr -v überprüft und es wurde für einen neuen Eintrag festgelegt, aber das Grub wurde in / EFI / ubuntu gestartet. Meins bootet /EFI/ubuntu1804/shimx64.efi. Verwenden Sie ein grubx64.efi oder shimx64.efi, vielleicht ist das ein Unterschied? Ich habe Secure Boot deaktiviert, aber es wurde standardmäßig als erster Ubuntu1804-Eintrag angezeigt. Irgendwann hatte ich so viele UEFI-Einträge oder -Ordner in / EFI, dass ich Probleme beim Booten hatte und rEFInd auf einem anderen Laufwerk zum Booten verwenden musste. Daher möchte ich jetzt nicht zu viel im / EFI-Ordner oder Einträge in UEFI haben.
Oldfred