
Estoy intentando instalar NixOS 19.09 en una computadora portátil. La configuración de mi disco es un SSD de 30 GB y un HDD de 700 GB. Decidí que quiero usar el SSD como caché para el HDD y también que quiero que se cifre toda la partición raíz.
Por lo tanto, la configuración de mi partición se ve así:
- /dev/sda-SSD
- /dev/sda1- partición de arranque, bandera de arranque UEFI, formateada con FAT, sin cifrar
- /dev/sda2- para ser utilizado para el caché
- /dev/sdb- HDD, sin particionar, para ser utilizado como disco principal con LVM
yo formateé/dev/sda1con mkfs.fat, configuré un grupo de volúmenes vg que incluía/dev/sda2y/dev/sdb, y luego seguí la guía que puedes encontrar en elpágina del manual de lvmcache. Después de crear un único volumen en caché llamadohdd0, Ejecuté cryptsetup en él para poder lograr un esquema LUKS-on-LVM. Todo el cachéhdd0está cifrado conLUKS2.
Luego lo desbloqueéhdd0nuevamente usando cryptsetup, mapeándolo a/dev/mapper/raíz. yo monté/mnten él, creado/mnt/arranquey montado/dev/sda1allá. Después de eso, generé una configuración de NixOS y básicamente la dejé por defecto, con los cambios notables de agregarcaché dmaboot.initrd.kernelModulesy configuraciónboot.initrd.luks.devices."root".preLVMaFALSO. Luego, ejecuté nixos-install
exitosamente y reinicié.
El sistema logró ejecutar GRUB con éxito, pero luego no pudo encontrar el volumen raíz. Proporcionó un mensaje de error de:
device-mapper: table: 254:3: cache: Error creating cache's policy
device-mapper: reload ioctl on (254:3) failed: Invalid argument
Supongo que tiene un problema con la detección de todohdd0. Intenté arrancarlo desde la memoria USB de instalación en vivo y ahí tienes que habilitarcaché dmusando modprobe y luego ejecutar
# lvchange -ay vg
Llegarhdd0ser activo y visible.
¿Alguien probó una configuración similar? ¿Cómo puedo hacer que arranque automáticamente? ¿O la configuración es conceptualmente defectuosa y nunca podrá funcionar?
PD: Espero que la pregunta sea lo suficientemente detallada, es la primera vez que pregunto aquí.
Respuesta1
Aquí está mi conferencia en la que me puse a trabajar hoy, después de un poco de headbanging:
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;
};
};
El truco principal era tener "dm-cache-smq"
módulos; sin ellos, recibía un mensaje de error similar al que estás recibiendo.
Recibirás un feo mensaje de advertencia sobre cache_check
la falta. Para deshacerte de él, agrega esto también:
services.lvm.boot.thin.enable = true;