/etc/crypttab은 initramfs에서 업데이트되지 않습니다.

/etc/crypttab은 initramfs에서 업데이트되지 않습니다.

우분투 22.04를 새로 설치하고 우분투 설치 프로그램 옵션에서 전체 디스크 암호화(LUKS)와 ZFS를 선택했습니다.

/etc/crypttab자동 방식(멋진 USB 자동 잠금 해제)으로 드라이브를 잠금 해제하려면 일부 편집을 수행해야 하지만 편집 내용이 /etc/crypttabinitramfs에 유지되지 않습니다.

내가 하고 있는 일은:

  • 편집하다/etc/crypttab
  • 달리기update-initramfs -u
  • LUKS 비밀번호를 묻는 시스템(initramfs)으로 내 머신을 재부팅합니다.
  • 내용을 확인했지만 /etc/cryptotab이 없습니다.

작동 방식이 틀렸나요? 일부 버전의 crypttab을 로더에 유지해야 하는데 작동하지 않습니다.

내가 뭘 잘못하고 있는지에 대한 조언이 있습니까?

답변1

저도 같은 문제가 있어서 구글을 통해 찾았고, 추가할 정보가 있어서 여기에 왔습니다. 비밀번호를 입력하지 않고 LUKS 드라이브를 자동으로 잠금 해제하려고 합니다.

먼저 해당 /etc/crypttab항목을 편집하고 다음과 같이 변경했습니다.

sda3_crypt UUID=2d661ff8-d6a8-49c9-ae96-4d6e234bffe2 /dev/zero luks,discard,keyfile-size=32      

그런 다음 다음 명령을 사용하여 새 키를 추가했습니다.

sudo cryptsetup luksAddKey --new-keyfile-size 32 /dev/sda3 /dev/zero

마지막으로 update-initramfs다음 출력을 실행했습니다.

$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-6.0.0-2-amd64
cryptsetup: WARNING: sda3_crypt: key file /dev/zero has insecure ownership, see 
    /usr/share/doc/cryptsetup/README.Debian.gz.
cryptsetup: WARNING: Skipping root target sda3_crypt: uses a key file

이미 의심스러워 보였지만 어쨌든 재부팅했습니다. 불행하게도 이러한 작업은 시스템을 부팅할 수 없게 만듭니다.

Gave up waiting for suspend/resume device
Gave up waiting for root file system device: Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/mapper/legend--vg-root does not exist. Dropping to a shell!


BusyBox v1.35.0 (Debian 1: 1.135.0-2) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) cat /etc/crypttab
cat: can't open '/etc/crypttab': No such file or directory

BusyBox 프롬프트에 다음 명령을 입력하여 시스템을 다시 성공적으로 부팅할 수 있었습니다.

cryptsetup luksOpen --key-file /dev/zero --keyfile-size 32 /dev/sda3 sda3_crypt
exit

하지만 원래의 질문은 여전히 ​​남아 있습니다. 왜 /etc/crypttabinitramfs에서 사용할 수 없는 걸까요?

고쳐 쓰다

더 많은 조사를 거쳐 이제 마침내 원래 질문에 답할 수 있습니다. /etc/crypttabinitramfs에는 존재하지 않습니다.기본적으로 잠금 해제됨스크립트는 이 위치를 사용하지 않고 /cryptroot/crypttab대신 사용합니다.

initramfs 에서처럼 /etc/crypttab사용하려면 /cryptroot/crypttab디렉터리에 다음 스크립트를 생성 /etc/initramfs-tools/hooks하고 실행 가능하게 만드세요.

#!/bin/sh
cp /etc/crypttab "${DESTDIR}/cryptroot/crypttab"
exit 0

마지막으로, 빈 비밀번호를 사용하여 LUKS 장치를 자동으로 잠금 해제하면 암호화 목적이 무효화된다는 점에 유의하십시오. 암호화를 전혀 사용하지 않는 것만큼 안전하지 않습니다.

답변2

달리고 있지 않지만 sudo update-initramfs -u달리고 있다sudo update-initramfs -c -k -all

새 nvme 드라이브를 추가하고 암호화한 후 이 문제가 발생했습니다.

답변3

비슷한 문제가 있었는데 이 토론을 통해 위에서 언급한 후크를 추가하지 않고도 문제를 해결할 수 있었습니다.

암호화된 파티션은 sda3에 있지만 다른 파티션 구성표를 사용하여 이전 구성에서 데이터를 복사했기 때문에 /etc/crypttab은 다음과 같습니다.

sda6_crypt UUID={uuid] 루크 없음, 삭제

/etc/crypttab의 이름과 실제 파티션의 불일치로 인해 initramfs 이미지가 생성될 때 오류가 발생하는 것 같습니다(이는 새 커널을 설치할 때나 다른 업데이트를 수행할 때도 마찬가지입니다). 저는 보지 못했습니다. 이렇게 하면 initramfs(/cryptroot/crypttab에 있음)의 파일이 비어 있습니다(0바이트). 누락된 파일로 인해 부팅 프로세스가 중단됩니다. /etc/crypttab을 다음으로 수정하세요.

sda3_crypt UUID={uuid} 루크 없음, 삭제

문제를 해결했습니다. 물론 initramfs에서 경고음이 울리면 다시 생성해야 합니다.

sudo update-initramfs -u

하지만 향후 업데이트는 정상적으로 작동할 것입니다.

답변4

저는 (이전에 화상을 입었기 때문에) 다시 한 번 확인합니다. (이것은 우분투 20.04이지만 대답은 22.04에도 관련이 있습니다)

update-initramfs -c -k all내가하고 mkdir /tmp/x; cd /tmp/x; unmkinitramfs -v /boot/initrd.img-$(uname -r) .확인한 후에 /tmp/x/main/cryptroot/crypttab. 내부는 비어 있습니다.

내 솔루션은 /etc/cryptsetup-initramfs/conf-hook키 파일 스키마를 편집하고 생성하는 것이었습니다. 내 최종 구성은 KEYFILE_PATTERN=/etc/cryptsetup-keys.d/*.keyconf-hook 및 myroot UUID="8481c1f8-91d4-469d-9132-12d3948f503a" /etc/cryptsetup-keys.d/root.key luks,discard/etc/crypttab입니다. 열쇠,줄 끝 개행 문자 없음당연하지/etc/cryptsetuyp-keys.d/root.key

이 작업을 수행한 후 initramfs의 압축을 풀면 main/cryptroot/crypttab정상적으로 보이는 파일이 표시되고 키 파일(새 파일 이름 포함)이 복사됩니다 main/cryptroot/keyfiles/myroot.key("myroot"는 initramfs의 crypttab에 있는 모든 항목과 일치함).

관련 정보