20.04로 업그레이드 한 후 : luks가 부팅시 디스크를 열지 않습니다. cryptroot / crypttab이 비어 있고 cryptsetup이 crypttab 항목을 인식하지 못합니다.

Aug 21 2020

20.04로 업그레이드 한 후 암호화 된 디스크가 부팅시 해독되지 않습니다. 암호를 요구하지 않으므로 파티션을 찾을 수없고 initrd 프롬프트로 부팅됩니다.

이유는 무엇일까요? /cryptroot/crypttabinitrd 이미지가 완전히 비어 있습니다.

luks를 수동으로 열고 시스템에 chroot 할 수 있습니다. 이것은 /etc/crypttab실제 루트 디렉토리에있는 나의 내용입니다 .

nvme0n1p3_crypt UUID=<some uuid> none luks

(UUID는 모든 곳에서 정확합니다)

실행 update-initramfs -c -k all하면 출력은 다음과 같습니다.

cryptsetup: WARNING: target 'nvme0n1p3_crypt' not found in /etc/crypttab

그것은 그 파일에있는 유일한 단일 항목의 대상 이름이기 때문에 약간 이상합니다. 또한 올바른 것으로 보이는 /dev/mapper링크로 표시됩니다 ../dm-0.

나는 장치의 이름을 crypt사용 하기 위해 이름을 바꾸려고 시도했지만 dmsetup rename ...당연히 도움이되지 않았습니다.

이것이 내 문제의 근본 원인이라고 가정합니다.

답변

3 MichaelKuhlmann Aug 21 2020 at 21:04

참고로, 제가 고쳤습니다. 너무 이상해서 누군가가 나에게 말하지 않았는지 결코 알 수 없었을 것입니다.

문제는 파일에 있습니다 /etc/crypttab. 끝에 EOF가 필요합니다!

우와! 어떻게 이럴 수있어? 일부 리눅스가 텍스트 파일에서 EOF를 ecpect해야하는 것은 지난 25 년 만에 처음입니다. 이런!

어쨌든, 이제 1 주일 이상의 테스트 후에 수정되었습니다.

1 drzraf Nov 01 2020 at 07:26

다음은 생성 루틴입니다. https://salsa.debian.org/gpiccoli/cryptsetup/-/blob/master/debian/functions#L526

또 다른 문제는 (다른 사람들이 의도했다고 말할 수 있음) /etc/crypttabTARGET (= 이름)이 initramfs를 생성하려는 루트에 현재 사용되는 것이어야한다는 것입니다.

예 : 다음과 같은 경우 :

luks open foo
mount /dev/mapper/foo
chroot
update-initramfs

그런 다음 foofoo's etc/crypttab's TARGET 되어야합니다 . 그렇지 않으면 다음과 같이 표시됩니다.

cryptsetup: WARNING: target 'foo' not found in /etc/crypttab

하지만 그것과 거의 보이지이다 update-initramfs -v.