我正在尝试在笔记本电脑上安装 NixOS 19.09。我的磁盘设置是 30GB SSD 和 700GB HDD。我决定使用 SSD 作为 HDD 的缓存,并且还希望对整个根分区进行加密。
因此,我的分区设置如下所示:
- /dev/sda- 固态硬盘
- /dev/sda1- 启动分区,UEFI可启动标志,FAT格式,未加密
- /dev/sda2- 用于缓存
- /dev/sdb- HDD,未分区,用作 LVM 的主磁盘
我格式化了/dev/sda1使用 mkfs.fat,我设置了一个卷组 vg,其中包括/dev/sda2和/dev/sdb,然后我按照您可以在lvmcache 手册页。创建名为的单个缓存卷后硬盘0,我在上面运行了 cryptsetup,这样我就可以实现 LUKS-on-LVM 方案。整个缓存硬盘0被加密为卢克斯2。
然后我解锁了硬盘0再次使用 cryptsetup,将其映射到/dev/映射器/根。我安装了/mnt在其上,创建了/mnt/启动并安装/dev/sda1那里。之后,我生成了一个 NixOS 配置并基本上将其保留为默认值,其中显着的变化是添加dm缓存到boot.initrd.kernelModules,并设置boot.initrd.luks.devices."root".preLVM到错误的。然后,我运行nixos-install
成功并重新启动。
系统成功运行GRUB,但之后无法找到根卷。它提供了以下错误消息:
device-mapper: table: 254:3: cache: Error creating cache's policy
device-mapper: reload ioctl on (254:3) failed: Invalid argument
我假设它在检测整个硬盘0。我尝试从实时安装 USB 记忆棒启动它,并且您必须启用dm缓存使用 modprobe 然后运行
# lvchange -ay vg
要得到硬盘0活跃且可见。
有人尝试过类似的设置吗?我怎样才能让它自动启动?或者这个设置在概念上有缺陷并且永远无法工作?
PS:希望问题足够详细,我是第一次在这里问。
答案1
这是我今天在经历了一些令人头疼的事情之后开始工作的消息:
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;