
Estou tentando instalar o NixOS 19.09 em um notebook. Minha configuração de disco é um SSD de 30 GB e um HDD de 700 GB. Decidi que quero usar o SSD como cache para o HDD e também que toda a partição raiz seja criptografada.
Minha configuração de partição, portanto, é assim:
- /dev/sda-SSD
- /dev/sda1- partição de inicialização, sinalizador de inicialização UEFI, formatado com FAT, não criptografado
- /dev/sda2- para ser usado para o cache
- /dev/sdb- HDD, não particionado, para ser usado como disco principal com LVM
Eu formatei/dev/sda1com mkfs.fat, configurei um grupo de volumes vg que incluía/dev/sda2e/dev/sdb, e então segui o guia que você pode encontrar nopágina de manual do lvmcache. Depois de criar um único volume em cache chamadodisco rígido0, executei o cryptsetup nele, para poder obter um esquema LUKS-on-LVM. Todo o cachedisco rígido0é criptografado comLUKS2.
Então eu desbloqueeidisco rígido0novamente usando cryptsetup, mapeando-o para/dev/mapper/root. eu montei/mntnele, criado/mnt/inicializaçãoe montado/dev/sda1lá. Depois disso, gerei uma configuração do NixOS e basicamente a deixei no padrão, com as mudanças notáveis de adicionardm-cacheparaboot.initrd.kernelModulese configuraçãoboot.initrd.luks.devices."root".preLVMparafalso. Então, executei nixos-install
com sucesso e reiniciei.
O sistema conseguiu executar o GRUB com êxito, mas depois disso não conseguiu encontrar o volume raiz. Ele forneceu uma mensagem de erro de:
device-mapper: table: 254:3: cache: Error creating cache's policy
device-mapper: reload ioctl on (254:3) failed: Invalid argument
Presumo que haja um problema com a detecção de todo odisco rígido0. Eu tentei inicializá-lo a partir do pendrive de instalação ao vivo, e aí você tem que habilitardm-cacheusando modprobe e depois execute
# lvchange -ay vg
obterdisco rígido0estar ativo e visível.
Alguém tentou uma configuração semelhante? Como posso fazer com que ele inicialize automaticamente? Ou a configuração é conceitualmente falha e nunca poderá funcionar?
PS: Espero que a pergunta seja detalhada o suficiente, é a primeira vez que pergunto aqui.
Responder1
Aqui está a minha confirmação de que comecei a trabalhar hoje, depois de alguns headbangers:
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;
};
};
O truque principal era ter "dm-cache-smq"
módulos - sem eles, eu estava recebendo uma mensagem de erro semelhante à que você está recebendo.
Você receberá uma mensagem de aviso feia sobre cache_check
falta - para se livrar dela, adicione isto também:
services.lvm.boot.thin.enable = true;