Предварительные условия

1. Убедитесь, что утилита kpartx установлена. Она входит в пакет multipath-tools:

   sudo apt install multipath-tools  # Для Ubuntu/Debian
   sudo yum install device-mapper-multipath  # Для CentOS/RHEL

2. У вас есть файл-образ диска, например, disk.img, или физический диск /dev/sdx.

Пример 1: Работа с файлом-образом диска

Предположим, у вас есть файл-образ disk.img, содержащий разделы.

1. Создание отображений разделов:

   sudo kpartx -a -v disk.img
  • Флаг -a добавляет отображения разделов.
  • Флаг -v (verbose) выводит подробную информацию.
  • После выполнения команды kpartx создаст блочные устройства в /dev/mapper/, например, /dev/mapper/loop0p1, /dev/mapper/loop0p2 и т.д., где loop0 — это loop-устройство, связанное с образом.

2. Проверка созданных отображений:

   ls /dev/mapper/

Вы увидите что-то вроде:

   loop0p1  loop0p2

3. Монтирование раздела:
Если, например, первый раздел (loop0p1) содержит файловую систему ext4, вы можете смонтировать его:

   sudo mkdir /mnt/partition1
   sudo mount /dev/mapper/loop0p1 /mnt/partition1

Теперь вы можете работать с содержимым раздела в /mnt/partition1.

4. Очистка после работы:
После завершения работы размонтируйте раздел и удалите отображения:

   sudo umount /mnt/partition1
   sudo kpartx -d disk.img

Флаг -d удаляет отображения из /dev/mapper.

Пример 2: Работа с физическим диском

Если вы работаете с физическим диском (например, /dev/sdb), можно использовать kpartx для создания отображений его разделов.

1. Создание отображений:

   sudo kpartx -a -v /dev/sdb

Это создаст отображения разделов в /dev/mapper/, например, /dev/mapper/sdb1, /dev/mapper/sdb2.

2. Монтирование раздела:

   sudo mkdir /mnt/partition
   sudo mount /dev/mapper/sdb1 /mnt/partition

3. Удаление отображений:
После завершения работы:

   sudo umount /mnt/partition
   sudo kpartx -d /dev/sdb

Пример 3: Работа с loop-устройством вручную

Если вы хотите вручную привязать образ диска к loop-устройству перед использованием kpartx:

1. Привязка образа к loop-устройству:

   sudo losetup -fP disk.img

Флаг -f находит свободное loop-устройство, а -P заставляет ядро распознать разделы.

2. Проверка loop-устройства:

   losetup -l

Вы увидите, к какому устройству привязан образ, например, /dev/loop0.

3. Создание отображений с kpartx:

   sudo kpartx -a -v /dev/loop0

4. Монтирование и работа:
Аналогично предыдущим примерам, монтируйте нужный раздел:

   sudo mount /dev/mapper/loop0p1 /mnt/partition1

5. Очистка:

   sudo umount /mnt/partition1
   sudo kpartx -d /dev/loop0
   sudo losetup -d /dev/loop0

Примечания

  • Убедитесь, что у вас есть права суперпользователя (sudo), так как kpartx работает с блочными устройствами.
  • Если разделы не отображаются, проверьте, правильно ли создан образ диска и содержит ли он таблицу разделов (например, MBR или GPT).
  • Используйте parted или fdisk -l для проверки структуры разделов на образе или диске:
  sudo parted disk.img print
  • Если вы работаете с LVM-разделами, после kpartx может потребоваться дополнительная активация томов с помощью vgchange -ay.

---------------- variant -----------------

Команда kpartx используется в Linux для работы с разделами на образе диска (например, файле образа диска или устройстве /dev/sdx). Она позволяет монтировать разделы из образа диска, создавая соответствующие устройства в /dev/mapper. Вот несколько примеров использования kpartx для доступа к разделам образа диска:

Пример 1: Монтирование разделов из файла образа диска

Допустим, у вас есть файл образа диска disk.img, содержащий несколько разделов.

# 1. Создаем устройства для разделов образа
sudo kpartx -a -v disk.img
  • Опция -a указывает kpartx добавить устройства для разделов.
  • Опция -v (verbose) выводит подробную информацию о созданных устройствах.
  • После выполнения команды в /dev/mapper появятся устройства, например, /dev/mapper/loop0p1, /dev/mapper/loop0p2 и т.д., соответствующие разделам образа.
# 2. Монтируем нужный раздел
sudo mount /dev/mapper/loop0p1 /mnt
  • Здесь раздел /dev/mapper/loop0p1 монтируется в каталог /mnt.
# 3. После работы размонтируем и удаляем устройства
sudo umount /mnt
sudo kpartx -d disk.img
  • Опция -d удаляет устройства из /dev/mapper.

Пример 2: Работа с физическим диском (/dev/sdx)

Если вы хотите работать с разделами физического диска, например, /dev/sdb:

# 1. Создаем устройства для разделов диска
sudo kpartx -a -v /dev/sdb
  • Это создаст устройства для каждого раздела диска в /dev/mapper, например, /dev/mapper/sdb1, /dev/mapper/sdb2.
# 2. Монтируем нужный раздел
sudo mount /dev/mapper/sdb1 /mnt
# 3. После работы удаляем устройства
sudo umount /mnt
sudo kpartx -d /dev/sdb

Пример 3: Работа с LVM-разделами в образе

Если образ диска содержит LVM-разделы, kpartx может помочь активировать их.

