LUKS를 사용하여 커널을 업데이트한 후 Ubuntu 21.04가 "초기 램디스크 로드 중"에서 멈춥니다.

LUKS를 사용하여 커널을 업데이트한 후 Ubuntu 21.04가 "초기 램디스크 로드 중"에서 멈춥니다.

새로 설치하여 두 번 복사했습니다. 처음에는 설정이 제대로 작동했지만 커널 업데이트를 적용할 때 재부팅 시 시스템이 중단되었습니다. GRUB에서 제공하는 이전 커널을 선택하면 잘 작동합니다.

시스템 세부정보:

  • XPS 13 9380
  • i5-8265U
  • BIOS 버전 1.15.0
  • 마이크로코드 버전은 "0xea"로 보고됩니다. apt list --installed | grep microcode 출력: intel-microcode/hirsute-updates, hirsute-security, 이제 3.20210608.0ubuntu0.21.04.1 amd64 [설치됨, 자동]
  • 보안 부팅이 감사 모드로 설정된 것 같습니다.
  • 우분투 마오마오(위에서 언급한 바와 같이)
  • LiveUSB의 LUKS 파티션에 설치
  • 현재 5.11.0-37-generic을 사용하고 있지만 이전 5.11 커널을 사용하여 복사하기도 했습니다. 확실히 그럴 것 같다변화버전 자체가 아닌 커널 버전에서. 5.11.0-36-generic은 특이한 GRUB 옵션 없이 시작됩니다.

내가 시도한 GRUB 설정절대적으로하지:

  • dis_ucode_ldr 및 Mitigations=off(함께 또는 별도로);
  • 스키마가 설정되지 않았습니다.
  • 조용한 물보라 제거
  • 다시 덮다
  • 디버깅(출력 변경 없음)
  • "initrd /initrd.img-5.11.0-37-generic" 줄 뒤의 모든 형태의 에코

그리고 그 모든 순열.

initrd.img 및 initrd.img.old(부팅할 수 있음) 파일에 대한 lsinitramfs는 확실한 후보를 표시하지 않습니다.

마이크로코드나 cryptsetup과 관련이 있는 것 같지만, 디버깅이 정보를 제공하지 않고 36으로 부팅하면 dmesg가 정상적인 부팅을 보고하기 때문에 약간 당황스럽습니다.

어떤 아이디어가 있나요? 관련 버그가 있는 것 같은데 완전히 재현되지는 않았습니다.

답변1

해결책: 사용

MODULES=dep

내부에 /etc/initramfs-tools/initramfs.conf.

다시 빌드하고( 5.11.0-37-generic사용 중인 커널 버전으로 교체):

update-initramfs -c -k  5.11.0-37-generic

OP와 동일한 문제가 발생했습니다. 며칠 전에 업데이트하고 재부팅한 후 시스템이 "초기 램디스크 로드 중..." 메시지와 함께 정지되고 다른 출력은 없습니다.

하드웨어는 거의 동일하지만 CPU는 i7-8565U입니다. OP에 나열된 것과 동일한 소프트웨어 구성.

다른 게시물아래 제안 사항:

이 문제는 크기 제한으로 인해 로드할 수 없는 initrd.img대용량 파일(~100MB) 로 인해 발생합니다 . 이 문제는 약 55MB의 파일 생성 MODULES=most으로 전환하여 해결할 수 있습니다 .MODULES=depinitrd.img

답변2

오늘도 이 문제가 발생하여 해결하는 데 몇 시간이 걸렸습니다. 해결책은 약 160MB이고 너무 클 수 있는 부팅 이미지를 다시 빌드하는 것입니다(Sorin의 설명대로). 그러나 그렇게 하는 과정에는 몇 가지 설명이 필요합니다.

기계

  • 델 XPS 9550
  • 우분투 20.04
  • UEFI 부팅 파티션:nvme0n1p2
  • LUKS 암호화 기본 파티션:nvme0n1p3

징후

시작할 때 LUKS 비밀번호 프롬프트 대신 grub 메뉴가 나타납니다. Ubuntu빈 화면에서 결과를 선택합니다 . 복구 모드로 부팅을 시도하면 정지되기 전에 "초기 램디스크 로드 중" 상태가 됩니다. Bereded(OP)와 마찬가지로 여러 GRUB 구성 플래그와 BIOS 설정을 시도했지만 소용이 없었습니다.

해결책

USB로 부팅하고, initramfs-tools 구성을 변경하고, 를 다시 빌드해야 합니다 initrd.img.

  1. 라이브 USB에서 부팅
  2. 기본 파티션 암호 해독/잠금 해제( nvme0n1p3암호화된 파티션 이름으로 교체)
    sudo cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt
    
  3. 암호화된 파티션을 에 마운트하고 /mnt, 부팅 파티션을 에 마운트한 /mnt/boot다음 chroot를 실행합니다./mnt
    vgscan --mknodes
    vgchange -ay
    sudo mount /dev/mapper/vgubuntu-root /mnt # may be named ubuntu--vg-root depending on your system
    sudo mount /dev/nvme0n1p2 /mnt/boot  # replace nvme0n1p2 with your boot partition
    for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
    sudo chroot /mnt
    
  4. chroot 쉘에서 열고 편집하고 다음을 /etc/initramfs-tools/initramfs.conf설정하십시오.
    MODULES=dep
    
  5. 예를 들어 현재/최신 initrd.img.
    mv /boot/initrd.img-5.13.0-44-generic /boot/initrd.img-5.13.0-44-generic.bak
    
  6. 이미지를 다시 빌드합니다(현재 커널 버전으로 교체).
    update-initramfs -c -k 5.13.0-44-generic
    
  7. 그럽 업데이트
    update-grub
    
  8. 종료하고 재부팅하면 이제 재구성된 이미지에서 부팅할 수 있습니다.

문제 해결

호출할 때 매핑된 장치에 대해 지정하는 이름이 cryptsetup luksOpen중요합니다. 이 이름은 crypttab에 구성된 볼륨 이름과 일치해야 합니다(아직 파티션을 잠금 해제/마운트하지 않았기 때문에 아직 볼 수 없습니다). 관례적으로는 <device_name>_crypt. 이것이 올바르지 않으면 런타임 시 다음 경고를 받게 됩니다 update-initramfs.

cryptsetup: WARNING: target '<Device UUID>' not found in /etc/crypttab

자원

답변3

(올바른) LUKS 비밀번호를 입력하고 Enter 키를 누르면 마치 dm-crypt 프롬프트가 있는 것처럼 정상적으로 부팅됩니다.

(현재 Debian(netinstall) 및 Alpine Linux에서 이러한 상황을 경험했습니다.)

관련 정보