20.04로 업그레이드 한 후 : luks가 부팅시 디스크를 열지 않습니다. cryptroot / crypttab이 비어 있고 cryptsetup이 crypttab 항목을 인식하지 못합니다.
20.04로 업그레이드 한 후 암호화 된 디스크가 부팅시 해독되지 않습니다. 암호를 요구하지 않으므로 파티션을 찾을 수없고 initrd 프롬프트로 부팅됩니다.
이유는 무엇일까요? /cryptroot/crypttab
initrd 이미지가 완전히 비어 있습니다.
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 ...
당연히 도움이되지 않았습니다.
이것이 내 문제의 근본 원인이라고 가정합니다.
답변
참고로, 제가 고쳤습니다. 너무 이상해서 누군가가 나에게 말하지 않았는지 결코 알 수 없었을 것입니다.
문제는 파일에 있습니다 /etc/crypttab
. 끝에 EOF가 필요합니다!
우와! 어떻게 이럴 수있어? 일부 리눅스가 텍스트 파일에서 EOF를 ecpect해야하는 것은 지난 25 년 만에 처음입니다. 이런!
어쨌든, 이제 1 주일 이상의 테스트 후에 수정되었습니다.
다음은 생성 루틴입니다. https://salsa.debian.org/gpiccoli/cryptsetup/-/blob/master/debian/functions#L526
또 다른 문제는 (다른 사람들이 의도했다고 말할 수 있음) /etc/crypttab
TARGET (= 이름)이 initramfs를 생성하려는 루트에 현재 사용되는 것이어야한다는 것입니다.
예 : 다음과 같은 경우 :
luks open
foo
mount /dev/mapper/foo
chroot
update-initramfs
그런 다음 foo 도 foo's
etc/crypttab's
TARGET
되어야합니다 . 그렇지 않으면 다음과 같이 표시됩니다.
cryptsetup: WARNING: target 'foo' not found in /etc/crypttab
하지만 그것과 거의 보이지이다 update-initramfs -v
.