Um mir eine abkapselbare und reproduzierbare Entwicklungsumgebung für verschiedene Projekte zu schaffen, habe ich mich in den vergangenen Tagen mit NixOS auseinander gesetzt. NixOS wird durch eine Konfigurationsdatei gebaut und ist damit immer wieder reproduzierbar. Läuft die Konfiguration auf deinem System, so läuft Sie auch auf jedem anderen. Zusätzlich lassen sich benötigte Pakete global oder nur für einzelne Projekte installieren, womit sich für jedes Projekt ein guter Überblick über die benötigten Importe verschaffen lässt.

Da ich aber auch genügend Windows-Anwendungen benutze und nicht alles unbedingt in einer VM unter Linux laufen lassen möchte, musste ich sicherstellen, dass ich beide Systeme im Boot-Manager auswählen kann. Leider ist das in der Installationsanleitung nicht ausreichend beschrieben und erst im NixWiki findet man dann einige (nicht ganz eindeutige Beschreibungen), wie sich der Dualboot realisieren lässt.

Nach einigen Versuchen konnte ich den Dualboot auf diese Weise realisieren:

  1. Live-Stick erstellen

Unter https://nixos.org/download.html kannst Du das aktuelle Image herunter laden. In meinem Fall hab ich es mit BalenaEtcher direkt auf einen 4GB USB-Stick "gebrannt".

  1. Sicherstellen, das Windows eine EFI-Partition zum Boot nutzt

Unter der Windows-eigenen App "Festplattenpartitionen erstellen und formatieren" lässt sich dies recht simpel kontrollieren.

nvme-efi

  1. Vom Stick im EFI-Modus booten

An diesem Schritt ist es bei mir meistens gescheitert. Erst nach einigen Anläufen habe ich festgestellt, dass mein BIOS den Stick immer im Legacy-Modus gebootet hat. Durch diesen Modus wurden die passenden EFI-Kernelmodule nicht mitgeladen und beim Erstellen der Konfiguration wurde der falsche Bootloader ausgewählt. Wenn das System im passenden Modus gebootet ist, sollte

modprobe efivars

keinen Fehler zurück geben.

  1. Partitionen anlegen

Nach der Anleitung unter https://nixos.org/manual/nixos/stable/index.html#sec-installation können nun die Partitionen angelegt werden. Die einzige Partition, die nicht angelegt werden muss, ist die Boot-Partition. Natürlich solltet Ihr auf die Größen der Partitionen achten und diese entsprechend eurer Festplatte ausrichten. Sobald die Partitionen nach der Anleitung angelegt sind, wird die Hauptpartition nach /mnt/ gemountet. Mit

lsblk

kannst du alle Festplatten und Partitionen anzeigen und die Windows Boot Partition raussuchen. In meinem Fall ist Windows auf einer NVME-Festplatte (dies ist eine Festplatte, die auf dem Mainboard eingesteckt wird) und Windows hat als Boot-Partition nvme0n1p2 angelegt. Du solltest die Partition anhand Ihrer Größe von 100 MB erkennen können. Sobald du weißt, welche Partition das ist, wird diese nach /mnt/boot gemountet.

  1. Erstellen der Konfiguration und Installation

Nach der Anleitung kannst du nun mit

nixos-generate-config --root /mnt

deine Konfiguration erstellen und sie bearbeiten. Du findest die frisch erstellte Konfiguration unter /mnt/etc/nixos/configuration.nix. Der Generierungsprozess sollte automatisch die EFI-Partition erkannt haben und in der Konfiguration den systemd-Bootloader aktiviert haben. Sobald Du alles auf dich zugeschnitten hast, kannst du das System installieren und solltest bei einem Neustart die NixOS-Konfiguration und den Windows Boot Manager zur Auswahl haben.

Next Post