Kurz zur Erklärung weshalb ich mich trotz aller Hürden gerade für diese
Kombination entschieden habe:
Warum ein verschlüsseltes root-Filesystem ?
Falls mein Laptop gestohlen wird (beim letzten Einbruch hatte ich ja Glück), sind meine Daten sicher
Wenn die Festplatte mal ausser Betrieb geht, muss ich nur die ersten paar MiByte löschen
Warum gerade btrfs ?
Ich kann anstatt mehrerer Partitionen einfach mehrere Subvolumes verwenden (denn Partitionen haben ohnehin stets die falsche Grösse ;-)
Für Versuche kann per Snapshot das System einfach gesichert und hinterher wieder hergestellt werden
Partitionierung
Es werden mindestens drei Partitionen benötigt:
Die EFI System Partition
Die (unverschlüsselte) boot-Partition
Die (verschlüsselte) root-Partition
Die boot-Partition kann nicht verschlüsselt werden, weil gängige Bootloader
noch keine Verschlüsselung beherrschen und der Bootloader somit den Kernel
und das initramfs von einer unverschlüsselten Partition laden müssen.
Zur Grösse der Bootpartition siehe auch
Partitionierung für Artix Linux.
Installation
Die folgenden Schritte führen zu einem verschlüsseltem root-filesystem mit
btrfs. Das Ganze scheint immer noch experimentell zu sein, beim booten gibt's
ein paar Fehlermeldungen im Zusammenhang mit dem initramfs (ohne Gewähr)
Der Name des Haupt-Subvolumes ist so gewählt, damit das "schnapps"
Script (zum Erstellen von Schnappschüssen des btrfs) vom Turris Omnia ohne
grosse Änderungen läuft ;-)
mkfs.vfat -F32 /dev/$YOUR_EFI_PART
fatlabel /dev/$YOUR_EFI_PART ESP
mkfs.btrfs -L boot /dev/$YOUR_BOOT_PART
cryptsetup luksFormat -y -s 512 /dev/$YOUR_ROOT_PART
cryptsetup luksOpen /dev/$YOUR_ROOT_PART root
# Make root filesystem:
mkfs.btrfs -L btrfs-root /dev/mapper/root
mount -o defaults,noatime /dev/mapper/root /mnt && cd /mnt
btrfs subvolume create @ && cd @
btrfs subvolume create home
btrfs subvolume create var
btrfs subvolume create swap
mkdir boot efi
chmod 755 ../@ boot efi home var
cd /
umount /mnt
mount -o defaults,noatime,subvol=@ /dev/mapper/root /mnt && cd /mnt
mount /dev/$YOUR_BOOT_PART /mnt/boot
mount /dev/$YOUR_EFI_PART /mnt/efi
Um die Installation zu beschleunigen, kann man ggf. zu diesem Zeitpunkt einen
lokalen Mirror konfigurieren befor man fortfährt:
/etc/pacman.d/mirrorlist
Server = http://archmirror.localnet/$arch/$repo
Jetzt wird das Base System installiert, und dann konfiguriert:
# Installiere base system
basestrap /mnt base base-devel cryptsetup dinit elogind-dinit linux linux-firmware
fstabgen -U /mnt >> /mnt/etc/fstab
artix-chroot /mnt
# HIER ARTIX ANLEITUNG FOLGEN
pacman -S grub efibootmgr
echo "$YOUR_HOSTNAME" > /etc/hostname
# TODO: also add info to /etc/hosts
ln -sf /usr/share/zoneinfo/$YOUR_ZONEINFO /etc/localtime
hwclock --systohc
echo 'LANG="en_US.UTF-8"' > /etc/locale.conf
echo 'KEYMAP="de_CH-latin1"' > /etc/vconsole.conf
TODO: pacman -S btrfs-progs
Nun muss in der Konfigurationsdatei für mkinitcpio noch der encrypt-hook
(VOR dem filesystems hook) gesetzt werden (Achtung für remote-unlock siehe dort).
Falls es sich um ein headless/embedded System handelt, bitte einen Blick
in die Anleitung remote unlock werfen.
Ab hier verläuft die Installation "normal" weiter, es wäre nun
die Installation des Bootloaders an der Reihe.
Als Bootloader kann GRUB oder
SYSLINUX verwendet werden.
pacman -S grub
pacman -S btrfs-progs kexec-tools
curl -O https://aur.archlinux.org/packages/mk/mkinitcpio-btrfs/mkinitcpio-btrfs.tar.gz
tar xvf mkinitcpio-btrfs.tar.gz
cd mkinitcpio-btrfs
makepkg -s
pacman -U mkinitcpio.......pkg.tar.xz
Dann die /etc/mkinitcpio.conf editieren (HOOKS encrypt btrfs_advanced shutdown) hinzufügen.
Zudem muss BTRFS_ROLLBACK_KERNEL=false in der Datei /etc/default/btrfs_advanced gesetzt werden.
Abschliessend die initrd mit neu erzeugen: