저는 수년간 열렬한 Windows 및 Mac 사용자였습니다. 최근 기술 기업가들과 정부 관료들 사이의 애정이 커지면서 저는 오픈 소스의 세계에 합류하게 되었습니다. 시작 프로세스를 파악할 때까지 전환은 순조롭게 진행되었습니다. 나는 이 문제로 며칠 동안 어려움을 겪었습니다. 나는 완전히 울기 시작하고 팀 쿡의 품으로 돌아가기 전에 여기 있는 똑똑한 사람들에게 도움을 요청해야 한다고 생각했습니다.
배경
내 Linux 배포판은 암호화된 LVM(sda5_crypt)이 있는 단일 파티션에 설정되어 있습니다. 부팅 파티션에는 두 개의 커널 이미지(4.19 및 5.9)를 사용할 수 있습니다. sudo apt-get purge --auto-remove lvm2
crypttab 및/또는 fstab 파일을 수행하거나 사용하는 동안 내 initrd 이미지가 엉망이 되었을 수 있습니다.sudo update-initramfs -u.
큰 문제
이제 GRUB가 커널 5.9를 메모리에 로드한 후 initramfs 쉘에 들어가 커널이 검색하는 /dev/sdd
등의 작업을 수행합니다. 또한 "미디어를 찾을 수 없습니다" 등이 표시 vgscan
됩니다 . 틀림없이! 배포판이 셸에서 나올 수 없기 때문에 이것은 이상합니다 .pvscan
/dev/sdd
sda5
exit
시도해 볼 수 있는 솔루션
나는 시도했지만 실제로는 성공하지 못했습니다.일시적으로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
- 이제 긴 소음을 검색해 보세요. 이미지 생성 시 오류가 없는지 확인하세요. 그렇지 않은 경우 시스템을 재부팅하면 짜잔!