Sto usando arch linux con una partizione root luks crittografata (avvio non crittografato), con ancora una passphrase.
 Ora ho un file di chiavi (3072 byte), che è scritto su USB-Stick in questo modo:
 sudo dd if=tempKeyFile.bin of=/dev/sdd bs=512 seek=1 count=6 
e anche impostato come pass aggiuntivo
 sudo cryptsetup luksAddKey /dev/sdb6 tempKeyFile.bin 
Quando apro la partizione manualmente con:
 sudo cryptsetup --key-file tempKeyFile.bin open /dev/sdb6 luks_root 
 tutto funziona, la partizione è mappata e può essere montata.
 Ora il mio kernel-parameter-line in grub.cfg assomiglia a questo:
 linux /vmlinuz-linux root=UUID=$UUID_OF_luks_root$ rw cryptdevice=UUID=$UUID_OF_sdb6$:luks_root cryptkey=/dev/sdd:1:6 
Ma all'avvio, ottengo questo errore:
 No key available with this passphrase. 
 Invalid Keyfile. Reverting to passphrase.
Ho già provato l'offset 2 invece di 1, ma stesso risultato. Ho notato che non dice che non è stato possibile trovare/leggere il file di chiavi, ma non era corretto.
Sembra che ci sia poca documentazione su questo modo di archiviare il file di chiavi luks. Arch-wiki ne fa menzione, ma molto brevemente e mi sembra di essere conforme, quindi penso che dovrebbe essere possibile.
 nel mio mkinitcpio.conf MODULI, BINARI e FILE sono vuoti e ho impostato:
 HOOKS=(base udev autodetect keyboard modconf block encrypt filesystems fsck) 
quindi il blocco è subito prima della crittografia.
Qual è il problema qui?
Risposta accettata:
 Dall'hook encrypt di 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
    ;;
Quindi, mentre supporta la lettura di una chiave da un dispositivo a blocchi non elaborati, utilizza una dimensione del blocco di 1 (invece del 512 predefinito), quindi devi moltiplicare i tuoi valori per 512 per farlo funzionare.
 Quindi, invece di cryptkey=/dev/sdd:1:6 prova cryptkey=/dev/sdd:512:3072 .