Вопрос или проблема
Следующее было выполнено в Ubuntu 24.04 TLS.
Недавно я отформатировал USB флешку, используя:
- parted и создал таблицу GPT с одним разделом, и
- mkfs для создания файловой системы ntfs в разделе.
Примечание: Я не знаю почему, но у моего USB нет «имени»… смотрите изображение ниже
Затем я скачал официальный образ Kali live и записал его на USB диск.
Когда я запускаю мой Acer Nitro 5, я нажимаю F2, вхожу в UEFI, и затем в вкладке/разделе загрузки я не вижу своего USB флешки.
Я также убедился, что включено меню загрузки, доступ к которому должен осуществляться с помощью клавиши F12.
Однако, при загрузке, когда я нажимаю F12, я не вижу никакого меню для выбора Kali OS, только Ubuntu, и я думаю, это потому, что моя USB флешка не распознается…
Дополнение: После этого я выяснил, что нужно копировать iso файл не как файл, а блок за блоком, сохраняя его внутреннюю файловую систему и данные, используя команду dd
. Я решил разделить USB диск на два раздела (Kali ext4, Хранилище ntfs). Один для Kali Live, и другой для хранения.
Мне удалось продублировать данные в этом разделе.
Однако это все равно не распознается при загрузке…
Хотя система UEFI может поддерживать загрузку с файловых систем NTFS, спецификация этого не требует. Единственный тип файловой системы, гарантированно поддерживаемый для загрузки даже самыми старыми версиями спецификации UEFI, — это FAT32. Более новые версии спецификации расширяют требования к поддержке для некоторых других версий файловой системы FAT, так что часто можно видеть, как системы UEFI загружаются с файловых систем FAT16 или FAT12.
Для съемных носителей, чтобы они были загрузочными на системе UEFI с 64-разрядным x86, должна быть файловая система (FAT32 или другой тип, который прошивка UEFI может понять), содержащая файл, чей нечувствительный к регистру путь можно выразить в стиле Windows как \EFI\BOOT\BOOTX64.EFI
.
Кажется, ваша USB флешка содержит директорию \EFI\
, но, поскольку тип файловой системы ext4
, она не будет распознана прошивкой UEFI.
Когда вы записали образ на USB флешку с помощью dd
, он изначально содержал два раздела: большой, содержащий основные данные образа ISO как файловую систему ISO9660, и меньший FAT раздел для загрузчика UEFI. Это известно как “изогибридный” образ.
Посмотрите сами:
losetup -P /dev/loop0 kali-linux-2024.4-live-amd64.iso
fdisk -l /dev/loop0
Disk /dev/loop0: 4,7 GiB, 5041469440 bytes, 9846620 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: 0xa8d8652c
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 * 64 9837827 9837764 4,7G 17 Hidden HPFS/NTFS
/dev/loop0p2 9837828 9846019 8192 4M 1 FAT12
file -s /dev/loop0p1
/dev/loop0p1: ISO 9660 CD-ROM filesystem data 'Kali Live'
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, serial number 0x674acf41, unlabeled, FAT (12 bit)
Судя по вашему описанию, ваш USB диск больше не содержит этого малого присущего для UEFI загрузочного процесса FAT раздела.
Тип идентификатора раздела “Hidden HPFS/NTFS” используется только потому, что таблица разделов MBR-стиля не имеет идентификатора типа для файловых систем ISO9660. Поскольку Linux определяет файловые системы по содержимому разделов, а не по идентификаторам типа в таблицах разделов, использование неправильного идентификатора не оказывает никакого эффекта на практике.
(Образ также содержит isolinux
: загрузчик BIOS-стиля, который может вызываться двумя способами. Он включает один набор кода загрузки, встроенный в MBR для загрузки в стиле BIOS с USB носителей, и другой в ISO9660-соответствующей загрузочной области в случае, если образ записан на настоящий DVD и загружен оттуда. Но ваша система, по-видимому, разумно настроена на поиск только UEFI-загрузчиков, и поэтому игнорирует это.)
Вы, вероятно, могли бы восстановить возможность загрузки вашего USB флешки через UEFI, удалив NTFS-раздел, создав малый раздел (достаточный для того, чтобы содержать содержимое файла efi.img
), задав его тип как FAT12 и записав содержимое efi.img
в него с помощью dd
. Возможно, важно использовать конкретно слот раздела №2 для этого. После этого вы могли бы использовать любые дальнейшие слоты разделов по своему усмотрению.
.
Ответ или решение
Проблема с распознаванием USB-накопителя с образом Kali Live на уровне BIOS/UEFI является довольно распространенной, особенно когда речь идет о выполнении двойной загрузки на современных компьютерах. Ваша ситуация связана с использованием Acer Nitro 5, и мы обсудим наиболее вероятные причины и способы их устранения, включая создание загрузочного USB-накопителя и конфигурацию UEFI.
Теория
Для успешной загрузки через UEFI существуют определенные требования к структуре файловой системы на USB-накопителе. Основное правило заключается в том, что для загрузки с носителя на 64-разрядной x86 системе UEFI должна быть доступна файловая система типа FAT32, содержащая файл \EFI\BOOT\BOOTX64.EFI
. Именно этот файл UEFI ищет при попытке загрузиться с USB-устройства.
ISO-образ системы, такой как Kali Linux, часто содержит два раздела:
- ISO9660 – основной раздел, содержащий данные дистрибутива.
- FAT12/FAT16/FAT32 – небольшой раздел для обеспечения загрузки в режиме UEFI.
Использование ext4, как в вашем случае, препятствует распознаванию UEFI, поскольку эта файловая система не входит в список поддерживаемых спецификацией UEFI.
Пример
В вашей ситуации, где USB-накопитель был отформатирован с использованием parted и mkfs с созданием GPT таблицы и файловой системы NTFS, проблема возникает из-за того, что такая конфигурация не соответствует требованиям UEFI для загрузки. Когда вы использовали команду dd
для записи ISO-образа, вы могли не учитывать необходимость присутствия корректного файлового раздела (FAT) для UEFI.
Файловый менеджер Linux, такой как losetup
и fdisk
, может помощью диагностировать текущее состояние вашего образа и USB-накопителя. В приведённом примере losetup
и fdisk
показано, что образ на самом деле имеет две части: основную на ISO9660 и маленькую вторичную на FAT12, которая, возможно, была стерта при создании новых разделов.
Применение
Для разрешения проблемы следуйте следующим шагам:
-
Стереть текущие разделы:
Убедитесь, что все созданные вами разделы на USB-накопителе удалены, чтобы избежать конфликтов. -
Записать образ ISO напрямую:
Используйте командуdd
для поблочной записи образа. Например:sudo dd if=kali-linux-2024.4-live-amd64.iso of=/dev/sdX bs=4M status=progress && sync
где
/dev/sdX
– это идентификатор вашего USB-накопителя. -
Подтверждение записанной структуры:
После записи проверьте, что структура разделов осталась правильной, используяfdisk -l /dev/sdX
для проверки. -
Проверить настройки UEFI:
Убедитесь, что Secure Boot отключен, так как это может мешать загрузке неподписанных UEFI приложений. Включите поддержку USB Boot, если такой опции нет, или следуйте спецификациям вашей системы для добавления USB-накопителя в список загрузки. -
Проверка загрузочного меню:
При загрузке компьютера используйте F12 для доступа к меню загрузки. Если ваш USB не распознается, повторно проверьте его структуру.
Если эти шаги оказались неэффективными, рассмотрите возможность использования специализированных утилит, таких как Rufus
или balenaEtcher
, под Windows/MacOS для создания USB-носителя, что иногда может представить иной подход к проблеме и решить вопросы совместимости, которые трудны для устранения вручную.
Таким образом, соблюдение всех этих рекомендаций и получения полной картины о структуре вашего USB-накопителя должно помочь UEFI корректно распознвать и загружаться с образа Kali Linux.