Inhaltsverzeichnis

Verschlüsselte Grundinstallation

Im Folgenden wird eine Grundinstallation von void linux durchgeführt. Ziel ist eine Desktopinstallation auf einer vollverschlüsselten Festplatte. Als Desktopumgebung kommt Cinnamon zum Einsatz. Die Installation erfolgt exemplarisch auf einem Thinkpad x220. Daher kann es sein, dass einige Installationsschritte für dieses Notebook notwendig sind.

Booten

Zu Beginn wird ein aktuelles Bootmedium von void linux gestartet. Da die Installation manuell durchgeführt wird kann ein minimal Installationsmedium verwendet werden.

Partitionieren

Zunächst wird die Festplatte partitioniert. Im Weiteren wird davon ausgegangen, dass auf die erste Festplatte /dev/sda installiert wird.

sudo cfdisk /dev/sda

Hier wird zunächst ein dos Label erstellt. Hintergund hierbei ist, dass es auf dem x220 beim Booten von gpt-Partitionen Probleme geben kann (das ist ein Fehler in alten Lenovo-Firmware).

Es wird eine primäre Partition angelegt, welche die komplette Festplatte umfasst. Die Partition wird als bootfähig markiert und das Partitionslayout auf die Festplatte geschrieben. Danach kann das Programm verlassen werden.

Erstellen der Verschlüsselung

Nun wird ein luks-Container in der gerade erstellten Partition angelegt und geöffnet.

cryptsetup luksFormat /dev/sda1
cryptsetup luksOpen /dev/sda1 crypt-pool

Anlegen des LVM und der Volumes

Danach wird ein LVM in dem luks-Container angelegt. Es wird eine 20GB Swap-Partition angelegt und der Rest wird für / verwendet. An dieser Stelle kann nach eigenen Wünschen Partitioniert werden.

vgcreate pool /dev/mapper/crypt-pool
lvcreate --name swap -L 20G pool
lvcreate --name root -l100%FREE pool

Vorbereiten der Partition

Im Anschluss müssen die angelegten Partitionen vorbereitet werden.

mkfs.ext4 -L root /dev/mapper/pool-root
mkswap -L swap /dev/mapper/pool-swap

Vorbereiten der chroot-Umgebung

mount /dev/mapper/pool-root /mnt
mkdir /mnt/{dev,proc,sys}
mount --rbind /dev /mnt/dev
mount --rbind /proc /mnt/proc
mount --rbind /sys /mnt/sys

Basissystem installieren

xbps-install -S -R http://repo.voidlinux.eu/current -r /mnt base-system lvm2 cryptsetup grub

Ins chroot wechseln und Nachkonfigurieren

chroot /mnt /bin/bash
passwd root
chown root:root /
chmod 755 /
vi /etc/rc.conf

In der /etc/rc.conf werden die Zeilen folgenden Zeilen angepasst:

echo x220-void >/etc/hostname
echo "LANG=de_DE.UTF-8" > /etc/locale.conf
echo "de_DE.UTF-8 UTF-8" >> /etc/default/libc-locales
xbps-reconfigure -f glibc-locales
vi /etc/fstab

Zur /etc/fstab wird folgende Zeile hinzugefügt um den swap automatisch zu aktivieren:

/dev/mapper/pool-swap   none    swap    sw  0   0

Anschließend wird die Konfiguration des Grub angepasst um von der verschlüsselten Partition starten zu können:

vi /etc/default/grub

Die Zeile GRUB_CMDLINE_LINUX_DEFAULT wird um den Wert rd.auto=1 ergänzt. Zusätzlich wird die Zeile GRUB_ENABLE_CRYPTODISK=y hinzugefügt. Die Konfiguration sollte dann in etwa so aussehen:

#
# Configuration file for GRUB.
#
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Void"
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=4 slub_debug=P page_poison=1 rd.auto=1"
# Uncomment to use basic console
#GRUB_TERMINAL_INPUT="console"
# Uncomment to disable graphical terminal
#GRUB_TERMINAL_OUTPUT=console
GRUB_BACKGROUND=/usr/share/void-artwork/splash.png
GRUB_BACKGROUND=/usr/share/void-artwork/fire-1073217_1920.jpg
#GRUB_GFXMODE=1920x1080x32
#GRUB_DISABLE_LINUX_UUID=true
#GRUB_DISABLE_RECOVERY=true
GRUB_ENABLE_CRYPTODISK=y

Nachdem die Konfiguration erstellt wurde wird Grub installiert und die initrd neu geschrieben:

grub-install /dev/sda
xbps-reconfigure -f linux4.14

Die grundlegende Installation ist an dieser Stelle beendet und kann getestet werden. Hierzu die chroot-Umgebung verlassen und das System neu Starten.

Nun ist ein vollverschlüsseltes System installiert. Jedoch muss beim Booten zweimal das Kennwort zur Entschlüsselung der Festplatte eingegeben werden (einmal für die initrd und einmal zum endgültigen Starten des Systems). Dies wird im folgenden Abschnitt korrigiert.

Einrichten eines Keyfiles um mehrmalige Passworteingabe zu vermeiden

Das System sollte sich nun starten lassen, mit dem Nachteil, dass man zweimal das Passwort zur Entschlüsselung der Festplatte eingeben muss.

Anlegen des Keyfiles

Es wird ein zufälliges Keyfile erzeugt und dem luks-Container übergeben. Anschließend wird das Keyfile geschützt indem alle Benutzerrechte darauf entzogen werden.

dd bs=512 count=4 if=/dev/urandom of=/crypto_keyfile.bin
cryptsetup luksAddKey /dev/sda1 /crypto_keyfile.bin
chmod 000 /crypto_keyfile.bin
chmod -R g-rwx,o-rwx /boot

Nun wird der Key in der /etc/cryptab bekannt gemacht. Hierzu die Datei um folgende Zeile ergänzen:

crypt-pool      /dev/sda1        /crypto_keyfile.bin     luks

Nun muss das Keyfile und die /etc/crypttab noch ins initrd gepackt werden. Hierzu wird die Datei /etc/dracut.conf.d/10-crypt.conf editiert um folgende Zeile ergänzt:

install_items+="/crypto_keyfile.bin /etc/crypttab"

Anschließend wird das initrd neu geschrieben

xbps-reconfigure -f linux4.14

Nun sollte das System beim Booten nur noch einmal das Passwort zur Festplattenentschlüsselung anfragen.