Plain NixOS installation

Aus Freifunk München
Wechseln zu: Navigation, Suche

Plain NixOS installieren[Bearbeiten]

Screencast[Bearbeiten]

Die komplette Installation hab ich hier auch mal in einer VM durchgespielt zum angucken: https://www.youtube.com/watch?v=s6ehwHXqmpk

1. Download[Bearbeiten]

NixOS minimal/graphical installation

  • NixOS wird sowieso nur auf der Commandline installiert, die einzige Erleichterung die der graphische "Installer" bietet ist ein gparted um die Partitionierung graphisch durchzuführen.
  • Im folgenden wird daher die minimal Variante verwendet, weils wurscht ist

2. Bootfähigen Stick aus dem iso erzeugen[Bearbeiten]

Im folgenden wird davon ausgegangen dass ein Usbstick der komplett platt gemacht werden kann als Device /dev/sde angesteckt ist. Falls ihr euch nicht sicher seid welches Device der Stick ist, Stick einstecken und dann "dmesg" auf der commandline aufrufen, da scrollt das dann durch.


Dazu unetbootin nutzen oder per dd direkt auf USB-Stick (hier: /dev/sde).

dd[Bearbeiten]

 dd if=/home/django/Downloads/nixos-graphical-16.03.948.a96c308-x86_64-linux.iso of=/dev/sde bs=512K

unetbootin[Bearbeiten]

unetbootin ist ein grafisches Tool zu erstellen von Boot-Usbsticks. Einfach z.B. per apt-get installieren.

Vorsicht! Mit cfdisk könnt ihr eure Haupt-Platte aus versehen kaputtpartitionieren, also zweimal prüfen ob das richtige Device angegeben wurde und in cfdisk dann auch nochmal die Größe checken, dass die zu dem Usbstick passt.

 cfdisk /dev/sde

Sieht nach Usbstick aus?

 # Mit frischer Partitionstabelle starten
 cfdisk -z /dev/sde
 #Eine Partition /dev/sde1 anlegen die den kompletten Platz nutz und dann "schreiben" #auswählen.
 # Filesystem erstellen
 mkfs.ext4 /dev/sde1

Stick mounten (z.B. aus und wieder einstecken)

Nun unetbootin öffnen und Iso-Image auswählen, auf Stick flashen, fertig.


3. Mit dem Stick auf einem Blech oder mit der ISO in einer Linux-VM starten.[Bearbeiten]

Nun solltet ihr in einer root-shell landen die von kernel-Messages zugemüllt wird und ein englisches Tastaturlayout hat. Um diese Messages abzustellen und ggfs. das Layout umzustellen, folgende Commands eingeben.

  # Deutsche Tastaturbelegung
  loadkeys de
  # Kernel-Spamming auf die Konsole abstellen
  sysctl -w kernel.printk="3 4 1 3"

4. Festplatte partitionieren und formatieren[Bearbeiten]

  • Bei der Einrichtung der Partitionen "DOS partition table" nutzen (außer man weiß, was man macht)
  # Partitionen/Disks anzeigen
  cat /proc/partitions
  # als partition-table format "DOS" auswählen, wenn ihr gefragt werdet.
  # Auf gewünschter Disk zwei primäre Partitionen anlegen sda1 (typ 83, linux)
  # + sda2 (ne kleine halt , typ 82 Swap),
  # "write" auswählen und bestätigen, nun sollte eine Message darunter auftauchen, dass
  # der Write erfolgreich war.
  cfdisk /dev/sda
  # Nochmal checken ob alles geklappt hat
  cat /proc/partitions
  # Dateisysteme erstellen
  mkfs.ext4 /dev/sda1
  mkswap /dev/sda2
  # Und mounten
  mount /dev/sda1 /mnt
  swapon /dev/sda2

5. NixOS konfigurieren[Bearbeiten]

Details, Spezialfälle, etc. siehe NixOS manual

Dazu folgende Hinweise:

  • In der Anleitung angegebenen "Automatic upgrades" nicht nutzen!
  # initiale Config generieren
  nixos-generate-config --root /mnt
  # vim/nano, editor halt
  vim /mnt/etc/nixos/configuration.nix

folgende Zeilen einkommentieren/ändern (gegebenenfalls anpassen für eigenes Plattenlayout)

  boot.loader.grub.device = "/dev/sda";
  networking.hostName = "ffmuc-gw01"; # test-hostname, oder offiziellen hostname nach münchner stadttor schema
  i18n = {
     consoleFont = "Lat2-Terminus16";
     consoleKeyMap = "de"; # wer eine deutsche Tastatur will
     defaultLocale = "en_US.UTF-8"
  }
  time.timeZone = "Europe/Berlin"
  environment.systemPackages = with pkgs; {
     wget vim git
  };
  services.openssh.enable = true

Abspeichern,

Den **public** ssh key auf einen webserver werfen oder lokal auf dem laptop in ein directory kopieren und den simplehttp server anwerfen:

   ## OPTIONAL (auf dem lokalen Laptop)
   mkdir /tmp/serve
   cp gateway_test.pub /tmp/serve
   cd /tmp/serve
   sudo python -m SimpleHTTPServer 80
   ##
   # Auf dem Server, Key installieren und Permissions korrigieren
   mkdir -p /mnt/root/.ssh; curl [URL deines Keys] >> /mnt/root/.ssh/authorized_keys; chmod 700 /mnt/root/.ssh; chmod 600 /mnt/root/.ssh/authorized_keys

6. NixOS Installation ausführen[Bearbeiten]

Endlich:

  nixos-install --root /mnt

Wenn nix mit arbeiten fertig ist, Stick raus/Image auswerfen:

  reboot