Как монтировать ISO и другие типы файлов изображений в Linux?

Опубликовано: 2018-09-06

Вам когда-нибудь приходилось проверять содержимое файла изображения? Возможно, вы забыли, какая версия этого дистрибутива Linux была. Может быть много причин для перепроверки образа, но как это сделать, не сжигая его? Давайте выясним, никакого дополнительного программного обеспечения не требуется.

Каждый технически подкованный пользователь Linux должен быть знаком с командой mount . Это очень важная часть общего системного администрирования. Но многие не знают, что команда mount на самом деле намного мощнее, чем кажется на первый взгляд.

Монтирование файлов образов в Linux

Мы можем быстро и легко монтировать не только образы ISO, но даже образы дисков с разделами.

Быстро, вот пример монтирования файла ISO.

mount -o loop disk_image.iso /path/to/mount/dir

Здесь флаг -o предназначен для передачи параметров монтирования, и в этом случае мы сообщаем mount , что хотим смонтировать образ с помощью loopback-устройства . Устройство loopback — это действительно хорошая концепция, разработанная для помощи в монтировании файлов изображений. Устройство обратной связи — это программное псевдоустройство, которое действует как посредник и позволяет системе обращаться с файлом так, как если бы это было блочное устройство, такое как дисковод компакт-дисков, жесткий диск и т. д. При этом у нас гораздо больше гибкости при работе с файлами. с файлом, например, выполнение функций файловой системы (которые предполагают наличие базового блочного устройства) .

Это довольно круто, но кто вообще использует ISO, верно? Что ж, mount может сделать немного больше. Если у вас есть файл образа жесткого диска (полученный из dd или чего-то подобного) , назовем его hdd.img, тогда вы также можете смонтировать файловые системы внутри него. И если вы подозреваете, что нам нужно снова использовать петлевое устройство, вы на правильном пути.

Но если вы попробуете это…

mount -o loop hdd.img /путь/к/mount/dir

вам не очень повезет.

Это потому, что на большинстве дисков есть таблицы разделов. Компакт-диски и DVD-диски обычно не имеют таблиц разделов, потому что это не подходит для их вариантов использования. Когда mount начинает монтировать том, он ожидает найти файловую систему, а не таблицу разделов.

Однако это не означает, что это невозможно сделать. Чтобы смонтировать файловую систему, мы должны сообщить mount, где она находится в файле образа, с помощью части информации, переданной в параметры монтирования. Часть информации, которую требует mount , — это смещение раздела, то есть количество байтов в файле образа, с которого начинается раздел. Есть разные способы выяснить это, но fdisk сделает всю работу за вас.

fdisk -l hdd.img

Предположим, fdisk сообщает нам, что начальный сектор равен 100 (это чисто пример, маловероятно, что это правильно в вашем конкретном случае) . Что нам нужно сделать сейчас, так это взять этот номер сектора и умножить его на размер сектора жесткого диска, с которого был взят образ, это будет (скорее всего) 512 байт на старых дисках и, возможно, 4096 (4K) на новых, но вы всегда должны проверять это при клонировании дисков (возможно, поместите его в имя файла для надежности) . Размер сектора — это количество байтов на сектор.

Для простоты мы возьмем сектор размером 512 байт, и это даст нам смещение 51 200. Это смещение представляет собой количество байтов в образе, с которого начинается файловая система. Зная это, мы можем указать mount , где именно найти файловую систему.

mount -o ro,loop,offset=51200 hdd.img /path/to/mount/dir

ПРИМЕЧАНИЕ. Я также добавил в этот пример параметр ro , чтобы показать, как можно смонтировать файловую систему только для чтения. Это особенно полезно в криминалистических приложениях, где вы не можете нарушить целостность данных по соображениям безопасности или даже по юридическим причинам. Часто файл образа создается с диска с помощью специального адаптера, называемого блокировщиком записи, который буквально блокирует все команды записи и разрешает только команды чтения.

Это довольно много работы с математикой и всем остальным, но должен быть более простой способ, верно? Это зависит от того, насколько недавно вы используете дистрибутив Linux, но все, что выпущено за последние пять лет или около того, не должно вызывать никаких проблем.

Инструмент lossup предназначен для настройки петлевых устройств. Вы можете задаться вопросом, почему вы хотите настроить петлевое устройство вручную, когда mount позаботится обо всем этом за вас. Помните, как mount не хотел монтировать весь образ диска из-за этой надоедливой таблицы разделов? Ну, учитывая, что таблица разделов — это то, что содержит всю математику о том, где расположены разделы (откуда fdisk получает всю свою информацию) , было бы намного проще позволить системе вместо этого ссылаться на нее. Мы можем просто создать петлевое устройство для всего образа диска, а затем указать системе сканировать разделы на вновь созданном петлевом устройстве.

проиграть -f hdd.img

ПРИМЕЧАНИЕ. Флаг -f , переданный утилите losstup , просто сообщает ему о необходимости создать петлевое устройство с еще не использованным именем, например, /dev/loop1 , если /dev/loop0 уже используется . В качестве альтернативы вы можете передать имя устройства, такое как /dev/loop0 , если это устройство не существует, lossup создаст его, если да, то переназначит его вновь назначенному файлу образа.

Если команда выполнена успешно, вы увидите только что созданное петлевое устройство в папке /dev/ . Теперь вы можете использовать

часть зонда /dev/loopback0

или

kpartx -u /dev/loopback0

если у вас установлены partprobe или kpartx соответственно. Тем не менее, parted должен быть установлен в большинстве современных дистрибутивов Linux.

Как только это будет сделано, вы должны увидеть что-то вроде /dev/loop0p1 в /dev/ . Это ваш раздел, который вы можете легко смонтировать.

смонтировать /dev/loop0p1 /path/to/mount/dir

Как вы, наверное, заметили, петля не требуется. Это потому, что мы уже позаботились об этом.

Однако мы можем сделать это еще проще, добавив единственный флаг в lossup .

проиграть -f -P hdd.img

Используемый нами флаг -P на самом деле указывает программе lossup , что ядро ​​должно сканировать таблицу разделов, поэтому мы можем перейти к монтированию нужного нам раздела.

Используя вышеизложенное, вы можете монтировать различные образы дисков. Неважно, с оптических носителей, с USB-накопителей, с разделами MBR или GPT. Ядро Linux может обрабатывать так много разных таблиц разделов и файловых систем, что вам будет сложнее найти что-то, что оно не поддерживает.

Конечно, могут быть инструменты, которые делают это намного проще, но что в этом интересного? Я использовал эти методы при восстановлении данных и общем системном администрировании, и, как и любой другой вид знаний, они чрезвычайно ценны, когда это необходимо.

Дайте нам знать в комментариях ниже, если у вас есть какие-либо приемы, которые дополнили бы эти.

Также читайте: