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パーティションを見ることを期待します。これが2番目のパーティションです。

# 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から直接ブートすることもできます。

関連情報