Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
— |
void:installation [2018/03/18 21:38] (aktuell) rakor angelegt |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== 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. | ||
+ | |||
+ | <code> | ||
+ | sudo cfdisk /dev/sda | ||
+ | </code> | ||
+ | |||
+ | 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. | ||
+ | <code> | ||
+ | cryptsetup luksFormat /dev/sda1 | ||
+ | cryptsetup luksOpen /dev/sda1 crypt-pool | ||
+ | </code> | ||
+ | |||
+ | ===== 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. | ||
+ | <code> | ||
+ | vgcreate pool /dev/mapper/crypt-pool | ||
+ | lvcreate --name swap -L 20G pool | ||
+ | lvcreate --name root -l100%FREE pool | ||
+ | </code> | ||
+ | |||
+ | ===== Vorbereiten der Partition ===== | ||
+ | Im Anschluss müssen die angelegten Partitionen vorbereitet werden. | ||
+ | |||
+ | <code> | ||
+ | mkfs.ext4 -L root /dev/mapper/pool-root | ||
+ | mkswap -L swap /dev/mapper/pool-swap | ||
+ | </code> | ||
+ | |||
+ | ===== Vorbereiten der chroot-Umgebung ===== | ||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | ===== Basissystem installieren ===== | ||
+ | <code> | ||
+ | xbps-install -S -R http://repo.voidlinux.eu/current -r /mnt base-system lvm2 cryptsetup grub | ||
+ | </code> | ||
+ | |||
+ | ===== Ins chroot wechseln und Nachkonfigurieren===== | ||
+ | <code> | ||
+ | chroot /mnt /bin/bash | ||
+ | passwd root | ||
+ | chown root:root / | ||
+ | chmod 755 / | ||
+ | vi /etc/rc.conf | ||
+ | </code> | ||
+ | |||
+ | In der ///etc/rc.conf// werden die Zeilen folgenden Zeilen angepasst: | ||
+ | * HARDWARECLOCK | ||
+ | * TIMEZONE | ||
+ | * KEYMAP | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | Zur ///etc/fstab// wird folgende Zeile hinzugefügt um den //swap// automatisch | ||
+ | zu aktivieren: | ||
+ | |||
+ | <code> | ||
+ | /dev/mapper/pool-swap none swap sw 0 0 | ||
+ | </code> | ||
+ | |||
+ | Anschließend wird die Konfiguration des Grub angepasst um von der | ||
+ | verschlüsselten Partition starten zu können: | ||
+ | |||
+ | <code> | ||
+ | vi /etc/default/grub | ||
+ | </code> | ||
+ | |||
+ | 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: | ||
+ | |||
+ | <code> | ||
+ | # | ||
+ | # 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 | ||
+ | </code> | ||
+ | |||
+ | Nachdem die Konfiguration erstellt wurde wird Grub installiert und die | ||
+ | initrd neu geschrieben: | ||
+ | |||
+ | <code> | ||
+ | grub-install /dev/sda | ||
+ | xbps-reconfigure -f linux4.14 | ||
+ | </code> | ||
+ | |||
+ | 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. | ||
+ | |||
+ | <code> | ||
+ | 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 | ||
+ | </code> | ||
+ | |||
+ | Nun wird der Key in der ///etc/cryptab// bekannt gemacht. Hierzu die Datei | ||
+ | um folgende Zeile ergänzen: | ||
+ | <code> | ||
+ | crypt-pool /dev/sda1 /crypto_keyfile.bin luks | ||
+ | </code> | ||
+ | |||
+ | 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: | ||
+ | <code> | ||
+ | install_items+="/crypto_keyfile.bin /etc/crypttab" | ||
+ | </code> | ||
+ | |||
+ | Anschließend wird das initrd neu geschrieben | ||
+ | <code> | ||
+ | xbps-reconfigure -f linux4.14 | ||
+ | </code> | ||
+ | |||
+ | Nun sollte das System beim Booten nur noch einmal das Passwort zur | ||
+ | Festplattenentschlüsselung anfragen. |