Есть ли способ заставить инструменты разметки видеть устройства, созданные kpartx?

Есть ли способ заставить инструменты разметки видеть устройства, созданные kpartx?

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

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

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

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

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

решение1

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

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

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


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

решение2

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

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

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

sudo gparted /dev/mapper/loop0

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

решение3

Спустя 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

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

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

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