# 1. Создаем устройства для разделов
sudo kpartx -a -v disk.img
# 2. Сканируем LVM-разделы
sudo vgscan
sudo vgchange -ay
  • Команда vgscan ищет группы томов (Volume Groups), а vgchange -ay активирует их.
# 3. Монтируем логический том
sudo mount /dev/vg_name/lv_name /mnt
  • Замените vg_name и lv_name на имена вашей группы томов и логического тома.
# 4. После работы деактивируем и удаляем
sudo umount /mnt
sudo vgchange -an
sudo kpartx -d disk.img

Пример 4: Проверка разделов без монтирования

Если вы хотите просто увидеть, какие разделы есть в образе:

# Выводим список разделов
sudo kpartx -l disk.img
  • Опция -l (list) показывает информацию о разделах, не создавая устройств.

Примечания

  • Убедитесь, что у вас есть права суперпользователя (sudo) для выполнения этих команд.
  • Если образ диска монтируется через loop-устройство, kpartx автоматически использует его (например, /dev/loop0).
  • Для работы с LVM-разделами может потребоваться установка пакета lvm2 (sudo apt install lvm2 на Debian/Ubuntu).
  • Всегда размонтируйте разделы и удаляйте устройства (kpartx -d) после завершения работы, чтобы избежать конфликтов.

--------------- RO ----------------

Для работы с образом диска (например, /dev/sdx или файла образа, такого как disk.img) в режиме только чтение с использованием kpartx, нужно выполнить несколько шагов, чтобы гарантировать, что образ не будет изменён. Вот подробное руководство с примерами:

1. Подготовка образа в режиме только чтение

Чтобы образ диска открывался в режиме только чтение, можно использовать опцию -o ro с командой losetup (для привязки образа к loop-устройству) или монтировать файловые системы с опцией ro.

Пример: Работа с файлом образа (disk.img)

# 1. Привязываем образ к loop-устройству в режиме только чтение
sudo losetup -r -f disk.img
  • Опция -r указывает, что устройство будет привязано в режиме только чтение.
  • Команда -f автоматически выбирает свободное loop-устройство (например, /dev/loop0).
# 2. Проверяем, какое loop-устройство используется
losetup -l
  • Это покажет, к какому устройству привязан образ (например, /dev/loop0).
# 3. Создаём устройства для разделов с помощью kpartx
sudo kpartx -a -v /dev/loop0
  • Опция -a добавляет устройства для разделов в /dev/mapper (например, /dev/mapper/loop0p1).
  • Поскольку loop-устройство создано в режиме только чтение, разделы также будут доступны только для чтения.
# 4. Монтируем раздел в режиме только чтение
sudo mount -o ro /dev/mapper/loop0p1 /mnt
  • Опция -o ro указывает, что файловая система монтируется в режиме только чтение.
# 5. Проверяем содержимое
ls /mnt
# 6. После работы размонтируем и очищаем
sudo umount /mnt
sudo kpartx -d /dev/loop0
sudo losetup -d /dev/loop0
  • kpartx -d удаляет устройства из /dev/mapper.
  • losetup -d отключает loop-устройство.

2. Работа с физическим диском (/dev/sdx) в режиме только чтение

Если вы работаете с физическим диском (например, /dev/sdb), можно сделать устройство только для чтения с помощью blockdev.

Пример:

# 1. Устанавливаем диск в режим только чтение
sudo blockdev --setro /dev/sdb
  • Команда --setro переводит устройство в режим только чтение.
# 2. Проверяем статус
sudo blockdev --getro /dev/sdb
  • Если команда возвращает 1, устройство в режиме только чтение.
# 3. Создаём устройства для разделов
sudo kpartx -a -v /dev/sdb
  • Разделы появятся в /dev/mapper (например, /dev/mapper/sdb1).
# 4. Монтируем раздел в режиме только чтение
sudo mount -o ro /dev/mapper/sdb1 /mnt
# 5. После работы размонтируем и очищаем
sudo umount /mnt
sudo kpartx -d /dev/sdb
sudo blockdev --setrw /dev/sdb
  • --setrw возвращает устройство в режим чтения-записи.

3. Работа с LVM-разделами в режиме только чтение

Если образ содержит LVM-разделы, можно активировать их в режиме только чтение.

Пример:

# 1. Привязываем образ в режиме только чтение
sudo losetup -r -f disk.img
# 2. Создаём устройства для разделов
sudo kpartx -a -v /dev/loop0
# 3. Сканируем и активируем LVM в режиме только чтение
sudo vgscan
sudo vgchange -ay --activationmode partial --readonly
  • --readonly активирует LVM-группы в режиме только чтение.
# 4. Монтируем логический том
sudo mount -o ro /dev/vg_name/lv_name /mnt
# 5. После работы очищаем
sudo umount /mnt
sudo vgchange -an
sudo kpartx -d /dev/loop0
sudo losetup -d /dev/loop0

Примечания

  • Проверка режима только чтение: Убедитесь, что монтирование выполнено с опцией ro. Проверить можно командой:
  mount | grep /mnt

В выводе должно быть указано (ro).

  • Ошибки монтирования: Если монтирование не удаётся, проверьте файловую систему на ошибки с помощью fsck (но только для чтения: fsck -n).
  • Права: Для всех операций требуются права суперпользователя (sudo).
  • Очистка: Всегда размонтируйте и отключайте loop-устройства после работы, чтобы избежать конфликтов.
  • LVM: Для работы с LVM установите пакет lvm2 (sudo apt install lvm2 на Debian/Ubuntu).

[file-name 000237_2025-09-25_10-25-13.txt]