Как определить, является ли ISO гибридом?

Согласно этому: http://en.wikipedia.org/wiki/ISO_image

"Более свежим примером является выпуск гибридных файлов ISO, которые можно загружать или запускать как с дисков BD, так и с DVD и USB-накопителей, когда образ записывается на любое из этих устройств хранения".

Как я использую стандартные инструменты Linux, чтобы определить, является ли ISO, который я скачал (отредактировал: или создал с помощью genisoimage), гибридным?

Спасибо!

5 ответов

Решение

Запустите fdisk для файла. Если это показывает что-то значимое, это гибрид.

Запустить file команда на образе ISO в вопросе. Результат выполнения этой команды на негибридном ISO будет выглядеть примерно так

image.iso: ISO 9660 CD-ROM filesystem data 'foo' (bootable)

в то время как результат выполнения этой команды на гибридном ISO будет выглядеть примерно так

image.iso: DOS/MBR boot sector ISO 9660 CD-ROM filesystem data (DOS/MBR boot sector) 'foo' (bootable); partition 1 : ID=0x17, active, start-CHS (0x0,0,1), end-CHS (0x288,63,32), startsector 0, 1329152 sectors

Вы можете использовать этот скрипт для проверки ISO-образа ( -i флаг для "проверки")

https://github.com/jsamr/bootiso

bootiso -i "your iso image"

Создать загрузочное устройство USB из образа ISO легко и безопасно.

Не хотите испортить систему командой dd? Создайте загрузочный USB из ISO в одну строку [посмотрите это в действии].

Работает без проблем с гибридными и негибридными ISO (совместимыми с SYSLINUX или UEFI), такими как любые linux ISO, Windows ISO или спасательные live-диски, такие как UltimateBootCD. Вам не нужно ничего настраивать: bootiso проверяет файл ISO и выбирает лучший способ сделать ваш USB загрузочным.

Это обнаруживает таблицу разделов, отсутствующую на негибридных носителях ПЗУ:

cat romdisk.iso 2>/dev/null | head -c 512 | tail -c 2 | xxd -p | grep -ie '55aa$'

Что я не знаю, как определить, это между гибридным ISO и образом жесткого диска:

cat disk.img 2>/dev/null | head -c 512 | hexdump -vC

Вы можете запустить head -c 512 thefile.iso > bytes.txt,

В правильном негибридном ISO все байты должны быть нулями (возможно, не видимыми по умолчанию в вашем текстовом редакторе). Хотя теоретически они могут содержать любой случайный мусор, поэтому в ненулевом случае труднее подтвердить, является ли он гибридом, без более глубокого анализа байтов.

Для пользователей Windows вы можете установить пакет gnuwin32 coreutils, чтобы получить эту команду.

Ответ @ Chaosape должен быть принятым решением.

После использования file, если ISO-образ не является гибридом, и он вам нужен (например, для создания загрузочного USB), просто используйте isohybrid преобразовать это:

isohybrid [PATH_TO_ISO]

Вы также можете использовать флаги, такие как -u чтобы сделать его загрузочным UEFI.

https://www.mankier.com/1/isohybrid

Другие вопросы по тегам