LUKS를 사용한 루트 암호화: 루트 파티션을 찾을 수 없습니다.

LUKS를 사용한 루트 암호화: 루트 파티션을 찾을 수 없습니다.

내 유일한 디스크의 레이아웃은 다음과 같습니다. /dev/sda1 for the plaintext boot partition /dev/sda2 for the encrypted root partition

내 시스템은 ArchLinux이고 나는 따랐습니다.이 가이드루트 암호화를 설정합니다(lvm 없음, raid 없음). 내가 한 일은 다음과 같습니다. 실행 cryptsetup하여 /dev/sda2매핑했습니다./dev/mapper/cryptroot

/etc/fstab모습은 다음과 같습니다. UUID=of /dev/mapper/cryptroot / ext4 rw,relatime,data=ordered,discard 0 1 UUID=of /dev/sda1 /boot ext4 rw,relatime,data=ordered,discard 0 2

나는 /etc/default/grub한 줄을 다음과 같이 변경했습니다. GRUB_CMDLINE_LINUX="cryptdevice=UUID of /dev/sda2:cryptroot:allow-discards"

후크 에서는 /etc/mkinitcpio.conf다음과 같습니다. HOOKS="base udev autodetect modconf block encrypt filesystems keyboard fsck"

mkinitcpio -p linux마지막으로, 나는 각각 달리는 것을 잊지 않았습니다 grub-mkconfig -o /boot/grub/grub.cfg.

나는 이전에 루트 fs에 대한 암호화를 성공적으로 구성했기 때문에 내 작업을 매우 빠르게 열거했습니다. 그래서 결국 다음과 같은 오류가 발생합니다.

ERROR: device *UUID of /dev/mapper/cryptroot* not found. Skipping fsck. ERROR: unable to find root device *UUID of /dev/mapper/cryptroot* You are being dropped into recovery shell

이상한 점은 암호화되지 않은 것을 찾으려고 시도 하지만 비밀번호( 처음에 'on'할 /dev/mapper/cryptroot때 생성한 비밀번호)를 묻지 않는다는 것입니다. 따라서 애초에 나에게 비밀번호를 묻지 않았기 때문에 당연히 암호화되지 않은 블록 장치를 찾을 수 없습니다. 내가 무엇을 잘못 구성했는지 알려주시겠어요?cryptsetup/dev/sda2

답변1

cryptdevice=/dev/disk/by-uuid/<UUID_OF_LOGICAL_DEVICE>:cryptroot root=/dev/mapper/cryptrootGRUB의 추가 커널 옵션에 성공했습니다 .

UUID를 정확하게 복사하여 붙여넣지 않고 이 작업을 수행하는 경우(예: 콘솔/tty에서) 오타가 있을 수 있다는 점은 주목할 가치가 있습니다. 다음은 콘솔에서 입력하기에는 불편하지만 더 쉬울 수 있는 한 줄짜리 코드입니다.

sed "s/\(GRUB_CMDLINE_LINUX=\"\)/\1cryptdevice=\/dev\/disk\/by-uuid\/$(blkid -o value -s UUID /dev/<LOGICAL_DEVICE>):cryptroot root=\/dev\/mapper\/cryptroot/" /etc/default/grub > ~/grub.defaults && mv ~/grub.defaults /etc/default/grub

답변2

cpio 후크가 OS가 인식하지 못하는 파티션을 가리키는 /etc/crypttab이 누락되었습니다.

/etc/crypttab

%{UUID of /dev/mapper/cryptroot} / ext4 rw,relatime,data=ordered,discard,luks - 0 1

그런 다음 grub 업데이트를 다시 실행하십시오.

관련 정보