Казалось бы, что нет ничего проще, указал загрузочный iso образ, указал устройство для записи данного образа, и вот тебе готовая загрузочная флешка. Все почти именно так. Но есть одно но. Заключается оно в том, что не всегда можно загрузиться с такой флешки после данных манипуляций. Разберем почему это происходит. Для этого, как всегда немного теории для внесения ясности.
ISO файл является полной посекторной копией файловой системы компакт диска. На данный момент, существуют два типа файловых систем для компакт дисков, это ISO 9660 и UDF. Первой была ISO 9660. После, с течением времени, когда появилась необходимость переносить фалы большого объема, а так же поддерживать возможность использовать длинные имена хранимых файлов, начали появляться дополнительные модификации для данной файловой системы (Joliet, UDF).
А уже позже, с учетом всех данных требований, была создана файловая система UDF. Которая ныне используется на DVD и BD дисках. Структуры обоих файловых систем схожи.
Размер сектора равен 2048 байт. В самом начале файловой системы присутствует неиспользуемая область размером 32 КБ (32768 байт), расположена в секторах 0-15.
Сектор 16, содержит информацию о первичном, т.е. основном, разделе диска.
Сектор 17, в случае загрузочного диска, содержит запись системы El Torito с адресом загрузочной области Boot Catalog. Данный адрес представлен двухбайтовым числом, что соответствует первым 80 секторам диска (от 0 до FFFF, что равно 65535).
Сектор 18 и последующие, отводятся для хранения файловой таблицы и самих файлов.
Чуть выше, при рассмотрении файловой системы ISO 9660, было сказано о неиспользуемом пространстве в лице первых 16 секторов (первые 32768 байт) данной файловой системы. И это означает, что в этом пространстве может располагаться какая угодно информация. И эта информация никак не повлияет на работу файловой системы компакт диска. Поэтому, в данном пространстве можно разместить, к примеру, загрузочную запись MBR, или EFI раздел с загрузочным исполняемым файлом, либо и то и другое.
Данную возможность как раз и используют на практике для создания так называемых гибридных ISO образов, которые можно использовать как для записи на компакт диск, так и на любой другой накопитель (флешка в том числе) с которого поддерживается загрузка в BIOS/UEFI BIOS системы.
К примеру, вот так выглядит обычный загрузочный ISO в HEX редакторе, а именно его первые сектора.
А вот так, выглядит начало гибридного ISO.
Из вышесказанного следует, что для прямой записи на флешку подходят только гибридные ISO файлы. Для их определения, достаточно проверить HEX редактором первые сектора данных образов. В ОС Windows, для этих целей подойдет бесплатны HEX редактор HxD. А в ОС Linux можно воспользоваться консольной программой hexdump.
Команды записи ISO образа с помощью программы dd выглядят так:
dd if=image.iso of=\\?\Device\Harddisk2\Partition0 bs=2048 --progress
dd для Linux
dd if=image.iso of=/dev/sda bs=2048
или тоже самое, но уже с отображением прогресса
pv image.iso | dd of=/dev/sda bs=2048
Проверим достоверность всего вышесказанного, записав по одному из типов ISO на флешку, и после загрузившись с данной флешки в виртуальной машине VirtualBox.
systemrescuecd-x86-5.1.2.iso
drweb-livedisk-900-cd.iso
Сейчас, для осуществления подобной записи ISO образов на флешку, существуют более удобные инструменты, с графическим интерфейсом. Например программы Rufus или UNetbootin. Почему использовался именно dd? Ответ прост, для демонстрации возможности гибкого применения данной программы. Уметь пользоваться данным инструментом, однозначно стоит. Собственно на этом у меня все.
Структура ISO 9660
ISO файл является полной посекторной копией файловой системы компакт диска. На данный момент, существуют два типа файловых систем для компакт дисков, это ISO 9660 и UDF. Первой была ISO 9660. После, с течением времени, когда появилась необходимость переносить фалы большого объема, а так же поддерживать возможность использовать длинные имена хранимых файлов, начали появляться дополнительные модификации для данной файловой системы (Joliet, UDF).
А уже позже, с учетом всех данных требований, была создана файловая система UDF. Которая ныне используется на DVD и BD дисках. Структуры обоих файловых систем схожи.
Размер сектора равен 2048 байт. В самом начале файловой системы присутствует неиспользуемая область размером 32 КБ (32768 байт), расположена в секторах 0-15.
Сектор 16, содержит информацию о первичном, т.е. основном, разделе диска.
Сектор 17, в случае загрузочного диска, содержит запись системы El Torito с адресом загрузочной области Boot Catalog. Данный адрес представлен двухбайтовым числом, что соответствует первым 80 секторам диска (от 0 до FFFF, что равно 65535).
Сектор 18 и последующие, отводятся для хранения файловой таблицы и самих файлов.
Гибридный ISO
Чуть выше, при рассмотрении файловой системы ISO 9660, было сказано о неиспользуемом пространстве в лице первых 16 секторов (первые 32768 байт) данной файловой системы. И это означает, что в этом пространстве может располагаться какая угодно информация. И эта информация никак не повлияет на работу файловой системы компакт диска. Поэтому, в данном пространстве можно разместить, к примеру, загрузочную запись MBR, или EFI раздел с загрузочным исполняемым файлом, либо и то и другое.
Данную возможность как раз и используют на практике для создания так называемых гибридных ISO образов, которые можно использовать как для записи на компакт диск, так и на любой другой накопитель (флешка в том числе) с которого поддерживается загрузка в BIOS/UEFI BIOS системы.
К примеру, вот так выглядит обычный загрузочный ISO в HEX редакторе, а именно его первые сектора.
А вот так, выглядит начало гибридного ISO.
Из вышесказанного следует, что для прямой записи на флешку подходят только гибридные ISO файлы. Для их определения, достаточно проверить HEX редактором первые сектора данных образов. В ОС Windows, для этих целей подойдет бесплатны HEX редактор HxD. А в ОС Linux можно воспользоваться консольной программой hexdump.
Запись ISO образа с помощью консольной программы dd
Команды записи ISO образа с помощью программы dd выглядят так:
dd для Windows
dd для Linux
dd if=image.iso of=/dev/sda bs=2048
или тоже самое, но уже с отображением прогресса
pv image.iso | dd of=/dev/sda bs=2048
Замечу, что для параметра of указывается физическое устройство к которому относится наша флешка. Получить данную информацию для Windows версии dd, можно выполнив команду dd --list, в Linux это делается командой fdisk -l.
Тестирование
Для демонстрации, я выбрал 9 различных загрузочных ISO образов. Гибридные будут отмечены зеленым цветом, красным обычные.
debian-live-8.6.0-amd64-gnome-desktop.iso
drweb-livedisk-900-cd.iso
FD12CD.iso
kali-linux-2016.2-amd64.iso
kav_rescue_10.iso
rescatux-0.51b3.iso
systemrescuecd-x86-5.1.2.iso
ubcd537.iso
ubuntu-16.10-desktop-amd64.iso
drweb-livedisk-900-cd.iso
FD12CD.iso
kali-linux-2016.2-amd64.iso
kav_rescue_10.iso
rescatux-0.51b3.iso
systemrescuecd-x86-5.1.2.iso
ubcd537.iso
ubuntu-16.10-desktop-amd64.iso
Проверим достоверность всего вышесказанного, записав по одному из типов ISO на флешку, и после загрузившись с данной флешки в виртуальной машине VirtualBox.
systemrescuecd-x86-5.1.2.iso
drweb-livedisk-900-cd.iso
Заключение
Сейчас, для осуществления подобной записи ISO образов на флешку, существуют более удобные инструменты, с графическим интерфейсом. Например программы Rufus или UNetbootin. Почему использовался именно dd? Ответ прост, для демонстрации возможности гибкого применения данной программы. Уметь пользоваться данным инструментом, однозначно стоит. Собственно на этом у меня все.
Комментариев нет :
Отправить комментарий