
我正在嘗試在筆記型電腦上安裝 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;