Wpisywanie hasła jest uciążliwe
Nie dość, że uciążliwe to w sytuacji gdzie musimy odblokować dysk publicznie mniej bezpieczne.
Na szczęście takie odblokowywanie możemy zrobić za pomocą zwykłego USB za 5 zł.
boot = {
tmp.cleanOnBoot = true;
loader.efi.canTouchEfiVariables = false;
supportedFilesystems = [ "zfs" ];
loader.timeout = 1;
loader.grub = {
enable = true;
device = "nodev";
enableCryptodisk = true;
zfsSupport = true;
efiSupport = true;
efiInstallAsRemovable = true;
mirroredBoots = [
{
devices = [ "nodev" ];
path = "/boot";
}
];
};
initrd.kernelModules = [
"usb_storage"
"vfat"
"nls_cp437"
];
initrd.systemd = {
enable = true;
contents."/etc/fstab".text = ''
LABEL=Usbkey /key vfat defaults,nofail,x-systemd.device-timeout=5 0 2
'';
};
initrd.luks.devices = {
root = {
device = "/dev/disk/by-uuid/dddddddd-dddd-dddd-dddd-dddddddddddd";
keyFile = "/key/KEYFILE";
fallbackToPassword = true;
};
};
};
Używam zfs, ale po prostu pomiń związane z tym opcje.
Ogólnie chodzi o dodanie systemd do initrd i użycie zwykłej składni fstaba żeby zamontować nasz USB gdziekolwiek.
W moim przypadku USB ma label “Usbkey”, pamiętaj o tym, najlepiej też użyć prostego filesystemu jak FAT i oczywiście dodać odpowiednie moduły kernelowe.
Wykonaj ls -l /dev/disk/by-uuid żeby zobaczyć jaki UUID ma twój dysk
KEYFILE to po prostu plik który jest kluczem w głównym folderze na USB, możesz go wygenerować z
dd if=/dev/urandom of=/mnt/myusb/KEYFILE bs=4096 count=1
A do dysku zaszyfrowanego LUKSem dodaj ten klucz:
cryptsetup luksAddKey /dev/sdx /mnt/myusb/KEYFILE
Pamiętaj by go backupować.