У меня есть файл образа диска dd 'ed со мной.

Я могу использовать такой инструмент, как kpartx чтобы создать устройство отображения устройств из этого файла образа диска.

Но программы разметки, такие как gparted и fdisk , не отображают мое подключенное устройство!

Есть ли способ сделать gparted (или эквивалентную программу - графическую или консольную) списком моего подключенного устройства и входящих в него разделов, а также подробную информацию об этих разделах?

PS: Это тот случай, когда в этих инструментах отсутствует функция или предоставление этой функции принципиально невозможно?

3 ответа3

3

Просто создайте временную жесткую ссылку после запуска kpartx -a ...:

sudo ln /dev/loop0 /dev/mapper/loop0

А затем запустите gparted как обычно (он будет правильно работать /dev/mapper/loop0p*):

sudo gparted /dev/mapper/loop0

Не забудьте удалить ссылку, когда она больше не нужна.

2

Это возможно, но я не уверен, имеет ли это смысл.

Инструменты разбиения заботятся только о целом дисковом устройстве, потому что они читают таблицу разделов непосредственно из соответствующих секторов диска. Им не нужны отдельные устройства для разделения. Это означает, что базового устройства цикла, созданного с помощью losetup , достаточно, и если инструмент его не видит, вы можете просто запустить fdisk /dev/loop0 или что-то еще.

(Если устройство с целым диском находится в /dev/mapper/ , эти инструменты не трудно увидеть, хотя это обычно включает редактирование нескольких строк исходного кода ... часто запускается fdisk /dev/mapper/bleh Полегче.)


Также обратите внимание, что последние версии ядра поддерживают losetup --partscan что устраняет необходимость использовать для этого устройство-маппер.

0

Через 3,5 года у меня есть другое решение по этому вопросу :)

Если вы не беспокоитесь об использовании kpartx, и я правильно полагаю, что ваша цель состоит в том, чтобы работать с разделами на образе диска, представленном в виде обычного файла, вот альтернативный рабочий процесс без kpartx и символических ссылок (поэтому он публикуется как отдельный ответ):

  1. sudo losetup --find --show ./somedrive.img

    Подключите устройство петли для всего файла ./somedrive.img ; --find - попросить losetup автоматически искать бесплатное устройство; и --show означает, что устройство использовалось. Например, рассмотрим выбранное устройство /dev/loop5 .

  2. sudo partx --update /dev/loop5

    Скажите ядру Linux о необходимости повторного сканирования разделов внутри /dev/loop5 . В случае успеха он не будет выдавать никаких выходных данных, поэтому посмотрите ls -al /dev/loop5 чтобы увидеть, что появляется.

  3. Делайте все, что вам нужно, например, sudo gparted /dev/loop5

    На этом этапе вы должны быть в состоянии правильно работать /dev/loop5p* .

  4. sudo partx --delete /dev/loop5

    Освободить сопоставления разделов.

  5. sudo losetup --detach /dev/loop5

    Наконец, отпустите петлю устройства.

PS Если вы являетесь гордым владельцем util-linux с версией v2.21 или выше, вы можете запросить как присоединение устройства петли, так и повторное сканирование раздела за один раз: sudo losetup --find --show --partscan ./somedrive.img и вообще не должен сталкиваться с проблемой утилит, подобных gparted.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .