Pop-OS를 시작할 수 없습니다: \EFI\BOOT\mm64.efi를 열 수 없습니다.

Pop-OS를 시작할 수 없습니다: \EFI\BOOT\mm64.efi를 열 수 없습니다.

Pop-OS 20.10을 설치하려고 했지만 여기 USB 이미지에서 부팅할 수 없습니다.https://pop.system76.com/. UEFI에서 받은 오류 메시지는 다음과 같습니다.

Failed to open \EFI\BOOT\mmx64.efi - Not Found
Failed to load image \EFI\BOOT\mmx64.efi: Not Found
Failed to start MokManager: Not Fond
Something has gone seriously wrong: import_mok_state() failed

askubuntu.com에는 이 문제를 해결하기 위한 이전 게시물이 있습니다.https://askubuntu.com/questions/1085550/cant-install-ubuntu-18-10-on-xps-15-efi-boot-mmx64-efi-not-found. 그러나 해결책은 만족스럽지 않습니다. 그들은 모두 grubx64.efi의 이름을 바꾸거나 .iso의 efi/boot 디렉터리에 있는 mmx64.efi 파일로 복사할 것을 제안했습니다. .iso 파일은 읽기 전용이므로 이 작업을 수행할 수 없습니다.

기기는 Thinkpad T570이고 기본 NVMe 드라이브에 Windows 10을 설치하고 WiFi 슬롯 SSD에 Arch를 설치했습니다.

답변1

하나ISO9660 파일 시스템물론 읽기 전용입니다.

USB 사용을 위해 혼합된 UEFI 부팅 가능 ISO 이미지의 경우에는 해당되지 않습니다.오직ISO9660 파일 시스템: 또한 내장된 보조 부팅 이미지와 내장된 파티션 테이블을 포함해야 하므로 단일 ISO9660 파일 시스템이 아닌 여러 파티션이 있는 HDD 이미지처럼 보입니다.

부팅할 수 없는 일반 ISO 이미지는 file다음 명령을 사용하여 쉽게 식별할 수 있습니다.

# file virtio-win-0.1.102.iso 
virtio-win-0.1.102.iso: ISO 9660 CD-ROM filesystem data 'virtio-win-0.1.102'

하지만 Pop_OS ISO 이미지로 이 작업을 수행하면 완전히 다른 결과를 얻게 됩니다.

# file pop-os_20.10_amd64_intel_18.iso 
pop-os_20.10_amd64_intel_18.iso: DOS/MBR boot sector; partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 484, 8192 sectors

파티션 테이블이 포함된 것 같습니다. 이 분할된 테이블을 사용하려면 다음을 사용할 수 있습니다 losetup -P.

# losetup -P /dev/loop0 pop-os_20.10_amd64_intel_18.iso
# ls -l /dev/loop0*
brw-rw---- 1 root disk   7, 0 Jun 27 23:10 /dev/loop0
brw-rw---- 1 root disk 259, 6 Jun 27 23:10 /dev/loop0p1
brw-rw---- 1 root disk 259, 7 Jun 27 23:10 /dev/loop0p2

# fdisk -l /dev/loop0
Disk /dev/loop0: 2.4 GiB, 2516582400 bytes, 4915200 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: dos
Disk identifier: 0x3c3f6082

Device       Boot Start     End Sectors  Size Id Type
/dev/loop0p1 *        0 4915199 4915200  2.4G  0 Empty
/dev/loop0p2        484    8675    8192    4M ef EFI (FAT-12/16/32)

첫 번째 파티션의 유형 ID는 0표준 MBR 파티션 유형 값이 없기 때문에 ISO9660 파일 시스템으로 등록됩니다. 첫 번째 파티션에는 이 ISO 하이브리드 이미지의 기본 ISO9660 콘텐츠가 포함되어 있습니다. 하지만 내부에는 또 다른 작은 파티션이 내장되어 있습니다.

첫 번째 파티션은 MBR에 따라 부팅 가능하므로 BIOS 호환 부팅 섹터가 포함될 가능성이 높습니다.

# file -s /dev/loop0p1
/dev/loop0p1: DOS/MBR boot sector; partition 2 : ID=0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,254,63), startsector 484, 8192 sectors

반면 UEFI는 MBR 스타일 부팅 플래그에 관심이 없습니다. 디스크가 MBR로 분할된 경우 UEFI는 0xefEFI 시스템 파티션을 나타내는 특수 유형 ID가 있는 FAT 파티션을 볼 것으로 예상합니다. 이것이 바로 두 번째 파티션입니다.

# file -s /dev/loop0p2
/dev/loop0p2: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 8192 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 6, sectors/track 32, heads 64, serial number 0x80bb708e, unlabeled, FAT (12 bit)

vfat이를 마운트하고 Linux가 이를 파일 시스템 유형(ExFAT를 제외한 모든 FAT 변형 포함) 으로 인식하는 것을 볼 수도 있습니다 .그리고 쓰기 가능으로 설치할 수 있습니다.

# mount /dev/loop0p2 /mnt
# grep /mnt /proc/mounts
/dev/loop0p2 /mnt vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 0

# tree /mnt
/mnt
└── efi
    └── boot
        ├── bootx64.efi
        └── grubx64.efi

# df -h /mnt
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop0p2    4.0M  2.7M  1.4M  67% /mnt

여기서는 실제로 특수 UEFI 이동식 미디어/폴백 부트로더 파일 이름과 일치하도록 이름이 변경된 bootx64.efiSecure Boot입니다 . GRUB의 UEFI 버전 shimx64.efi이기 grubx64.efi때문에 모든 모듈은 내장되어 있으며 인증서로 서명되어 있습니다. 공개 부분은 보안 부팅 요구 사항을 충족하기 위해 심에 내장되어 있습니다.

파일은 mmx64.efiFAT 파일 시스템의 사용 가능한 1.4M 공간에 잘 맞아야 합니다. 또는 보안 부팅을 비활성화한 경우 다음을 수행하여 mv grubx64.efi bootx64.efi보안 부팅 심(필수 mmx64.efi)을 제거하고 UEFI 버전의 GRUB로 직접 부팅할 수 있습니다.

관련 정보