
Ich versuche, NixOS 19.09 auf einem Notebook zu installieren. Mein Festplatten-Setup besteht aus einer 30 GB SSD und einer 700 GB HDD. Ich habe beschlossen, dass ich die SSD als Cache für die HDD verwenden möchte und dass die gesamte Root-Partition verschlüsselt werden soll.
Mein Partitionsaufbau sieht daher folgendermaßen aus:
- /dev/sdaSSD
- /dev/sda1- Bootpartition, UEFI-Boot-Flag, mit FAT formatiert, unverschlüsselt
- /dev/sda2- zur Verwendung im Cache
- /Entwickler/sdb- Festplatte, unpartitioniert, zur Verwendung als Hauptfestplatte mit LVM
Ich formatierte/dev/sda1mit mkfs.fat habe ich eine Volumegruppe vg eingerichtet, die Folgendes umfasste/dev/sda2Und/Entwickler/sdb, und ich folgte dann der Anleitung, die Sie finden in derlvmcache-Handbuchseite. Nach dem Erstellen eines einzelnen zwischengespeicherten Volumes namensFestplatte0, habe ich cryptsetup darauf ausgeführt, damit ich ein LUKS-auf-LVM-Schema erreichen konnte. Der gesamte zwischengespeicherteFestplatte0ist verschlüsselt mitLUKS2.
Dann habe ich freigeschaltetFestplatte0wieder mit cryptsetup, Mapping auf/dev/mapper/rootIch bestieg/Min.darauf erstellt/mnt/bootund montiert/dev/sda1dort. Danach habe ich eine NixOS-Konfiguration generiert und sie im Wesentlichen auf Standard belassen, mit den bemerkenswerten Änderungen, dass ich hinzugefügt habedm-cacheZuboot.initrd.kernelModulesund Einstellungboot.initrd.luks.devices."root".preLVMZuFALSCH. Dann habe ich es nixos-install
erfolgreich ausgeführt und neu gestartet.
Das System konnte GRUB erfolgreich ausführen, konnte danach jedoch das Stammvolume nicht finden. Es gab die folgende Fehlermeldung aus:
device-mapper: table: 254:3: cache: Error creating cache's policy
device-mapper: reload ioctl on (254:3) failed: Invalid argument
Ich gehe davon aus, dass es ein Problem mit der Erkennung des gesamtenFestplatte0. Ich habe versucht, es vom Live-Installations-USB-Stick zu booten, und dort muss man aktivierendm-cachemit modprobe und dann ausführen
# lvchange -ay vg
zu bekommenFestplatte0aktiv und sichtbar zu sein.
Hat jemand ein ähnliches Setup ausprobiert? Wie kann ich es automatisch booten lassen? Oder ist das Setup konzeptionell fehlerhaft und kann nie funktionieren?
PS: Ich hoffe, die Frage ist ausführlich genug, ich stelle sie hier zum ersten Mal.
Antwort1
Hier ist meine Besprechung, die ich heute nach einigem Headbangen bei der Arbeit gemacht habe:
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "ehci_pci" "usb_storage" "usbhid" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ "dm-cache" "dm-cache-smq" "dm-cache-mq" "dm-cache-cleaner" ];
boot.kernelModules = [ "kvm-amd" "dm-cache" "dm-cache-smq" "dm-persistent-data" "dm-bio-prison" "dm-clone" "dm-crypt" "dm-writecache" "dm-mirror" "dm-snapshot"];
boot.initrd.luks.devices = {
"decrypted" = {
device = "/dev/mapper/vg-crypt";
allowDiscards = true;
preLVM = false;
};
};
Der Haupttrick bestand "dm-cache-smq"
darin, Module zu haben – ohne sie bekam ich eine ähnliche Fehlermeldung wie Sie.
Sie erhalten eine hässliche Warnmeldung über cache_check
fehlende Elemente. Um diese zu entfernen, fügen Sie Folgendes hinzu:
services.lvm.boot.thin.enable = true;