NixOS Installation
Installationsmedium erstellen¶
Lade das neuste minimal ISO-Image von nixos.org runter. Erstelle z.B. mit dd
einen bootbaren USB-Stick wie hier beschrieben oder brenne es auf eine CD. Starte die Live-CD auf dem Computer, auf dem du NixOS installieren möchtest.
Tastaturlayout umstellen¶
Mit diesem Befehl wird das deutsche Tastaturlayout aktiviert:
loadkeys de
WLAN einrichten (optional)¶
Es wird eine Internetverbindung benötigt, um Pakete runterzuladen. Du kannst den Computer per LAN-Kabel anschließen oder wie folgt WLAN einrichten.
nano /etc/wpa_supplicant.conf network={ ssid="mynetwork" psk="mysecretpassphrase" } systemctl restart wpa_supplicant.service
Die restliche Konfiguration (IP-Adresse, DNS-Server und Gateway) wird automatisch über DHCP geholt.
Zugriff per SSH (optional)¶
Wenn du die Installation von einem anderen Computer durchführen möchtest, auf dem du z.B. diese Anleitung offen hast, kannst du dich per SSH verbinden.
Dafür muss erstmal der SSH-Server gestartet werden:
systemctl start sshd
Damit du dich einloggen kannst braucht der Benutzer root ein Passwort. Beachte, dass die Live-CD ein englisches Tastatur-Layout hat.
passwd
Jetzt noch die IP herausfinden und mit einem Terminal per SSH verbinden:
[root@nixos:~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp5s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether d0:50:99:c0:60:b5 brd ff:ff:ff:ff:ff:ff inet 10.0.2.95/8 brd 10.255.255.255 scope global enp5s0 valid_lft forever preferred_lft forever inet6 fe80::d250:99ff:fec0:60b5/64 scope link valid_lft forever preferred_lft forever imac:~ davidak$ ssh root@10.0.2.95
Festplatte partitionieren und Dateisystem erstellen¶
Mit LVM und verschlüsseltem Dateisystem¶
Bei mobilen Geräten, wie Notebooks, ist es wichtig die persönlichen Daten zu verschlüsseln. LVM ermöglicht das Vergrößern von Partitionen, wodurch du dein System z.B. auf eine größere Festplatte umziehen kannst.
Eine 500 MB Partition für /boot und den Rest für LVM.
fdisk /dev/sda n <ENTER> <ENTER> <ENTER> +500M n <ENTER> <ENTER> <ENTER> <ENTER> t <ENTER> 8e p w
Verschlüsselte Partition mit LUKS erstellen.
cryptsetup luksFormat /dev/sda2 cryptsetup luksOpen /dev/sda2 enc-pv
Nun werden 2 logical Volumes mit LVM erstellt. 8 GB SWAP und Rest für das root Dateisystem.
pvcreate /dev/mapper/enc-pv vgcreate vg0 /dev/mapper/enc-pv lvcreate -L 8G -n swap vg0 lvcreate -l '100%FREE' -n root vg0
Dateisystem auf Partitionen formatieren.
mkfs.ext4 -L boot /dev/sda1 mkfs.ext4 -L nixos /dev/mapper/vg0-root mkswap -L swap /dev/mapper/vg0-swap
Partitionen mounten:
mount /dev/disk/by-label/nixos /mnt mkdir /mnt/boot mount /dev/disk/by-label/boot /mnt/boot swapon /dev/disk/by-label/swap
Mit LVM¶
Wenn du NixOS in einer VM installierst macht es Sinn LVM zu verwenden, da du damit z.B. Partitionen (zur Laufzeit) vergrößern kannst.
Eine primäre Partition mit dem gesamten Speicherplatz erstellen:
fdisk /dev/sda n <ENTER> <ENTER> <ENTER> <ENTER> t <ENTER> 8e p w
Falls du lieber cfdisk
benutzt, kannst du es installieren mit:
nix-env -iA nixos.utillinuxCurses
Dann Volumes für Swap (1 GB) und / (Rest) erstellen und Dateisystem (ext4) formatieren.
pvcreate /dev/sda1 vgcreate vg0 /dev/sda1 lvcreate -L 1G -n lvswap vg0 lvcreate -l 100%FREE -n lvroot vg0 mkswap -L swap /dev/mapper/vg0-lvswap swapon /dev/disk/by-label/swap mkfs.ext4 -L nixos /dev/mapper/vg0-lvroot
Ohne LVM¶
Installierst du NixOS auf Hardware kannst du dir diese Abstraktionsschicht sparen.
Für ein Desktop-System macht es Sinn 4 GB Swap zu verwenden.
Eine Partition für Swap (1 GB) und eine für / (Rest) erstellen:
fdisk /dev/sda n <ENTER> <ENTER> <ENTER> +1G t <ENTER> 82 n <ENTER> <ENTER> <ENTER> <ENTER> p w
Dann Dateisysteme formatieren:
mkswap -L swap /dev/sda1 swapon /dev/disk/by-label/swap mkfs.ext4 -L nixos /dev/sda2
Partition mounten und Konfiguration erzeugen¶
mount /dev/disk/by-label/nixos /mnt nixos-generate-config --root /mnt
Konfiguration anpassen¶
Entweder du bearbeitest die Konfiguration per Hand
nano /mnt/etc/nixos/configuration.nix
oder lädst eine Vorbereitete runter:
cd /mnt/etc/nixos/ rm configuration.nix curl -O https://raw.githubusercontent.com/davidak/nixos-config/master/minimal/configuration.nix
Es ist trotzdem nötig die Konfiguration im vorherigen Schritt zu erzeugen, da auch die Hardware-Konfiguration erzeugt wird unter /mnt/etc/nixos/hardware-configuration.nix
.
Du musst in jedem Fall die Festplatte angeben, auf der sich das Dateisystem /
(das /boot
enthält) befindet, damit der Bootmanager GRUB darauf installiert werden kann.
boot.loader.grub.device = "/dev/sda";
Bei einem verschlüsselten Dateisystem ist auch dieser Block nötig:
boot.initrd.luks.devices = [ { name = "root"; device = "/dev/disk/by-uuid/06e7d974-9549-4be1-8ef2-f013efad727e"; preLVM = true; allowDiscards = true; } ];
Die UUID der Partition bekommst du mit blkid /dev/sda2
.
Mir ist es auch wichtig nach der Installation ein deutsches Tastaturlayout (QWERTZ) zu haben.
i18n = { consoleFont = "Lat2-Terminus16"; consoleKeyMap = "de"; defaultLocale = "en_US.UTF-8"; };
Die Locales lasse ich auf englisch, da es bei der Suche nach Fehlermeldungen im Internet auf englisch mehr Ergebnisse gibt.
Die Zeitzone stelle ich meinem Standort entsprechend ein, damit die Uhrzeit stimmt.
time.timeZone = "Europe/Berlin";
Um mich nach der Installation per SSH verbinden zu können aktiviere ich den SSH-Server und erlaube Login als root.
services.openssh = { enable = true; permitRootLogin = "yes"; };
NixOS installieren¶
nixos-install reboot
Eventuell vorhandene Syntax-Fehler in der Konfigurationsdatei werden angezeigt. Nachdem du sie behoben hast einfach erneut nixos-install
ausführen. Am Ende der Installation musst du das Passwort für den Benutzer root eingeben.
Nach dem Neustart des Systems kannst du die Konfigurationsdatei erweitern, um die gewünschten Services laufen zu lassen. Eine Übersicht aller Optionen findest auf auf der NixOS Webseite. Die Konfiguration meiner NixOS-Systeme findest du auf Github.
Kommentare