Installieren von anderem Linux auf einer verschlüsselten Festplatte


7

Ich habe kürzlich eine SSD als Ersatz für die Festplatte meines Laptops erhalten und mich entschieden, die "Vollfestplatten" -Verschlüsselung zu ändern und zu verwenden.

Ich habe eine kleine unverschlüsselte Partition für /bootund eine große verschlüsselte LUKS-Partition erstellt, auf der ich mit LVM 5 logische Volumes in einer Volume-Gruppe erstellt habe:

  • Eine, um Fedora ( lv_fedora) zu installieren .
  • Eine für Swap ( lv_swap).
  • Eines für ein anderes Linux-Betriebssystem ( lv_os2).
  • Und zwei für Daten ( lv_data1und lv_data2).

Ich habe Fedora lv_fedoraohne Probleme als mein erstes Betriebssystem installiert und kann es über das GRUB-Menü starten, aber jetzt weiß ich nicht, wie ich ein anderes Linux-basiertes Betriebssystem (Linux Mint 17) auf der verschlüsselten Festplatte installieren und Fedoras GRUB2 erstellen kann Erkennen Sie es und starten Sie auch dieses Betriebssystem.

Ich habe zwei verschiedene Ansätze ausprobiert. In beiden Fällen habe ich ubiquitydas Linux Mint-Installationsprogramm mit der --no-bootloaderOption gestartet , um zu verhindern, dass Mint den Bootloader installiert. In beiden Fällen habe ich zum Starten der Installation zuvor die LUKS-Partition vom Dateimanager des LinuxMint Live-Images entsperrt, um das entsprechende lv_os2Logik-Volume als Installationsziel auswählen zu können . Jetzt:

  • Zuerst habe ich versucht Linux Mint in einer einzigen Partition zugewiesen installieren /in lv_os2. Die Installation war erfolgreich. Von Fedora aus habe ich ausgeführt grub2-mkconfig -o /boot/grub/grub.cfg, um die GRUB-Einträge zu aktualisieren (das habe ich mein ganzes Leben lang getan, wenn ich eine unverschlüsselte Festplatte verwendet habe). GRUB hat festgestellt, dass Linux Mint vorhanden ist, und die entsprechenden Einträge zum Startmenü hinzugefügt. Das Problem war, dass ich danach nicht mehr von diesen Einträgen booten konnte.
  • Dann dachte ich, vielleicht [1] lag es daran, dass die Kernel-Images im bootOrdner in der Linux Mint-Partition verschlüsselt wurden . Vielleicht brauchte GRUB 2 diese Dateien in einer unverschlüsselten Partition, genau wie bei der ersten Installation von Fedora (ich habe eine /bootunverschlüsselte Partition verwendet, nur weil dies das empfohlene Setup war). Diesmal habe ich also Fedoras /bootPartition gesichert (nur für den Fall) und Linux Mint neu installiert, aber auch die unverschlüsselte Partition verwendet /boot, damit die Kernel-Images in dieses Verzeichnis kopiert und möglicherweise nach der Installation gestartet werden können. Die Installation war erfolgreich und die /bootvon Linux Mint hinzugefügten "zusätzlichen" Dateien haben keine der Fedora-Dateien überschrieben, sodass zumindest Fedora funktionierte und ich die nicht verwenden musste/bootBakcup. Ich habe dann Fedora gestartet und grub2-mkconfig -o /boot/grub/grub.cfgerneut ausgeführt . Diesmal war es noch schlimmer. GRUB hat Einträge verwechselt und beispielsweise einen Eintrag für Fedora (Targeting lv_fedora) erstellt, der das Kernel-Image eines Linux Mint lädt. Ich habe versucht, diese Einträge manuell zu ändern, aber erfolglos.

Ich wette, ich mache etwas falsch. Gibt es eine bessere Möglichkeit, ein sekundäres Linux-Betriebssystem auf einem bereits verschlüsselten Volume zu installieren und das primäre Linux-Betriebssystem den Bootloader verwalten zu lassen? (Aktualisieren der GRUB-Einträge, um auch das Booten vom sekundären Betriebssystem zu ermöglichen)

[1] : Wie Sie sehen, versuche und lerne ich nur, aber ich habe kein tiefes Verständnis für dieses Thema.


Haben Sie versucht, os-prober zu deaktivieren und dies manuell zu tun? gnu.org/software/grub/manual/…
iyrin

@iyrin: Ich habe versucht, /boot/grub/grub.cfgEinträge manuell zu ändern, nachdem GRUB alle Fedora- und LinuxMint-Einträge dort verwechselt hat, aber ohne Erfolg.
Peque

Ich frage mich, ob es besser wäre, einen dieser beiden Ansätze hier auszuprobieren, da Sie zusätzlich zu einer besseren Sicherheit vor dem Booten entschlüsseln würden. Es könnte eine Umgehung sein. unix.stackexchange.com/a/30126/87728
Iyrin

