我正试图在笔记本上安装NixOS 19.09。我的磁盘安装程序是30 My的SSD和700 My的硬盘。我决定使用SSD作为HDD的缓存,并且希望对整个根分区进行加密。
因此,我的分区设置如下:
我用mkfs.fat格式化了/dev/sda2 1,设置了卷组vg,其中包括/dev/sda2 2和/dev/sdb,然后我遵循了在lvmcache手册页中可以找到的指南。在创建了一个名为hdd0的缓存卷之后,我在它上运行了加密设置,这样我就可以实现LVM方案。整个缓存的hdd0都是用LUKS2加密的。
然后,我再次使用密码设置解锁hdd0,将其映射到/dev/mapper/root。我在上面挂载了/mnt,创建了/mnt/boot,并在那里挂载了/dev/sda1 1。在此之后,我生成了一个NixOS配置,基本保持在默认状态,显著的改变是将dm-cache添加到boot.initrd.kernelModules中,并将boot.initrd.luks.devices."root".preLVM设置为false。然后,我成功地运行了nixos-install并重新启动。
系统成功地运行了GRUB,但之后未能找到根卷。它提供了以下错误信息:
device-mapper: table: 254:3: cache: Error creating cache's policy
device-mapper: reload ioctl on (254:3) failed: Invalid argument我假设它在检测整个hdd0时有问题。我试着从USB即插即用的安装中引导它,在那里您必须使用and探测启用dm-cache,然后运行。
# lvchange -ay vg使hdd0成为活动的和可见的。
有人尝试过类似的设置吗?我怎么能让它自动启动?还是设置在概念上有缺陷,永远无法工作?
我希望这个问题足够详细,这是我第一次在这里提问。
发布于 2022-01-19 21:54:30
这是我今天要工作的公寓,经过一番头脑发热之后:
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;
};
};主要的诀窍是在模块中使用"dm-cache-smq" --没有它,我得到了类似于您所得到的类似的错误消息。
您将收到一条关于cache_check丢失的丑陋警告信息--要消除它,也要添加以下内容:
services.lvm.boot.thin.enable = true;https://unix.stackexchange.com/questions/574215
复制相似问题