Недавно я обнаружил, что могу создать загрузочный USB-ключ из файла ISO, просто используя cat
(или dd
).
Я не могу найти информацию о том, как это работает. Почему бы:
cat my.iso > /dev/sdb && sync
взять этот файл и записать все файлы в загрузочном формате на устройство?
cat
вместо того,dd
чтобы делать liveUSBОтветы:
Файл ISO представляет собой полный отформатированный образ файловой системы. Все
cat
илиdd
делает это сделать бит для битой копии этого образа файловой системы на целевые средства массовой информации.За кулисами не происходит никакой магии. Подготовка файловой системы ISO была сделана заранее (часто с помощью специального инструмента). Все что
cat
нужно - это записать эту коллекцию байтов. Он вообще не интерпретирует.iso
и не понимает, что пытается создать загрузочный сменный носитель вообще.Для
write
работы с этим носителем требуется надлежащая поддержка со стороны ядра и драйвера устройства . Здесь происходит немного «магии», поскольку записываемые оптические носители работают не так, как обычные жесткие диски. Но эта магия не требует интерпретации содержимого файла ISO.Вы можете монтировать
.iso
файл напрямую, не записывая его, используя циклическое монтирование (если такое доступно в вашей ОС). Точно так же вы можете создать файл, который содержит, например,ext4
файловую систему, и вы можете сделатьcat
это для раздела.источник
Это работает, потому что ISO-образ был обработан с помощью
isohybrid
, который устанавливает нормальный загрузчик syslinux в ISO-образ. Это возможно, потому что iso9660 обычно не использует первые несколько секторов образа, поэтому там можно разместить более или менее обычный загрузчик жесткого диска. При записи на оптический диск он игнорируется, и BIOS загружает диск, используя обычный метод загрузки el torito cdrom. Когда образ помещается на флэш-диск, загружается загрузочный сектор syslinux.источник