Ich bin nicht sicher, was Fedora verwendet, aber ich sehe, dass Minze /etc/crypttabanstelle von verwendet /etc/mkinitcpio.conf. update-initramfswird verwendet, um das Boot-Image zu generieren. Siehe diese accit.us/?p=4 (obwohl Sie möglicherweise die Mint-Kernel-Version angeben möchten, anstatt diese -k allOption zu verwenden)
Iyrin

Dies kann auch für Ihre Situation relevant sein, in der sich die initramfs des Benutzers in einem LUKS-Container befanden. Wenn Sie die Unterschiede bei Minze berücksichtigen, kann dies Sie in die richtige Richtung weisen. bbs.archlinux.org/viewtopic.php?id=169492
Iyrin

Antworten:


1

Nach allem, was ich gelesen habe, scheint es darauf zurückzuführen zu sein, dass initramfs "in den Kernel eingebettet und in einem frühen Stadium des Startvorgangs geladen wird". 1

Für Mint müssen Sie konfigurieren /etc/crypttabund dann verwenden update-initramfs. 2

Soweit ich weiß, sollte dies als Leitfaden für die Erstellung des initramfs-Images nach der Installation von Mint dienen, das Sie anscheinend bereits installiert haben. Hoffentlich deckt dies alles ab, aber stellen Sie sicher, dass Sie jedes Teil selbst recherchieren.

Live Boot Mintmount und chrootauf der Partition , auf der Sie Mint installiert haben. 3

Erstellen und konfigurieren /etc/crypttab , um beim Booten zu entsperren. 4 Hier fügen Sie den Pfad zu Ihrem lvm hinzu, in dem Mint installiert ist. Dieser sollte sich basierend auf Ihrer Frage in /dev/mapper/lv_os2oder /dev/<big encrypted LUKS>/lv_os25 befinden

Die meisten Beispiele, die ich gesehen habe, sehen /etc/crypttabwie folgt aus :
root /dev/mapper/lv_os2 none luks. Die vier Felder sind: Ihrer Wahl, Pfad zu dem lvm, auf dem Sie Mint installiert haben, noneFestlegen des Kennworts, das beim Systemstart manuell eingegeben werden soll, und luksErzwingen des LUKS-Modus, dies scheint jedoch nicht erforderlich zu sein.

Wenn im Optionsfeld kein Modus angegeben ist und das Blockgerät eine LUKS-Signatur enthält, wird es als LUKS-Gerät geöffnet. Andernfalls wird angenommen, dass es sich um das Raw-Format dm-crypt (einfacher Modus) handelt.

Konfigurieren Sie /etc/fstab das Mounten, das /dev/mapper/<name>Sie gerade erstellt haben, /etc/crypttabals Stammverzeichnis /. So etwas wie:
/dev/mapper/<name> / <fs_vfstype> <fs_mntops>
Sehen Sie man fstab.

Sobald Sie /etc/crypttab und /etc/fstabnach Ihren Wünschen konfiguriert haben , können Sie verwenden , update-initramfsum build / das Boot - Image aktualisieren.

Siehe man update-initramfs. Es ist möglicherweise am besten, die spezifische Kernel-Version zu verwenden, die uname -rin Mint angezeigt wird . Der Befehl sollte ungefähr so ​​aussehen, update-initramfs -u -k 3.11.0-26-genericaußer dass die Kernel-Version durch Ihre eigene ersetzt wird.

Zu diesem Zeitpunkt können Sie Fedora möglicherweise erneut starten und die grub2-mkconfig -o /boot/grub/grub.cfgOption ausprobieren, mit der Mint zuvor erkannt wurde. Wenn dies nicht funktioniert, befolgen Sie die Konfiguration des Multi-Boot-Handbuchs im GRUB-Handbuch. 6

Insbesondere dieser Teil:

Installieren Sie unter allen Betriebssystemen GRUB-Tools, deaktivieren Sie jedoch die Installation von GRUB im Bootsektor, sodass Sie menu.lst und grub.cfg zur Verfügung haben. Deaktivieren Sie auch die Verwendung von Os-Prober, indem Sie Folgendes einstellen:

GRUB_DISABLE_OS_PROBER=true

im /etc/default/grub

Hoffentlich deckt dies den Großteil dessen ab, was Sie benötigen, um Mint zum Booten zu bringen.


Vielen Dank für Ihre ausführliche Antwort, @iyrin, ich werde es versuchen, bevor das Kopfgeld endet. :-)
Peque

Viel Glück! Bitte nach Bedarf bearbeiten.
Iyrin

