새로운 LUKS 암호화 루트 파티션 부팅 문제

새로운 LUKS 암호화 루트 파티션 부팅 문제

Ubuntu 18.04를 설치할 때 18.04가 처음 출시되었을 때(출시 몇 달 전) 루트 파티션을 암호화하지 않았으므로 어떤 이유에서인지 지금 암호화하기로 결정했습니다.

이 질문이 이전에 요청된 적이 있다는 것을 알고 있습니다(실제로 요청된 질문 중 일부에 대한 링크를 게시했습니다!). 그러나 이 질문은 저를 대상으로 하기 때문에 게시하는 것이므로 제 질문을 삭제하지 마십시오. 정말 감사합니다. , 친애하는 중재자 및 관리자 여러분. 나는 나와 같은 문제를 가진 사람을 찾지 못했고 몇 가지 주요 Linux 작업을 수행한 후에 이 문제를 스스로 알아낼 수 없었기 때문에 도움을 요청해야 했습니다. (지난 11년간의 GNU/Linux-*nix 경험에서 이런 일은 그다지 많이 발생하지 않았습니다. 99%의 경우 나와 친애하는 Google이 내 문제를 해결/해결했습니다... 아시다시피 문제는 다음에서 자주 발생합니다. 리눅스! :D)

어쨌든, 이 작업을 수행하기 위해 취한 단계는 다음과 같습니다. (18.04 라이브 USB에서)

sudo cryptsetup -v -y -c aes-xts-plain64 --key-size 512 --hash sha512 luksFormat --uuid=049172c6-5376-4b9c-bd27-b503b6f25423 /dev/sda5
sudo cryptsetup -v luksOpen /dev/sda5 myroot
sudo mkfs.ext4 -m 0 /dev/mapper/myroot
#Then for copying the contents of my root partition I used dd:
sudo dd if=/dev/sda6 of=/dev/mapper/myroot bs=4M
#/dev/sda6 is a duplicate of my original sda5 root...
#After I dd'ed, there was unallocated space on the partition so I did a check on it in GParted (Which also applies cryptsetup resize command to it)
sudo mount /dev/mapper/myroot /media/myroot #I created /media/myroot beforehands

그런 다음 GRUB를 사용하여 이 새로운 암호화된 루트를 부팅하는 데 도움이 될 것이라고 생각되는 많은 작업을 수행했으며 검색을 통해 더 많은 것을 발견했습니다. 그래서 저는 기본적으로 다음 링크에서 사람들이 제안한 모든 것을 시도했습니다.

https://askubuntu.com/questions/1134998/booting-19-04-from-luks-system-drive

Mint 18에서 부팅할 때 initramfs를 설정하면 luks 비밀번호를 묻는 메시지가 표시되나요?

https://askubuntu.com/questions/1006867/cant-get-ubuntu-to-boot-from-luks-lvm-group-on-external-drive-on-imac-with-re

https://askubuntu.com/questions/729673/ubuntu-full-disk-encryption-with-encrypted-boot

https://askubuntu.com/questions/450895/mount-luks-encrypted-hard-drive-at-boot

https://askubuntu.com/questions/1082131/how-to-get-grub-to-boot-from-a-newly-encrypted-partition

(그리고 더 많은 링크)

fdisk -l의 출력은 다음과 같습니다.

Disk /dev/sda: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: FE0857E8-E0DE-40A0-96C5-C4FEC80B8742

Device         Start       End   Sectors   Size Type
/dev/sda1       2048    534527    532480   260M EFI System
/dev/sda2     534528   1067007    532480   260M EFI System
/dev/sda3    2582528   4630527   2048000  1000M Lenovo boot partition
/dev/sda4    4892672 259438591 254545920 121.4G Microsoft basic data
/dev/sda5  259438592 332343295  72904704  34.8G Linux filesystem
/dev/sda6  332343296 400898047  68554752  32.7G Linux filesystem
/dev/sda7  410068992 425521151  15452160   7.4G Microsoft basic data

내 UUID는 다음과 같습니다.

/dev/sda5:
LUKS UUID: 049172c6-5376-4b9c-bd27-b503b6f25423
Partition UUID: 1db5df50-7000-48df-a281-74bad5689ce1

/dev/sda6:
Former UUID which I recently changed it to a new one because it was same as sda5's due to using dd for copying root filesystem to new LUKS partition: 1db5df50-7000-48df-a281-74bad5689ce1
New UUID: 7876a195-7219-4440-892a-61b57c706443

마지막으로 GRUB에서 시도한 내용은 다음과 같습니다. http://s000.tinyupload.com/index.php?file_id=00739971820320475700

업데이트: 기본적으로 zip 파일에 제공된 구성을 사용하여 시작하려고 하면 위의 링크를 게시했습니다. 각 conf에 대해 다른 오류나 문제 등이 발생합니다... 링크에서 찾은 몇 가지 항목을 추가했을 때와 마찬가지로 암호화되지 않은 루트(sda6)의 /etc/default/grub 및 crypttab 및 fstab 및 grub.cfg에 게시되어 부팅되었으며 조용한 부팅 화면에서는 입력 luks PW를 요청했지만 줄 끝에서 뭔가를 묻는 메시지가 표시됩니다. "/!에 설치하려면 sda5 luks의 비밀번호를 입력하세요"와 같이, IDK(또는 좀 알고 있습니다!) 끝에 왜 /라고 적혀 있는지 알 수 있습니다! 그리고 단지 /가 아닙니다.

