====== 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.