Dieser Post soll dir einen kurzen Überblick über die benötigten Schritte zu Disk Encryption mit Arch Linux geben. In diesem Setup wird /boot (sda1) nicht verschlüsselt, / und SWAP landen beide jeweils auf einem LVM Logical Volume (für welches wir sda2 nutzen werden), welche das Physical Volume “/dev/mapper/lvm” beanspruchen. Im Physical Volume “/dev/mapper/lvm” wird dann eine Volume Group namens “main” erstellt, welche dann die Behausung für die beiden Logical Volumes “root” und “swap” bereitstellen wird. Das ist eigentlich schon alles, und deswegen kannst du jetzt aufhören zu lesen und dich wieder den wichtigen Dingen im Leben widmen.
Nein, ernsthaft. Let’s get shit done.
Ich übernehme exakt gar keine Garantie, dass das hier bei dir funktioniert. Wenn du dir dein System schrottest, oder in einen inkonsistenten Zustand versetzt, in dem es nicht mal mehr bootet, oder deine Kiste in Rauch aufgeht: ich hab dich gewarnt.
Erster Schritt ist das Herunterladen eines Arch Linux ISOs – Netinstall core/dual bietet sich an. Die Arch-ISOs sind mittlerweile hybrid, d.h. du kannst sie direkt bspw. mit
dd if=archlinux-2011.08.19-core-dual.iso of=/dev/sdb
auf einen als “sdb” erkannten USB-Stick schreiben (Achtung, richtiges Device angeben, ansonsten droht Datenverlust), oder eben auf CD brennen, und davon booten.
Nach dem Booten präsentiert dir der Installer des Arch Live Systems wie gewohnt schlicht eine Shell.
Sollte man ein Keyboard-Layout wählen wollen (in meinem Falle “de”), so geht das direkt und unkompliziert mittels:
loadkeys de
Als erstes partitionierst du deine Platte (hier “sda”) – ich habe schlicht 2 Partitionen vom Typ “Linux” erstellt, eine 128MB Partition für /boot, und eine, die nachher für LVM herhalten soll (Rest):
cfdisk /dev/sda
Das Laden der benötigten Kernel-Module für das Crypt-Setup geschieht nun mittels:
modprobe dm-crypt
modprobe aes
Überschreiben der Disk mit random data, in diesem Beispiel ein Durchlauf (-n 1):
shred -v -n 1 /dev/sda2
Und los geht’s. Wir verwenden hier AES256 (XTS benötigt 2 Keys, daher nutzen wir hier -s 512). Das mit cryptsetup erstellte Volume öffnen wir dann, damit wir es benutzen können, und erstellen dann darauf ein LVM Physical Volume, in welches die Volume Group “main” kommt, die dann / und SWAP als Logical Volumes bekommt. Für SWAP erstellen wir hier ein Logical Volume mit 1GB, / bekommt den Rest:
cryptsetup -c aes-xts-plain -y -s 512 luksFormat /dev/sda2
cryptsetup luksOpen /dev/sda2 lvm
pvcreate /dev/mapper/lvm
vgcreate main /dev/mapper/lvm
lvcreate -L 1GB -n swap main
lvcreate -l 100%FREE -n root main
Danach kann man wie gewohnt mit
/arch/setup
die Installation starten.
Beim Hard Disk Setup im Arch-Installer wählt man nun fröhlich die folgenden Settings für Partitionen:
boot: sda1
/: LVM root
swap: LVM swap
Vor dem Beenden des Arch Linux Setup-Assistenten wird man noch gefragt, ob man Änderungen an Config-Files vornehmen will. Hier sind für unser Setup einige benötigt.
In rc.conf müssen wir USELVM setzen:
USELVM="yes"
In mkinitcpio.conf müssen die HOOKS angepasst werden. “encrypt” muss hier VOR “lvm2″ definiert sein. Für deutsches Tastaturlayout beim Eingeben der Passphrase muss noch “keymap” vor “encrypt” eingefügt werden. Für USB-Keyboards muss zudem noch “usb” und “usbinput” vor “encrypt” eingefügt werden.
Beispiel:
HOOKS="base udev autodetect pata scsi sata usb usbinput keymap encrypt lvm2 filesystems"
Für GRUB benötigte Settings:
/boot/grub/menu.lst:
Bei den beiden Booteinträgen “Arch Linux” und “Arch Linux Fallback” muss “cryptdevice=/dev/sda2:main” zwischen “/vmlinuz26″ und “root=/dev/mapper/main-root” eingetragen werden, sodass die Kernelzeile am Ende wie folgt aussieht:
kernel /vmlinuz26 cryptdevice=/dev/sda2:main root=/dev/mapper/main-root ro
Sollte “keymap” in die mkinitcpio.conf eingetragen worden sein, so müssen noch “lang=de” und “locale=de_DE.UTF-8″ in die Kernelzeile eingetragen werden.
Grub selbst sollte natürlich wie gewohnt auf “/dev/sda” (MBR) installiert werden.
Have Fun!