Hat es nicht geschafft, dass es funktioniert. Trotzdem danke für deine Hilfe. :-) Ich denke, ich werde einen anderen Ansatz ausprobieren: Alle /bootPartitionen verschlüsseln lassen und GRUB in der unverschlüsselten Partition installieren (theoretisch kann es heutzutage von verschlüsselten Partitionen lesen). Dann lade ich den Bootloader /bootabhängig vom ausgewählten Betriebssystem auf die entsprechende verschlüsselte Partition. Oder vielleicht ist ein Kettenladen nicht notwendig, ich muss es versuchen, aber leider gibt es nicht viel Dokumentation über die Verwendung von GRUB mit verschlüsselten /bootPartitionen ... :-P
Peque

1

Es beantwortet Ihre Frage nicht wirklich "wie", sollte Ihnen aber ein wenig Einblick geben - und es ist zu lang für einen Kommentar.

Erstens können Sie keine verschlüsselte Partition starten. Einfach, weil die Boot-Kette die Verschlüsselung erst ziemlich spät im Prozess versteht:

  1. Hardware lädt Firmware - normalerweise BIOS von UEFI (auf x86-Plattform). Die Hardware als solche ist vollständig datenunabhängig - sie lädt nur alles, was sie in einem dauerhaften Speicher findet (auf einer vordefinierten Adresse).

  2. Die Firmware lädt den Bootloader oder direkt den Kernel. Wie bei der CPU hat sie keine Ahnung von möglichen Verschlüsselungsmodi (nicht, dass dies nicht möglich wäre, aber normalerweise nicht).

  3. Wenn ein Bootloader beteiligt ist, lädt er den Kernel (oder einen verketteten Bootloader, wie zum Beispiel beim Booten von Windows) und meistens auch eine anfängliche Ramdisk (die entweder in einer eigenständigen Datei oder in das Kernel-Image eingebettet sein kann). Hier wird es interessanter, da beispielsweise GRUB2 von einem LUKS-Gerät booten kann, die Dokumentation jedoch eher knapp zu sein scheint .

  4. Die Kernel - Mounts das Root - Dateisystem und läuft init(System V init, systemd, OpenRC, upstart... Entscheidungen sind reichlich vorhanden).

  5. Beim Booten mit der ersten Ramdisk wird diese zuerst in den Speicher erweitert, dann gemountet und das Init-System von dort aus ausgeführt. Das initramfs-Shuold enthält alles, was zum Mounten des richtigen Root-Dateisystems erforderlich ist. In der Regel enthält es alle verfügbaren Treiber (z. B. RAID-Treiber, die erforderlich sind, wenn sich das endgültige Rootfs auf einem RAID-Gerät befindet) sowie eine grafische Boot-Infrastruktur. Dies bedeutet häufig ein Minimum (oder nicht ganz so minimal) X11-Stack - und oft auch Tools zum Mounten verschlüsselter Partitionen. Nachdem alles eingerichtet ist und montierten die letzten rootfs des Init - System läuft von Initramfs tut pivot_root()(die sehen pivot_root(8)und pivot_root(2)man - Seiten für weitere Details), so dass das Umschalten /auf das richtige Dateisystem.

Der einfachste Weg, ein verschlüsseltes Volume zu booten, ist normalerweise das Kryptografie-Setup in Schritt 5 - hauptsächlich, weil es vom Kernel ausgeführt wird, der ausgeführt werden soll, und die Infrastruktur nutzen kann, die von jeder anständigen aktuellen Distribution angeboten wird.

Daher möchten Sie wahrscheinlich untersuchen, wie genau Fedora und Mint von einem verschlüsselten Volume booten. Die Lösung für Ihr Problem könnte beispielsweise darin bestehen, ein geeignetes initramfs-Image für den Mint-Kernel zu erstellen. Möglicherweise können Sie sogar ein Initramfs für beide Kernel verwenden, vorausgesetzt, Sie stellen sicher, dass die richtigen Rootfs abhängig vom gestarteten Kernel bedingt bereitgestellt werden, obwohl ich dies nicht empfehlen würde, insbesondere wenn Sie sich für die Verwendung eines anderen (z. B. stock) entschieden haben ) Kernel für jede Distribution.

Das heißt, Sie möchten möglicherweise auch überlegen, ob Sie wirklich zwei Installationen nebeneinander haben möchten - es ist möglicherweise bequemer, eine virtualisierte auszuführen.


1
Die initramfs sollten anhand von Kerneloptionen wie auswählen, welches Root-Dateisystem gemountet werden soll root=. Somit ist es durchaus möglich, dass ein Initramfs für zwei verschiedene Betriebssysteme (mit verschiedenen Kerneln und Root-Partitionen) funktioniert. Sie müssten einfach darauf achten, dass die Komponenten in den initramfs mit beiden kompatibel sind, oder dass Komponenten für beide enthalten und korrekt ausgewählt wurden. Es ist wahrscheinlich einfacher, zwei Initramfs zu erstellen und die Grub-Einträge anzuweisen, das richtige zu laden.
Tom Hunt
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.