
Я пытаюсь установить NixOS 19.09 на ноутбук. Моя дисковая конфигурация — SSD на 30 ГБ и HDD на 700 ГБ. Я решил, что хочу использовать SSD в качестве кэша для HDD, а также хочу, чтобы весь корневой раздел был зашифрован.
Таким образом, моя настройка разделов выглядит следующим образом:
- /dev/sda- SSD
- /dev/sda1- загрузочный раздел, флаг загрузки UEFI, отформатирован в FAT, незашифрован
- /dev/sda2- для использования в кэше
- /dev/sdb- HDD, неразмеченный, для использования в качестве основного диска с LVM
Я отформатировал/dev/sda1с помощью mkfs.fat я создал группу томов vg, которая включала/dev/sda2и/dev/sdb, и затем я следовал руководству, которое вы можете найти вСтраница руководства lvmcache. После создания одного кэшированного тома с именемhdd0, я запустил cryptsetup на нем, чтобы я мог реализовать схему LUKS-on-LVM. Весь кэшированныйhdd0зашифрован с помощьюЛЮКС2.
Затем я разблокировалhdd0снова использую cryptsetup, сопоставляя его с/dev/mapper/корень. Я поднялся/мнтна нем создано/mnt/загрузкаи смонтированный/dev/sda1там. После этого я сгенерировал конфигурацию NixOS и в основном оставил ее по умолчанию, с заметными изменениями, добавивdm-кэшкboot.initrd.kernelМодули, и настройка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
Я предполагаю, что у него проблема с обнаружением всегоhdd0. Я попробовал загрузить его с USB-накопителя для установки в реальном времени, и там нужно включитьdm-кэшиспользуя modprobe и затем запустить
# lvchange -ay vg
получитьhdd0быть активным и заметным.
Кто-нибудь пробовал подобную настройку? Как мне сделать так, чтобы она загружалась автоматически? Или настройка концептуально ошибочна и никогда не сможет работать?
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;