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は0xef
EFIシステムパーティションを表す特別なタイプ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.efi
Secure Bootです。 GRUBのUEFIバージョンshimx64.efi
なのでgrubx64.efi
、すべてのモジュールが組み込まれており、証明書で署名されています。公開部分は、セキュアブート要件を満たすためにシムに組み込まれています。
ファイルは、mmx64.efi
FATファイルシステムの利用可能な1.4Mスペースに適している必要があります。または、セキュアブートを無効にした場合は、次の手順を実行してmv grubx64.efi bootx64.efi
セキュアブートシム(必須mmx64.efi
)を削除し、UEFIバージョンのGRUBから直接ブートすることもできます。