Как создать виртуальные блочные устройства из файла?

Как создать виртуальные блочные устройства из файла?
  • Давайте получим несжатый RAW-образ неизвестного диска (созданный, например, с помощью dd if=/dev/sda of=image) в одном файле.
  • Если бы мы знали структуру диска, мы могли бы монтировать определенные разделы из файла как циклические устройства, пропуская некоторые смещения.
  • Предположим, что мы не знаем разметку. Можем ли мы как-то «смонтировать» весь диск image, какой процесс создаст виртуальные блочные устройства в соответствии с разметкой диска? Например, наличие 2 разделов в imageприведет к созданию 3 устройств ( /dev/sdx, /dev/sdx1, /dev/sdx2). Затем мы могли бы монтировать такие устройства как обычно.

решение1

После дополнительных исследований я обнаружил, что есть как минимум два метода для проверки:

  1. В соответствии сэтотпочта,kpartxприменимый инструмент.
    • К сожалению, у меня это не сработало на Arch Linux.
    • Он из AUR:, yaourt multipath-tools-gitпохоже, не очень хорошо поддерживается/завершен и в итоге приводит к таким ошибкам:

      device-mapper: перезагрузка ioctl на loop0p1 не удалась: такого устройства нет

    • Может быть использован как минимум для перечисления встроенных разделов:kpartx -l image
    • РЕДАКТИРОВАТЬ:В соответствии сэтотпост, похоже, он устарел, и предпочтительным является следующий метод.
  2. В соответствии сэтотпочта,losetupможет быть использован.
    • Во-первых, это не сработало: losetup /dev/loop0 image(отсутствовали устройства для определенных разделов).
    • Повторная попытка с использованием дополнительной -Pопции дала результат: losetup -d /dev/loop0и losetup -P /dev/loop0 imageустройства /dev/loop0pXбыли созданы.
    • Затем эти устройства можно монтировать, как и ожидалось, например:mount /dev/loop0p3 /mnt/x -t ntfs

Связанный контент