====== Verschlüsselte Grundinstallation ======
Im Folgenden wird eine Grundinstallation von
[[https://www.voidlinux.eu|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:
* HARDWARECLOCK
* TIMEZONE
* KEYMAP
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.