물리적 볼륨을 추가하고 논리적 볼륨을 확장한 후 grub이 실패함

물리적 볼륨을 추가하고 논리적 볼륨을 확장한 후 grub이 실패함

몇 년 전 저는 500GiB 하드 드라이브에 데비안을 설치했습니다. 설치 중에 파일 시스템을 암호화하기로 선택했습니다. 그래서 설치 프로그램은 암호화되지 않은 작은 부팅 파티션(grub 구성이 남아 있는 것으로 추측됨)과 대규모 LUKS 암호화 파티션을 생성했습니다. 이 대규모 암호화 파티션은 볼륨 그룹의 유일한 구성원인 물리 볼륨으로, 여기에 두 개의 논리 볼륨(스왑용 하나와 기타 모든 볼륨용)이 생성됩니다. 이 구성에서는 제가 별로 고민하지 않고도 몇 년 동안 모든 것이 잘 작동했습니다.

며칠 전 새로운 2TiB 하드 드라이브를 구입하고 시스템을 해당 드라이브로 마이그레이션하기로 결정했습니다. 간단히 "cat /dev/sda > /dev/sdb"를 사용하여 기존 하드 드라이브를 새 하드 드라이브에 조금씩 복사했습니다. 그 후 내 컴퓨터는 새 하드 드라이브에서 제대로 부팅되었지만 기존 하드 드라이브에서 복사한 파티션 테이블이 있었기 때문에 크기는 500GiB에 불과했습니다. 그래서 더 크게 만들려고 노력했습니다.

먼저 그 위에 새로운(세 번째) 파티션을 만들었습니다. 그 위에 물리 볼륨을 만들었습니다. 나는 이전 파티션과 동일한 비밀번호를 사용하여 ("cryptsetup" 명령을 사용하여) 이 물리적 볼륨을 암호화했습니다. 이 물리 볼륨을 기존 볼륨 그룹에 추가했습니다. 기존 논리 볼륨을 확장하고 그 위에 파일 시스템도 확장했습니다. 나는 CD에서 부팅된 Knoppix를 사용하여 이 모든 작업을 수행했습니다. grub 구성을 변경하지 않았습니다. 그런 다음 (저는 아직 Knoppix에 있습니다) 암호화된 두 파티션 모두에서 파일 시스템을 마운트해 보았습니다. 잘 작동했습니다. 하나의 파일 시스템이고 2TiB 크기이며 모든 파일이 거기에 있습니다.

그런 다음 이 하드 드라이브에서 부팅을 시도합니다. Grub은 LUKS 암호화 파티션의 비밀번호를 입력하라고 요청했지만 다음 메시지와 함께 실패했습니다.

부팅 오류

이 메시지에서 우리는 uuid "EFc551-(...)"를 볼 수 있습니다. 이 uuid가 무엇인지 모르겠습니다.

grub이 시작 시 실행하는 명령은 다음과 같습니다(사진은 흐릿하지만 텍스트를 이해하시기 바랍니다):

그럽 명령

이 명령에서 볼 수 있는 문자열 "9e5881c3(...)"은 이전 암호화된 파티션의 UUID입니다. 이제 나는 두 가지를 달성하고 싶습니다.

  • 무슨 일이 일어났는지 이해하고,
  • 2TiB 하드 드라이브에서 부팅할 수 있습니다.

이 두 가지 목표를 달성하도록 도와주실 수 있나요?


마지막 해결책

마르마렉의 생각은 옳았습니다.

처음에 생각했던 것과는 달리, 내 설정(기본 데비안 설정인 것 같습니다)에서 grub은 LVM과 아무 관련이 없습니다. Grub은 암호화되지 않은 작은 부팅 파티션에서 부팅하며, 파티션의 init는 암호화된 LVM 볼륨을 해독하고 마운트하는 역할을 담당합니다. 따라서 grub이 아닌 initrd를 수정할 필요가 있습니다. Marmarek은 update-initramfs를 사용하여 Knoppix에서 다시 생성할 것을 제안했지만 작동하지 않았습니다. update-initramfs에 의해 생성된 initrd에는 /conf/conf.d/cryptroot 파일(원본 initrd에 파일이 있음)이 누락되어 파티션의 암호를 전혀 해독하지 않았습니다. update-initramfs 명령을 실행할 때 파티션이 암호화되지 않고 LVM 볼륨이 활성화되지 않기 때문에 이 파일이 누락된 것 같습니다.

그래서 원본 initrd 이미지의 압축을 풀고 다음 줄과 같이 init 파일에 넣었습니다.

cryptsetup luksOpen UUID=some-uuid udisks-luks-uuid-this-uuid

cryptsetup에 대한 마지막 인수가 정확히 내가 제공한 것과 일치해야 하는지는 모르겠습니다. 저는 단지 몇 가지 예에서 본 것을 모방하고 있을 뿐입니다.

이 줄은 /dev가 마운트된 init 내부에 배치되어야 합니다. 저는 시행착오를 통해 이 위치를 찾았습니다. 해당 줄 뒤에 오는 내용은 다음과 같습니다.

run_scripts /scripts/init-top

이 수정된 initrd를 패키징하고 컴퓨터를 부팅하면 두 개의 비밀번호를 묻는 메시지가 표시되고 제대로 작동합니다.

답변1

이 uuid "EFc551-(...)"는 아마도 2TB 디스크(즉, 암호화된 PV)일 것입니다. 두 번째 PV에 대해 어떻게든 initramfs에 알려야 합니다. 아마도 update-initramfs가 다음과 같이 할 것입니다(knoppix에서): (디스크가 /mnt/disk에 마운트되어 있다고 가정)

cp -a /dev/* /mnt/disk/dev/
chroot /mnt/disk
마운트 /proc
마운트 /sys
update-initramfs -u -k 모두

답변2

암호화된 볼륨의 올바른 UUID를 가리키도록 2TB 하드 드라이브의 /etc/fstab을 업데이트했습니까?

암호화된 볼륨의 UUID가 무엇인지 모르는 경우 cmd를 실행하여 확인할 수 있습니다.

cryptsetup -v 상태/dev/

올바른 UUID를 가리키도록 /etc/fstab 및 grub 구성을 업데이트해야 합니다.

grub과 fstab이 올바른 드라이브를 가리키도록 하는 문제라고 가정하면 문제가 해결될 것입니다.

관련 정보