Обычные образы файловой системы могут быть легко смонтированы:
mount system.img /mnt
Рассмотрено и изменено. Но когда я пытаюсь сделать это с образом системы Raspberry Pi (например, raspbian), я получаю:
mount: unknown filesystem type '(null)'
И что бы я ни пытался -t
, это не сработает. Как я могу смонтировать этот образ?
Ответы:
Ответ на этот вопрос является частью ответа на другие вопросы, но здесь он заслуживает канонического подхода, поэтому повторять его не нужно.
Вы не можете смонтировать образ в целом, потому что он на самом деле содержит два раздела и загрузочный сектор. Однако вы можете смонтировать отдельные разделы в образе, если знаете их смещение внутри файла. Чтобы найти их, изучите изображение как блочное устройство
fdisk -l whatever.img
. Выходные данные должны включать в себя следующую таблицу:Это два раздела. Первый помечен как «FAT32», а второй - «Linux». Над этой таблицей есть некоторая другая информация об устройстве в целом, включая:
Мы можем найти смещение в байтах, умножив размер этого блока на
Start
блок раздела:Они могут быть использованы с
offset
опциейmount
команды. У нас также есть подсказка о типе каждого раздела изfdisk
. Итак, предположим, что у нас есть каталоги/mnt/img/one
и они/mnt/img/two
доступны как точки монтирования:Если вы получаете ошибку «Перекрывающийся цикл», ваша версия
mount
требует, чтобы вы указали размер, а также смещение первого раздела. Размонтируйте его и используйте количество блоков (57344) * 512 (= 29360128):Второй раздел не нуждается в sizelimit, так как на изображении нет ничего после него.
Теперь вы можете получить доступ к двум разделам. Если вы не собираетесь что-либо менять в них, используйте
-r
переключатель (только для чтения). Если вы что-то измените, эти изменения будут включены в.img
файл.Обратите внимание, что первый раздел, вероятно, смонтирован
/boot
во втором разделе, когда система работает.источник
kpartx -a whatever.img
создает подходящие (петлевые) узлы, которые вы можете позже смонтировать по желанию. Запуститеkpartx -d whatever.img
для удаления (не смонтированных) узлов цикла.sizelimit
опцией. Для получения дополнительной информации: unix.stackexchange.com/a/342466/9689 . (Кстати, ответ выше может быть обновлен, чтобы привести пример использования этой опции)$((8192*512))
.losetup
обеспечивает прохождение раздела-P
. Использование этого делает установку разделов полного образа диска, такого как образ карты Raspbian SD, очень простым:источник
Сначала я использовал awk / grep для разбора fdisk и извлечения смещений, но обнаружил, что это может быть немного сложным, ненадежным и трудным для понимания позже. Самый простой метод, который я нашел:
Это создаст для вас временный каталог, автоматически назначит следующее петлевое устройство и настроит его для вас в качестве устройств раздела
p1
иp2
разделов, а также установит загрузочный и корневой каталог.Вы также можете поместить часть очистки в выходную ловушку, так что если что-то не получится, у вас не будет висящих файлов / файлов:
источник
В случае, если fdisk -l отображается с секторами вместо блоков в Arch linux ... Другой способ найти количество блоков в случае «ошибки перекрывающегося цикла» - вычесть смещение в байтах первого раздела из второго раздела. и разделить на два. Например (62914560-4194304) / 2 = 29360128
источник