Používám arch linux se zašifrovaným kořenovým oddílem luks (zavedení nešifrovaně), zatím s přístupovou frází.
Nyní mám soubor klíče (3072 bajtů), který je zapsán na USB-Stick tímto způsobem:
sudo dd if=tempKeyFile.bin of=/dev/sdd bs=512 seek=1 count=6
a také nastavit jako další průchod
sudo cryptsetup luksAddKey /dev/sdb6 tempKeyFile.bin
Když oddíl otevřu ručně pomocí:
sudo cryptsetup --key-file tempKeyFile.bin open /dev/sdb6 luks_root
vše funguje, oddíl je namapován a lze jej připojit.
Nyní můj kernel-parameter-line v grub.cfg
vypadá takto:
linux /vmlinuz-linux root=UUID=$UUID_OF_luks_root$ rw cryptdevice=UUID=$UUID_OF_sdb6$:luks_root cryptkey=/dev/sdd:1:6
Ale při bootování se mi zobrazuje tato chyba:
No key available with this passphrase.
Invalid Keyfile. Reverting to passphrase.
Už jsem zkoušel offset 2 místo 1, ale stejný výsledek. Všiml jsem si, že to neříká, že soubor klíče nelze najít/přečíst, ale byl nesprávný.
Zdá se, že existuje jen málo dokumentace o tomto způsobu ukládání souboru luks keyfile. Arch-wiki to zmiňuje, ale velmi stručně a zdá se, že jsem v souladu, takže si myslím, že by to mělo být možné.
v mém mkinitcpio.conf
MODULY, BINÁRIE a SOUBORY jsou prázdné a nastavil jsem:
HOOKS=(base udev autodetect keyboard modconf block encrypt filesystems fsck)
takže blok je těsně před šifrováním.
V čem je problém?
Přijatá odpověď:
Z šifrovacího háčku ArchLinux (/lib/initcpio/hooks/encrypt
):
*)
# Read raw data from the block device
# ckarg1 is numeric: ckarg1=offset, ckarg2=length
dd if="$resolved" of="$ckeyfile" bs=1 skip="$ckarg1" count="$ckarg2" >/dev/null 2>&1
;;
Takže i když podporuje čtení klíče z nezpracovaného blokového zařízení, používá velikost bloku 1 (místo výchozích 512), takže musíte vynásobit své hodnoty 512, aby to fungovalo.
Takže místo cryptkey=/dev/sdd:1:6
zkuste cryptkey=/dev/sdd:512:3072
.