Dopo l'aggiornamento alla 20.04: luks non apre il mio disco all'avvio; cryptroot/crypttab è vuoto, cryptsetup non riconosce la voce crypttab

Aug 21 2020

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/crypttabnell'initrd l'immagine è completamente vuota.

Posso aprire luks manualmente ed eseguire il chroot nel sistema. Questo è il contenuto di my /etc/crypttabnella 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/mappercome collegamento a ../dm-0cui sembra essere corretto.

Ho provato a rinominare il dispositivo in cryptsolo utilizzo dmsetup rename ..., ma ovviamente non è stato d'aiuto.

Presumo che questa sia la causa principale del mio problema.

Risposte

3 MichaelKuhlmann Aug 21 2020 at 21:04

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.

1 drzraf Nov 01 2020 at 07:26

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/crypttabTARGET (= 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.