Как / почему cat записывает загрузочный ISO на устройство

15

Недавно я обнаружил, что могу создать загрузочный USB-ключ из файла ISO, просто используя cat(или dd).

Я не могу найти информацию о том, как это работает. Почему бы:

cat my.iso > /dev/sdb && sync

взять этот файл и записать все файлы в загрузочном формате на устройство?

Мат
источник
Я никогда не думал использовать catвместо того, ddчтобы делать liveUSB
Роб
3
Это было в инструкции к «Хвостам», живому образу Tor. Я немного погуглил (прежде чем спросить здесь), и кажется, что dd был тем, что люди привыкли использовать для такого рода вещей, но кошка сейчас кажется предпочтительным инструментом. Я полагаю, это проще, так как вам не нужно задавать именованные параметры для деталей ввода / вывода.

Ответы:

14

Файл ISO представляет собой полный отформатированный образ файловой системы. Все catили ddделает это сделать бит для битой копии этого образа файловой системы на целевые средства массовой информации.

За кулисами не происходит никакой магии. Подготовка файловой системы ISO была сделана заранее (часто с помощью специального инструмента). Все что catнужно - это записать эту коллекцию байтов. Он вообще не интерпретирует .isoи не понимает, что пытается создать загрузочный сменный носитель вообще.
Для writeработы с этим носителем требуется надлежащая поддержка со стороны ядра и драйвера устройства . Здесь происходит немного «магии», поскольку записываемые оптические носители работают не так, как обычные жесткие диски. Но эта магия не требует интерпретации содержимого файла ISO.

Вы можете монтировать .isoфайл напрямую, не записывая его, используя циклическое монтирование (если такое доступно в вашей ОС). Точно так же вы можете создать файл, который содержит, например, ext4файловую систему, и вы можете сделать catэто для раздела.

Мат
источник
1
а затем просто убедитесь, что данные действительно записали в ваш раздел (а не просто в буфер)
yuyichao
Синхронизация @yuyichao должна покрыть это, верно? Редактировать: я только что понял, что я ответил на 6-летний комментарий
Manchineel
5

Это работает, потому что ISO-образ был обработан с помощью isohybrid, который устанавливает нормальный загрузчик syslinux в ISO-образ. Это возможно, потому что iso9660 обычно не использует первые несколько секторов образа, поэтому там можно разместить более или менее обычный загрузчик жесткого диска. При записи на оптический диск он игнорируется, и BIOS загружает диск, используя обычный метод загрузки el torito cdrom. Когда образ помещается на флэш-диск, загружается загрузочный сектор syslinux.

psusi
источник