Hallo Zusammen,
heute widme ich mir mal wieder einer Linux-Geschichte. Im Grunde geht es um mein Standardsetup für meine Linux-Kisten (wenn es um Desktop-Versionen geht). Ich verwende hier sehr gerne Arch Linux insbesondere aus drei Gründen:
Beim heutigen Thema geht es lediglich um die Konfiguration der Partionen und die Installation von Grub und dem UEFI Bootloader. Alles weitere kann den Anleitungen im Arch Wiki entnommen werden. Diese sind extrem ausführlich und sehr gut!
Was möchte ich haben? Und warum?
Meine Ideale Konfiguration sieht wie folgt aus:
+-------+--------------------------+
| | |
| SWAP | Systemplatte |
| | |
+----------------------------+--------------------------+
| | |
| UEFI/Grub Boot | Verschlüsselter Container (LUKS) |
| | |
+--------------------+----------------------------------+
Am Anfang der Festplatte befindet sich eine 512 MB große Partition für das UEFI Boot-System und den Grub Bootloader. Der Rest wird verwendet für eine LUKS verschlüsselte Partition. Innerhalb dieser ist das eigentliche Betriebsystem mit SWAP und System. Dadurch sind meine Daten und das gesamte Betriebsystem verschlüsselt. Direkt nach dem Bootloader muss ein Passwort eingegeben werden, welches den LUKS Container entsperrt und anschließend wird normal das System gebootet.
Wie bekomme ich das hin?
Im Grunde ist alles im sehr ausführlichen Arch Wiki beschrieben. Leider sind die einzelnen Artikel aber teilweise leicht versteckt und es gibt Diskrepanzen zwischen den Übersetzungen. Einige Punkte sind nur im deutschen Wiki beschrieben, Anderes nur im englischen Wiki. Ich halte mich gerne an den Beginners guide: https://wiki.archlinux.org/index.php/Installation_guide
1. Festplatte partitionieren
Zunächst partitionieren wir die Festplate.
fdisk -l
Damit finden wir raus, unter welchem Device die Festplatte zu finden ist (in meinem Fall /dev/sda).
gdisk /dev/sda
Ich Arbeite gerne mit gdisk. Die wichtigsten Befehle:
o # Neue Tabelle anlegen
n # Neue Partition erstellen
w # Schreibe Tabelle auf die Festplatte
Weitere Infos zu den Befehlen und wie man die Partitionen anlegt: https://wiki.archlinux.de/title/GPT
Das erstellte Partitionsschema sollte dann wie folgt aussehen:
/dev/sda1 512M ef00 EFI System
/dev/sda2 REST 8E00 Linux Filesystem
2. Crypt-Container auf sda2 erstellen
Nun erstellen wir den verschlüsselten Container auf sda2 mit LUKS.
Mehr Infos: https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system#LVM_on_LUKS
Mehr Infos zu cryptsetup: https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption#Encryption_options_for_LUKS_mode
# Verschlüssele /dev/sda2
cryptsetup luksFormat -c aes-xts-plain64 -s 512 /dev/sda2
# Öffnet verschlüsselten Cotainer wieder und mapped auf "lvm"
cryptsetup open --type luks /dev/sda2 lvm
3. LVM innerhalb des LUKS-Containers erstellen
Wir haben zwar jetzt einen (offenen) verschlüsselten Container, haben darin aber noch kein LVM. Dieses folgt nun mit folgenden Befehlen:
vgcreate main /dev/mapper/lvm # Erstelle Volume Group auf /dev/mapper/lvm mit Namen "main"
lvcreate -L 32G main -n swap # Erstelle 32GB SWAP
lvcreate -l 100%FREE main -n root # Erstelle root mit Rest
Achtet bitte beim letzten Befehl darauf: Ein kleines „-l“ kein „-L“. Zum Swap: Ich halte mich nach wie vor daran: 2x RAM-Größe = SWAP-Größe
4. Filesystem erstellen
Jetzt fehlt nur noch das Filesystem auf den innerhalb des Containers erstellten Partitionen und der UEFI Partition am Anfang. Die UEFI Partiton MUSS Fat32 formatiert werden.
mkfs.ext4 /dev/mapper/main-root
mkswap /dev/mapper/main-swap
mkfs.fat -F 32 /dev/sda1
5. Mounten des Systems
Jetzt mounten wir nur noch die Festplatten an die richtige Stelle und wir können das Grundsystem installieren:
mount /dev/mapper/main-root /mnt
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swapon /dev/mapper/main-swap
Ab hier kann mit der Installation laut Anleitung fortgefahren werden, bis ihr zum Erstellen des Linux-Kernels kommt!
6. Hooks für Linux-Kernel anpassen
Folgende Datei muss angepasst werden: /etc/mkinitcpio.conf
HOOKS="base udev autodetect modconf block keyboard keymap encrypt lvm2 filesystems fsck shutdown"
Danach folgenden Befehl ausführen:
mkinitcpio -p linux
7. GRUB installieren
Jetzt wollen wir noch unseren Bootloader auf die UEFI-Platte schmeißen. Weitere Infos dazu: https://wiki.archlinux.de/title/UEFI_Installation#GRUB
Zunächst erst mal die efi-Variablen laden und die wichtigsten Pakete installieren.
mount -t efivarfs efivarfs /sys/firmware/efi/efivars
pacman -S grub efibootmgr dosfstools
Wenn ihr einen intel-CPU habt, noch folgendes Paket installieren:
pacman -S intel-ucode
Nun muss die Datei /etc/default/grub wegen unserer Verschlüsselung angepasst werden.
GRUB_CMDLINE_LINUX="cryptdevice=/dev/sda2:main root=/dev/mapper/main-root lang=de locale=de_DE.UTF-8"
Anschließend installieren wir grub und erstellen uns eine Config. Achtet darauf, dass hier keine Fehler ausgegeben werden.
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=arch_grub --recheck --debug
grub-mkconfig -o /boot/grub/grub.cfg
Update: Luks Passwort hinzufügen / löschen / ändern
Beinahe vergessen, aber ab und an will man dann doch einen Key hinzufügen bzw. ändern/löschen:
Um die vorhandenen Schlüssel anzuzeigen:
sudo cryptsetup -y luksDump /dev/sda2
Um einen neuen Key hinzuzufügen:
sudo cryptsetup -y luksAddKey /dev/sda2
Um einen Key zu löschen:
sudo cryptsetup -y luksRemoveKey /dev/sda2
Beim letzten Befehl wird man dann gefragt, welches Passwort entfernt werden soll. Vorher UNBEDINGT einen neuen Key hinzufügen!