저는 수년간 열렬한 Windows 및 Mac 사용자였습니다. 최근 기술 기업가들과 정부 관료들 사이의 애정이 커지면서 저는 오픈 소스의 세계에 합류하게 되었습니다. 시작 프로세스를 파악할 때까지 전환은 순조롭게 진행되었습니다. 나는 이 문제로 며칠 동안 어려움을 겪었습니다. 나는 완전히 울기 시작하고 팀 쿡의 품으로 돌아가기 전에 여기 있는 똑똑한 사람들에게 도움을 요청해야 한다고 생각했습니다.

배경

내 Linux 배포판은 암호화된 LVM(sda5_crypt)이 있는 단일 파티션에 설정되어 있습니다. 부팅 파티션에는 두 개의 커널 이미지(4.19 및 5.9)를 사용할 수 있습니다. sudo apt-get purge --auto-remove lvm2crypttab 및/또는 fstab 파일을 수행하거나 사용하는 동안 내 initrd 이미지가 엉망이 되었을 수 있습니다.sudo update-initramfs -u.

큰 문제

이제 GRUB가 커널 5.9를 메모리에 로드한 후 initramfs 쉘에 들어가 커널이 검색하는 /dev/sdd등의 작업을 수행합니다. 또한 "미디어를 찾을 수 없습니다" 등이 표시 vgscan됩니다 . 틀림없이! 배포판이 셸에서 나올 수 없기 때문에 이것은 이상합니다 .pvscan/dev/sddsda5exit

시도해 볼 수 있는 솔루션

나는 시도했지만 실제로는 성공하지 못했습니다.일시적으로root=GRUB 부트 로더의 매개변수를 변경하고 initrd 이미지(4.19)를 initrd 이미지(5.9)로 복사하는 등의 작업을 수행합니다. 아마도 여기서 다행스러운 점은 GRUB 부팅 메뉴에서 커널 4.19 이미지를 선택할 때 디스크의 암호를 성공적으로 해독하고 배포판 셸로 부팅할 수 있었다는 것입니다. 하지만 커널 4.19를 로드했는데 도대체 어떻게 update-initramfs커널 5.9를 사용해야 합니까? ! 트와일라잇 존(Twilight Zone) 같은 느낌이었어요.

Linux 베테랑의 조언을 주시면 감사하겠습니다!

답변1

나는 성공했다! 문제를 해결하는 단계는 다음과 같습니다. 이것이 미래에 같은 곤경에 처한 누군가에게 도움이 되기를 바랍니다.

  • 내 경우처럼 다른 커널을 설치하는 등 시스템에 접근하는 다른 방법이 있다면 그럴 필요가 없습니다 chroot. GRUB 메뉴에서 커널을 선택하고 시스템에 로그인하기만 하면 됩니다. 터미널 쉘에 들어갈 수 있습니다.

  • 모든 블록 장치의 UUID를 가져오는 데 사용됩니다 sudo blkid. 파일을 열고 /etc/fstab커널 이름 설명자(즉, /dev/sda1)를 UUID로 바꿉니다. 커널 이름 설명자는 영구적이지 않기 때문에 이는 중요합니다. 또한 MBR/GPT 파티션 유형(인용하다). 모든 것이 말되고 완료되면 다음과 같아야 합니다.

UUID=XXXXXX-XXXXXX-XXXXX-XXXX-XXXXXX /      ext4    errors=remount-ro 0    $

UUID=XXXXXX-XXXXXX-XXXXX-XXXX-XXXXXX /boot  ext2    defaults          0    $

UUID=XXXXXX-XXXXXX-XXXXX-XXXX-XXXXXX none   swap    sw                0    $
  • 이제 /etc/crypttab파일을 엽니다. 여기에는 암호화 장치당 하나의 항목만 있어야 합니다. 첫 번째 열은 device mapper's name(인용하다) UUID가 아니어야 합니다(fstab 파일에서와 같이). blkid인쇄물에서 장치 매퍼의 이름을 찾을 수 있습니다 . 일반적으로 로 나열됩니다 /dev/mapper/sda5_crypt. 그러나 crypttab 파일의 UUID는 다음과 같습니다.아니 똑같다blkid온라인에서 발견된 바와 같습니다 dev/mapper/sda5_crypt. 대신 blkid사용해야 하는 올바른 UUID는 crypttab 파일 줄에서 찾을 수 있습니다 /dev/sda5. 결국 다음과 같은 결과를 얻게 됩니다.

sda5_crypt UUID=XXXXXX-XXXXXX-XXXXX-XXXX-XXXXXX none luks,discard
  • 그런 다음 부팅 디렉터리(예: /boot)로 이동합니다. vmlinuz 파일(ievmlinuz-5.9.0-0.bpo.5-amd64)을 백업합니다.

  • 이제 특정 커널에 대한 vmlinuz 파일을 업데이트하는 명령을 실행해야 합니다(인용하다). u는 "업데이트"를 의미합니다. v는 "Verbose"(모든 것을 실시간으로 인쇄)를 나타냅니다. k는 initramfs 이미지를 빌드할 특정 "커널" 버전을 나타냅니다. 주문하다:

sudo update-initramfs -uvk 5.9.0-0.bpo.5-amd64
  • 이제 긴 소음을 검색해 보세요. 이미지 생성 시 오류가 없는지 확인하세요. 그렇지 않은 경우 시스템을 재부팅하면 짜잔!

관련 정보