после обновления до 20.04 мой зашифрованный диск не расшифровывается при загрузке. У меня не спрашивают пароль, поэтому он, очевидно, не может найти ни одного раздела и загружается в приглашение initrd.
В чем может быть причина: / cryptroot / crypttab
в образе initrd полностью пуст .
Я могу открыть luks вручную и войти в систему с помощью chroot. Это содержимое моего / etc / crypttab
в реальном корневом каталоге:
nvme0n1p3_crypt UUID =
(Все UUID верны, везде)
Когда Я запускаю update-initramfs -c -k all
, на выходе получается:
cryptsetup: ВНИМАНИЕ: цель 'nvme0n1p3_crypt' не найдена в / etc / crypttab
Это немного странно, потому что это в точности целевое имя единственной записи в этом файле. Это' s также указаны в / dev / mapper
как ссылка на ../ dm-0
, что тоже кажется правильным.
Я попытался переименовать устройство в crypt
только с использованием dmsetup переименовать ...
но это, конечно, не помогло.
Я предполагаю, что это основная причина моей проблемы.
Уф, я исправил. Это было так странно, я бы никогда не узнал, если бы мне кто-то не сказал.
Проблема в файле / etc / crypttab
: ему нужен EOF в конце!
Ого! Как это может быть? Это первый раз за последние 25 лет, когда некоторым Linux требуется EOF в текстовом файле. Гоша!
В любом случае, теперь это исправлено после более чем одной недели тестирования.
Вот процедура генерации: https://salsa.debian.org/gpiccoli/cryptsetup/-/blob/master/debian/functions#L526
Еще одна ошибка (другие могут сказать, что так и было задумано) заключается в том, что ваш /etc/crypttab
ЦЕЛЬ (= имя) должен быть тем, который в настоящее время используется для корня, для которого вы собираетесь создать initramfs.
Например: Если вы:
отлично открываете
foo
монтируете /dev/mapper/foo
chroot
update-initramfs
то foo
etc/ crypttab
TARGET
должен быть foo иначе вы увидите:
cryptsetup: ПРЕДУПРЕЖДЕНИЕ: цель 'foo' не найдена в /etc/crypttab
Хотя это едва заметен с помощью update-initramfs -v
.