Debian Installation mit Crypt und BTRFS
Anleitungen für die Installation von Debian mit BTRFS und verschlüsselter Festplatte gibt es genug im Internet. 🤔 Um mir bei den nächsten Installationen die Suche zu erleichtern, gibt es das ganze hier in kurz und knapp.
Für diese Mitschrift gilt:
- Debian 13
- UEFI
- Installation von USB-Stick (Image
debian-13.6.0-amd64-netinst.iso)
Installer - erste Schritte
- Starten mit
Expert install - Durcharbeiten bis
Installer-Komponenten vom Installationsmedium ladennetwork-consoleauswählen - Installation via SSH
(Von einem anderen PC lässt es sich einfacher mit Copy+Paste installieren.) 😊
- Installations-Assistent weiter durcharbeiten bis
Installation über Fernzugriff (SSH) fortsetzen- SSH-Passwort festlegen
- Installation von einem entfernten Host fortsetzen und wie im Installer beschrieben verbinden
- Via SSH ->
Installer starten (Expertenmodus)
- Via SSH ->
- Die nächsten Punkte des Installers abarbeiten bis
Festplatte partitionieren
Festplatte partitionieren
- Manuell
- Partitionen
| Name | Partition | Größe | Mountpoint |
|---|---|---|---|
| ESP | EFI |
1GB | /boot/efi |
| boot | ext4 |
1GB | /boot |
| crypt | physisches Volume für Verschlüsselung |
100%FREE |
- Menüpunkt:
Verschlüsselte Datenträger konfigurieren- Änderungen auf die Festplatte schreiben
Verschlüsselte Datenträger erzeugen
Auswahl:/dev/nvme0n1p3 (...MB; crypto)Fertigstellen- Passphrase festlegen
- Verschlüsseltes Volume (nvme0n1p3_crypt) konfigurieren
| Partition | Mountpoint |
|---|---|
| btrfs | / |
- Änderungen übernehmen und nicht zum Partitionierungsmenü zurückkehren
- ⚠️ Auf die Konsole wechseln (bei einer Verbindung via SSH wird
screenverwendet:Strg+A N)
BTRFS
~ # df -h
Filesystem Size Used Available Use% Mounted on
tmpfs 1.5G 548.0K 1.5G 0% /run
devtmpfs 7.6G 0 7.6G 0% /dev
/dev/sda1 755.0M 755.0M 0 100% /cdrom
none 384.0K 99.8K 279.2K 26% /sys/firmware/efi/efivars
/dev/mapper/nvme0n1p3_crypt
236.6G 5.8M 234.6G 0% /target
/dev/nvme0n1p2 920.7M 264.0K 856.7M 0% /target/boot
/dev/nvme0n1p1 951.1M 4.0K 951.1M 0% /target/boot/efi
Vorbereitung
umount /target/boot/efi
umount /target/boot/
umount /target/
Subvolumes erstellen
Der Debian-Installer legt je nach Debian-Version beziehungsweise Installer-Konfiguration möglicherweise ein anders benanntes Root-Subvolume an. Den tatsächlichen Namen vorher mit btrfs subvolume list /mnt prüfen. Im folgenden Beispiel heißt es @rootfs; den Namen bei Bedarf anpassen. Existiert bereits ein Subvolume @, entfällt das Umbenennen.
mount /dev/mapper/nvme0n1p3_crypt /mnt/
cd /mnt
mv @rootfs @
btrfs subvolume create @home
btrfs subvolume create @swap
btrfs subvolume create @snapshots
btrfs subvolume create @var_cache
btrfs subvolume create @var_log
btrfs subvolume list .
Subvolumes einbinden
mount /dev/mapper/nvme0n1p3_crypt /target/ -o subvol=@
mount /dev/nvme0n1p2 /target/boot
mount /dev/nvme0n1p1 /target/boot/efi
mkdir -p /target/home
mkdir -p /target/swap
mkdir -p /target/.snapshots
mkdir -p /target/var/log
mkdir -p /target/var/cache
mount /dev/mapper/nvme0n1p3_crypt /target/home -o discard=async,compress=zstd,noatime,subvol=@home
mount /dev/mapper/nvme0n1p3_crypt /target/swap -o discard=async,noatime,subvol=@swap
mount /dev/mapper/nvme0n1p3_crypt /target/.snapshots -o discard=async,compress=zstd,noatime,subvol=@snapshots
mount /dev/mapper/nvme0n1p3_crypt /target/var/log -o discard=async,compress=zstd,noatime,subvol=@var_log
mount /dev/mapper/nvme0n1p3_crypt /target/var/cache -o discard=async,compress=zstd,noatime,subvol=@var_cache
Prüfung:
/mnt # mount |grep crypt
/dev/mapper/nvme0n1p3_crypt on /mnt type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=5,subvol=/)
/dev/mapper/nvme0n1p3_crypt on /target type btrfs (rw,relatime,ssd,space_cache=v2,subvolid=256,subvol=/@)
/dev/mapper/nvme0n1p3_crypt on /target/home type btrfs (rw,noatime,ssd,space_cache=v2,subvolid=257,subvol=/@home)
/dev/mapper/nvme0n1p3_crypt on /target/swap type btrfs (rw,noatime,ssd,space_cache=v2,subvolid=258,subvol=/@swap)
/dev/mapper/nvme0n1p3_crypt on /target/.snapshots type btrfs (rw,noatime,ssd,space_cache=v2,subvolid=259,subvol=/@snapshots)
/dev/mapper/nvme0n1p3_crypt on /target/var/log type btrfs (rw,noatime,ssd,space_cache=v2,subvolid=261,subvol=/@var_log)
/dev/mapper/nvme0n1p3_crypt on /target/var/cache type btrfs (rw,noatime,ssd,space_cache=v2,subvolid=260,subvol=/@var_cache)
Swapfile
btrfs filesystem mkswapfile /target/swap/swapfile -s 16g
swapon /target/swap/swapfile
/etc/fstab
nano /target/etc/fstab
# root
/dev/mapper/nvme0n1p3_crypt / btrfs defaults,ssd,discard=async,compress=zstd,noatime,subvol=@ 0 0
# home
/dev/mapper/nvme0n1p3_crypt /home btrfs defaults,ssd,discard=async,compress=zstd,noatime,subvol=@home 0 0
# swap
/dev/mapper/nvme0n1p3_crypt /swap btrfs defaults,ssd,discard=async,noatime,subvol=@swap 0 0
/swap/swapfile none swap defaults 0 0
# snapshots
/dev/mapper/nvme0n1p3_crypt /.snapshots btrfs defaults,ssd,discard=async,compress=zstd,noatime,subvol=@snapshots 0 0
# var_log
/dev/mapper/nvme0n1p3_crypt /var/log btrfs defaults,ssd,discard=async,compress=zstd,noatime,subvol=/@var_log 0 0
# var_cache
/dev/mapper/nvme0n1p3_crypt /var/cache btrfs defaults,ssd,discard=async,compress=zstd,noatime,subvol=/@var_cache 0 0
# /boot was on /dev/nvme0n1p2 during installation
UUID=f6473aff-5f1f-4c10-8fea-cca0bec59665 /boot ext4 defaults 0 2
# /boot/efi was on /dev/nvme0n1p1 during installation
UUID=1C8C-FCFF /boot/efi vfat umask=0077 0 1
Installer - fortsetzen
- Basissystem installieren, …
Installieren des systemd-Bootloaders
Nacharbeit
In der Datei /target/etc/kernel/cmdline muss das subvol=@rootfs auf subvol=@ angepasst werden. Ist eine nicht so gesprächige Ausgabe gewünscht, kann die Boot-Option quiet ebenso hinzugefügt werden.
grep -R "@rootfs" /target/etc/ 2> /dev/null
nano /target/etc/kernel/cmdline
root=UUID=8e...a40f rootflags=subvol=@ quiet
Ebenso müssen die Bootloader-Einträge unter /target/boot/efi/loader/entries/ angepasst werden. Auch hier wird aus subvol=@rootfs -> subvol=@. Sonst startet Debian nach dem Neustart nicht, da das Subvolume nicht eingebunden werden kann.
grep subvol -R /target/boot/
/target/boot/efi/loader/entries/abc-6.12.111+deb13-amd64+2.conf:options root=UUID=8e...a40f rootflags=subvol=@rootfs systemd.machine_id=2e4cf3853ff946b
293b22e6e1f6b1971
/target/boot/efi/loader/entries/abc-6.12.94+deb13-amd64+2.conf:options root=UUID=8e...a40f rootflags=subvol=@rootfs systemd.machine_id=2e4cf3853ff946b2
93b22e6e1f6b1971
# Boot Loader Specification type#1 entry
# File created by /usr/lib/kernel/install.d/90-loaderentry.install (systemd 257.13-1~deb13u1)
title Debian GNU/Linux 13 (trixie)
version 6.12.94+deb13-amd64
machine-id abc
sort-key debian
options root=UUID=8e...a40f rootflags=subvol=@ systemd.machine_id=2e4cf3853 quiet
ff946b293b22e6e1f6b1971
linux /abc/6.12.94+deb13-amd64/linux
initrd /abc/6.12.94+deb13-amd64/initrd.img-6.12.94+deb13-amd64