Dopo l'aggiornamento alla 20.04: luks non apre il mio disco all'avvio; cryptroot/crypttab è vuoto, cryptsetup non riconosce la voce crypttab
dopo l'aggiornamento alla 20.04, il mio disco crittografato non viene decrittato all'avvio. Non mi viene chiesta alcuna password, quindi ovviamente non riesce a trovare alcuna partizione e si avvia nel prompt di initrd.
Quale potrebbe essere il motivo: /cryptroot/crypttab
nell'initrd l'immagine è completamente vuota.
Posso aprire luks manualmente ed eseguire il chroot nel sistema. Questo è il contenuto di my /etc/crypttab
nella directory root reale:
nvme0n1p3_crypt UUID=<some uuid> none luks
(Gli UUID sono tutti corretti, ovunque)
Quando eseguo update-initramfs -c -k all
, l'output è:
cryptsetup: WARNING: target 'nvme0n1p3_crypt' not found in /etc/crypttab
Il che è un po' strano, perché è esattamente il nome di destinazione dell'unica singola voce in quel file. È anche elencato /dev/mapper
come collegamento a ../dm-0
cui sembra essere corretto.
Ho provato a rinominare il dispositivo in crypt
solo utilizzo dmsetup rename ...
, ma ovviamente non è stato d'aiuto.
Presumo che questa sia la causa principale del mio problema.
Risposte
Cordiali saluti, l'ho riparato. Era così strano, non l'avrei mai scoperto se qualcuno non me l'avesse detto.
Il problema è con il file /etc/crypttab
: ha bisogno di un EOF alla fine!
Ehi! Come può essere? Questa è la prima volta negli ultimi 25 anni che alcuni Linux richiedono un EOF in un file di testo. Perbacco!
Ad ogni modo, ora è risolto, dopo più di una settimana di test.
Ecco la routine di generazione:https://salsa.debian.org/gpiccoli/cryptsetup/-/blob/master/debian/functions#L526
Un altro trucco (altri potrebbero dire che è previsto) è che il tuo /etc/crypttab
TARGET (= nome) deve essere quello attualmente utilizzato per la radice per cui intendi generare l'initramfs.
Ad esempio: se tu:
luks open
pippo
mount /dev/mapper/foo
chroot
update-initramfs
Allora foo's
etc/crypttab's
TARGET
deve essere anche foo altrimenti vedresti:
cryptsetup: WARNING: target 'foo' not found in /etc/crypttab
Sebbene sia appena visibile con update-initramfs -v
.