Не удалось загрузить Pop -ОС :не удалось открыть \EFI\BOOT\mm64.efi

С помощью GNUfindвы можете сделать это, ища файлы, которые не соответствуют «ни одному биту, установленному для владельца»:

find. ! -perm /700

То же самое, например, в. FreeBSDfind— это

find. ! -perm +700

Оба они работают одинаково. -perm /700или -perm +700совпадают, если установлен какой-либо из битов разрешения владельца; !отрицает это, поэтому ! -perm /700или ! -perm +700совпадают, если ни один из битов разрешения владельца не установлен. Остальные биты игнорируются.

0
27.06.2021, 22:45
1 ответ

Файловая система ISO9660 , безусловно, предназначена только для чтения -, да.

Но загрузочный ISO-образ UEFI, гибридизованный для использования через USB, не просто файловая система ISO9660, :он также должен содержать встроенный в него вторичный загрузочный образ и встроенную таблицу разделов, это похоже на образ жесткого диска с несколькими разделами, а не на одну файловую систему ISO9660.

Обычный не -загрузочный 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'

Но сделайте это с ISO-образом Pop _OS, и вы получите нечто совершенно другое:

# 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)

Идентификатор типа первого раздела зарегистрирован как 0, поскольку для файловой системы ISO9660 не существует стандартного значения типа раздела MBR. Первый раздел содержит основное содержимое ISO9660 этого гибридного образа ISO. Но внутри него встроена еще одна, небольшая перегородка.

Обратите внимание, что первый раздел является загрузочным в соответствии с 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 хочет видеть раздел FAT со специальным идентификатором типа 0xef, чтобы указать системный раздел EFI. Это именно то, что представляет собой второй раздел.

# 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)

Вы даже можете смонтировать его и увидеть, что Linux идентифицирует его как vfatтип файловой системы (, который включает все варианты FAT, кроме ExFAT ). И его можно монтировать как записываемый:

# 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

Здесь bootx64.efiна самом деле является безопасной загрузкой shimx64.efi, переименованной в соответствии со специальным съемным носителем UEFI/имя файла резервного загрузчика. А grubx64.efi— это UEFI-версия GRUB,со всеми модулями, встроенными и подписанными сертификатом, общедоступная часть которого встроена в оболочку для удовлетворения требований безопасной загрузки.

mmx64.efiдолжен прекрасно вписаться в 1,4 М свободного места в этой файловой системе FAT. Или, если вы отключили безопасную загрузку, вы можете выполнить mv grubx64.efi bootx64.efi, чтобы устранить прокладку безопасной загрузки (, которая вызывает mmx64.efi), и загрузиться непосредственно в версию UEFI GRUB.

1
28.07.2021, 11:21

Теги

Похожие вопросы