때때로 (구성 중 하나를 사용하여) sda5에서 부팅을 시도하면 grub에서 비밀번호를 요청하지만 busybox initramfs 프롬프트로 이동하거나 "1db5df50-7000-48df-a281에서 해당 장치를 찾을 수 없습니다."라는 메시지가 표시됩니다. - 74bad5689ce1" 또는 이와 유사한 것...

문제는 initramfs에 대한 그의 답변에서 친애하는 telcoM이 말한 내용이거나 conf 파일에 넣은 UUID와 UUID 중 하나라고 생각합니다. 하지만 initramfs 때문이길 바랍니다. telcoM의 제안을 시도해 보고 무슨 일이 일어나는지 살펴보겠습니다.

어떤 도움이라도 정말 감사하겠습니다. 설치 프로그램을 다시 설치하고 암호화하고 싶지 않습니다. 우분투에 뭔가가 필요하지만 다시 설치할 수 없습니다. 우분투 설치가 너무 완벽하고 GNU/Linux를 사용하고 있습니다. 많은 경험(현재 10년 이상)과 Linux를 많이 설치했기 때문에 멍청한 사람은 아니지만 내가 만든 모든 데이터, 구성 또는 사용자 정의를 잃을 수는 없습니다... 지원할 수 있다는 것을 알고 있습니다. 하지만 난 그냥... 그거 알아요?

답변1

생성된 LUKS 컨테이너는 기본 파티션과 크기가 동일 /dev/sda5하지만, 넣은 컨테이너가 그보다 작기 때문에 /dev/sda6LUKS dd컨테이너 의 이미지가 /dev/sda6완전히 채워지지 않습니다 /dev/mapper/myroot. 간단한 질문 resize2fs /dev/mapper/myroot만으로 문제를 해결할 수 있습니다.

당신은 자신이 하는 일에 대해 많이 이야기하지만 실제 증상에 대해서는 거의 이야기하지 않습니다.새로운 암호화된 루트로 부팅하려고 하면 정확히 무슨 일이 발생합니까?그렇다면 실제 오류 메시지는 무엇입니까? 암호화된 파티션의 존재를 인식하고 비밀번호를 묻는 메시지를 표시합니까, 아니면 UUID를 통해 이를 감지할 수 없습니까? 아니면 GRUB가 커널 및 initramfs 파일을 성공적으로 로드하지만 initramfs가 암호화된 루트 파일 시스템을 마운트하지 못합니까?

UEFI 기본 부팅 구성표를 사용하고 있는 것 같습니다. 괜찮습니다. 하지만 보안 부팅을 활성화할 가능성이 나타납니다. 그렇다면 /boot/grub/x86_64-efi메인이 로드된 후 GRUB가 다른 GRUB 모듈을 로드하는 것을 제한하므로 grubx64.efi필요한 모든 모듈을 메인 grubx64.efi부트 로더 파일에 구축해야 합니다.

grub-install실행되면 정상적으로 실행되며 GRUB 모듈을 빌드 grub-mkimage에 포함할 수 있습니다 . grubx64.efi일반적으로 grub-install필요한 최소 개수의 모듈만 포함됩니다. 즉,grub-install이때 감지된 필수 모듈만 실행. 따라서 루트 파일 시스템이 grub-install실행 시 암호화되지 않기 때문에 기본 제공 암호화 지원이 없기 때문에 GRUB가 실패할 수 있습니다 .

이 문제를 해결하려면 두 가지 옵션이 있습니다. 새 루트 파일 시스템으로 루트를 지정하고 이에 대한 유효한 항목이 있는 경우 ...를 사용하여 grub-installGRUB를 다시 설치할 수 있습니다. 또는 더 간단하게 패키지가 설치되어 /etc/crypttab있는지 확인하고 ESP( = 가능 ) 및 다음에서 기존 패키지를 교체할 수 있습니다 .grub-efi-amd64-signedgrubx64.efi/boot/efi/EFI/ubuntu/grubx64.efi/usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed

cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/ubuntu/grubx64-backup.efi
cp /usr/lib/grub/x86_64-efi-signed/grubx64.efi.signed /boot/efi/EFI/ubuntu/grubx64.efi

이는 보안 부팅을 최대한 수용하도록 서명된 사전 구축된 UEFI GRUB 부트로더이며모든 내장 GRUB 모듈이므로 기존 파일보다 훨씬 커야 합니다 grubx64.efi.

이 파일은 보안 부팅이 비활성화된 경우에도 grubx64.efi.signed작동해야 합니다 . 모든 GRUB 모듈이 내장되어 있다는 사실은 여전히 ​​유용합니다.

그러나 GRUB이 커널 및 initramfs 파일을 성공적으로 로드할 수 있다면 문제는 initramfs 단계에 있어야 합니다. Ubuntu에 패키지를 사용할 수 있는 경우 cryptsetup-initramfs해당 패키지가 설치되어 있는지 확인하세요. 그런 다음 새 암호화된 루트로 다시 chroot하고 /etc/crypttab유효한 항목을 설정하면 다음을 실행하여 update-initramfs -uinitramfs를 다시 빌드하십시오. chroot 내에서 실행하면 루트 파일 시스템이 암호화되었는지 여부를 자동으로 감지하고 필요한 도구와 스크립트를 initramfs 파일에 포함할 수 있습니다.

관련 정보