Arch Installation - Strukturierung der Datenträger mit LUKS und btrfs

Natriumchlorid

Lt. Junior Grade
Registriert
Sep. 2013
Beiträge
378
Derzeit plane ich mein Arch neu aufzusetzen. Grund dafür ist unter anderem, dass ich mein ganzes System verschlüsseln möchte und als Dateisystem btrfs verwenden möchte. Dazu habe ich noch ein paar Verständnisfragen, bevor ich mich an die Installation begebe.

Meine verfügbaren Datenträger (SSDs):

AnzahlTypKapazität
1xNVMe1 TB
1xSATA2 TB
1xSATA1 TB
2xSATA500 GB

Die NVMe will ich als Bootdevice und als Systempartition mit einem separaten Home-Subvolume verwenden.

Sprich die Partitionierung wäre:
  • 1 GB FAT32 als esp
  • Rest der NVMe: LUKS-Container
    • Innerhalb von diesem LUKS-Container lege ich eine einzige btrfs-Partition an und erstelle dort meine benötigen Subvolumes.
  • Ich plane nicht eine Swap-Partition oder Swapfile zu verwenden.

Für die anderen Disks habe ich geplant ein JBOD anzulegen. Jetzt stellt sich mir hier die Frage, wie ich am besten vorangehen soll, denn:
Während ich plane meine NVMe zuerst zu verschlüsseln um dann innerhalb von diesem Container eine btrfs-Partition zu erstellen, wäre die Herangehensweise bei meinem JBOD genau anders rum.

Grund: Ich muss zuerst ein JBOD bilden, bevor ich die logische Partition verschlüsseln kann. Sprich ich erstelle eine btrfs-Partition über alle SATA-Disks:
mkfs.btrfs -d single -m raid1 /dev/sda /dev/sdb ...

Und verschlüssel diese dann erst mit LUKS. Aber das ergibt für mich keinen Sinn.

Die Alternative wäre allenfalls zuerst eine logische Partition über alle Disks hinweg mit LVM zu erstellen, dann diese Partition zu verschlüsseln um nochmal eine Ebene höher btrfs zu verwenden. Aber das ist meiner Meinung nach ebenfalls keine schöne Lösung, da ich dann LVM als Unterbau habe und das nicht in Kombination mit btrfs empfohlen wird.

Was wäre denn die beste Herangehensweise für mein Vorgehen? btrfs möchte ich primär wegen der Snapshot-Funktionalität und der Möglichkeit zur Erstellung von dynamischen Subvolumes nutzen.

Auf dem JBOD sollen auch keine wichtigen Daten gelagert werden. Sprich, da sind nur meine Steamgames drauf, weil ich keine Lust mehr habe, immer zwischen den ganzen Datenträgern die Last auszugleichen.
 
Du verschlüsselst zuerst einzeln alle SATA SSDs mit dem selben Schlüssel, den du auf der Systempartition lagerst (die natürlich verschlüsselt ist). Dann in /etc/crypttab einbinden. Dann machst du ein btrfs-Volume über die entschlüsselten SATA SSDs.

Du braucht noch eine Boot-Partition wenn du das Systemlaufwerk verschlüsseln willst. Mach sie nicht zu klein, damit du dort auch Snapshots etc. machen kannst (5GB oder so).
 
  • Gefällt mir
Reaktionen: Natriumchlorid
Wochenende schrieb:
Du braucht noch eine Boot-Partition wenn du das Systemlaufwerk verschlüsseln willst. Mach sie nicht zu klein, damit du dort auch Snapshots etc. machen kannst (5GB oder so).
Wozu eine extra Boot-Partition, wenn er doch schon eine EFI System Partition (esp) hat? In der Partition liegt doch bereits alles, was das System zum Booten braucht. Habe bei meiner Arch Installation auch keine gesonderte Boot-Partition, sondern in der EFI-Partition einfach ein "Unified Kernel Image", das ich direkt über das UEFI-Bootmenü aufrufen kann. In dem UKI ist auch schon alles drin, was zum Entschlüsseln der übrigen Laufwerke/Partitionen nötig ist.
 
  • Gefällt mir
Reaktionen: Natriumchlorid und Kuristina
Wie modern. Ich wusste nicht dass es eine Distro gibt die dass schon unterstützt. Man muss halt selbst signieren für Secure Boot, aber das muss man ja bei Arch sowieso.
 
Im ArchLinuxWiki (engl.) gibt es eine sehr gute Anleitung, wie man mittels dm-crypt/LUKS und LVM, mit dem man das JBOD realisieren kann: LUKS on LVM
Die EFI-Partition (esp) bleibt unverschlüsselt es sei denn Du willst GRUB als Bootloader nutzen. GRUB kann nur LUKS in Version 1-verschlüsselte Geräte entschlüsseln, ist aber grottenlangsam dabei. Ich empfehle ja lieber systemd-boot, LUKS V.2 und unverschlüsselte EFI-Partition. (esp = EFI-Partition = boot-Partition!)
Die drei SATA-Platten partitionieren (je eine Partition über die ganze Größe der jeweiligen Platte vom Typ 8e00 Linux LVM), diese zu Physical-Volumes machen, einer Volume-Group hinzufügen und dann zu einem Logical-Volume zusammenfassen. Dieses LV dann mit cryptsetup luksFormat /dev/volumegroup/logicalvolume/ /path/to/keyfile verschlüsseln, öffen und mit btrfs oder was auch immer formatieren. Wenn man als Passwort ein keyfile erstellt und entsprechend mit [cryptdevice_name] in der crypttab einträgt, wird das Logical-Volume (JBOD) automatisch beim booten entschlüsselt, das entschlüsselte Device via /dev/mapper/[cryptdevice_name] in der fstab eingehängt.
Have Fun!
 
  • Gefällt mir
Reaktionen: Natriumchlorid
Vielen Dank euch für die Denkanstösse. :)

Für heute habe ich den geplanten Erfolg erzielt. Ich konnte das Testszenario in einer VM nachstellen. Meine Systempartition ist vollständig mit LUKS2 verschlüsselt und als Key verwende ich einen YubiKey. Mein System wird automatisch nur bei der Präsenz des YubiKeys entschlüsselt. Sollte dieser nicht vorhanden sein, gibts einen Fallback auf ein Passwort (falls das Ding mal abhanden kommt). YKFDE hat sich dabei als sehr nützlich erwiesen.

Als Bootmanager habe ich GRUB verwendet, welchen ich in der ESP installiert habe.

Den Zusammenschluss der Disks werde ich dann auf dem realen System evaluieren, da ich mich nun mit LUKS anvertraut habe. Die möchte ich aber mit einem Keyfile verschlüsseln, welches auf meiner verschlüsselten Root-Partition liegt. Da brauchts den YubiKey dafür nicht mehr. :D
 
Kleines Update von meiner Seite. Mir ist mein Vorhaben geglückt. Mein System ist, bis auf die ESP, komplett verschlüsselt. Letztlich hab ich den Ansatz verfolgt, erst alle SATA-SSDs einzeln zu verschlüsseln und die entsperrten LUKS-Container in ein JBOD mithilfe von btrfs zusammen zu fassen.

Meine Systempartition wird durch einen YubiKey automatisch entsperrt, während die restlichen SDDs durch ein Keyfile entsperrt werden, welches auf dem verschlüsselten root-Verzeichnis liegt. :D

Ich bedanke mich nochmal herzlichst für die Hinweise von eurer Seite. :)
 
Zurück
Oben