<===
2025-09-25 10:25:13
`kpartx` — утилита в Linux, которая используется для создания отображений разделов из образа диска (например, `/dev/sdx` или файла-образа) в виде блочных устройств. Это полезно для работы с разделами внутри образа без необходимости монтирования всего диска. Вот несколько примеров использования `kpartx` для доступа к файлу-образу диска:
### Предварительные условия
1. Убедитесь, что утилита `kpartx` установлена. Она входит в пакет `multipath-tools`:
```bash
sudo apt install multipath-tools # Для Ubuntu/Debian
sudo yum install device-mapper-multipath # Для CentOS/RHEL
```
2. У вас есть файл-образ диска, например, `disk.img`, или физический диск `/dev/sdx`.
### Пример 1: Работа с файлом-образом диска
Предположим, у вас есть файл-образ `disk.img`, содержащий разделы.
1. **Создание отображений разделов**:
```bash
sudo kpartx -a -v disk.img
```
- Флаг `-a` добавляет отображения разделов.
- Флаг `-v` (verbose) выводит подробную информацию.
- После выполнения команды `kpartx` создаст блочные устройства в `/dev/mapper/`, например, `/dev/mapper/loop0p1`, `/dev/mapper/loop0p2` и т.д., где `loop0` — это loop-устройство, связанное с образом.
2. **Проверка созданных отображений**:
```bash
ls /dev/mapper/
```
Вы увидите что-то вроде:
```
loop0p1 loop0p2
```
3. **Монтирование раздела**:
Если, например, первый раздел (`loop0p1`) содержит файловую систему ext4, вы можете смонтировать его:
```bash
sudo mkdir /mnt/partition1
sudo mount /dev/mapper/loop0p1 /mnt/partition1
```
Теперь вы можете работать с содержимым раздела в `/mnt/partition1`.
4. **Очистка после работы**:
После завершения работы размонтируйте раздел и удалите отображения:
```bash
sudo umount /mnt/partition1
sudo kpartx -d disk.img
```
Флаг `-d` удаляет отображения из `/dev/mapper`.
### Пример 2: Работа с физическим диском
Если вы работаете с физическим диском (например, `/dev/sdb`), можно использовать `kpartx` для создания отображений его разделов.
1. **Создание отображений**:
```bash
sudo kpartx -a -v /dev/sdb
```
Это создаст отображения разделов в `/dev/mapper/`, например, `/dev/mapper/sdb1`, `/dev/mapper/sdb2`.
2. **Монтирование раздела**:
```bash
sudo mkdir /mnt/partition
sudo mount /dev/mapper/sdb1 /mnt/partition
```
3. **Удаление отображений**:
После завершения работы:
```bash
sudo umount /mnt/partition
sudo kpartx -d /dev/sdb
```
### Пример 3: Работа с loop-устройством вручную
Если вы хотите вручную привязать образ диска к loop-устройству перед использованием `kpartx`:
1. **Привязка образа к loop-устройству**:
```bash
sudo losetup -fP disk.img
```
Флаг `-f` находит свободное loop-устройство, а `-P` заставляет ядро распознать разделы.
2. **Проверка loop-устройства**:
```bash
losetup -l
```
Вы увидите, к какому устройству привязан образ, например, `/dev/loop0`.
3. **Создание отображений с kpartx**:
```bash
sudo kpartx -a -v /dev/loop0
```
4. **Монтирование и работа**:
Аналогично предыдущим примерам, монтируйте нужный раздел:
```bash
sudo mount /dev/mapper/loop0p1 /mnt/partition1
```
5. **Очистка**:
```bash
sudo umount /mnt/partition1
sudo kpartx -d /dev/loop0
sudo losetup -d /dev/loop0
```
### Примечания
- Убедитесь, что у вас есть права суперпользователя (`sudo`), так как `kpartx` работает с блочными устройствами.
- Если разделы не отображаются, проверьте, правильно ли создан образ диска и содержит ли он таблицу разделов (например, MBR или GPT).
- Используйте `parted` или `fdisk -l` для проверки структуры разделов на образе или диске:
```bash
sudo parted disk.img print
```
- Если вы работаете с LVM-разделами, после `kpartx` может потребоваться дополнительная активация томов с помощью `vgchange -ay`.
---------------- variant -----------------
Команда `kpartx` используется в Linux для работы с разделами на образе диска (например, файле образа диска или устройстве `/dev/sdx`). Она позволяет монтировать разделы из образа диска, создавая соответствующие устройства в `/dev/mapper`. Вот несколько примеров использования `kpartx` для доступа к разделам образа диска:
### Пример 1: Монтирование разделов из файла образа диска
Допустим, у вас есть файл образа диска `disk.img`, содержащий несколько разделов.
```bash
# 1. Создаем устройства для разделов образа
sudo kpartx -a -v disk.img
```
- Опция `-a` указывает `kpartx` добавить устройства для разделов.
- Опция `-v` (verbose) выводит подробную информацию о созданных устройствах.
- После выполнения команды в `/dev/mapper` появятся устройства, например, `/dev/mapper/loop0p1`, `/dev/mapper/loop0p2` и т.д., соответствующие разделам образа.
```bash
# 2. Монтируем нужный раздел
sudo mount /dev/mapper/loop0p1 /mnt
```
- Здесь раздел `/dev/mapper/loop0p1` монтируется в каталог `/mnt`.
```bash
# 3. После работы размонтируем и удаляем устройства
sudo umount /mnt
sudo kpartx -d disk.img
```
- Опция `-d` удаляет устройства из `/dev/mapper`.
### Пример 2: Работа с физическим диском (/dev/sdx)
Если вы хотите работать с разделами физического диска, например, `/dev/sdb`:
```bash
# 1. Создаем устройства для разделов диска
sudo kpartx -a -v /dev/sdb
```
- Это создаст устройства для каждого раздела диска в `/dev/mapper`, например, `/dev/mapper/sdb1`, `/dev/mapper/sdb2`.
```bash
# 2. Монтируем нужный раздел
sudo mount /dev/mapper/sdb1 /mnt
```
```bash
# 3. После работы удаляем устройства
sudo umount /mnt
sudo kpartx -d /dev/sdb
```
### Пример 3: Работа с LVM-разделами в образе
Если образ диска содержит LVM-разделы, `kpartx` может помочь активировать их.
```bash
# 1. Создаем устройства для разделов
sudo kpartx -a -v disk.img
```
```bash
# 2. Сканируем LVM-разделы
sudo vgscan
sudo vgchange -ay
```
- Команда `vgscan` ищет группы томов (Volume Groups), а `vgchange -ay` активирует их.
```bash
# 3. Монтируем логический том
sudo mount /dev/vg_name/lv_name /mnt
```
- Замените `vg_name` и `lv_name` на имена вашей группы томов и логического тома.
```bash
# 4. После работы деактивируем и удаляем
sudo umount /mnt
sudo vgchange -an
sudo kpartx -d disk.img
```
### Пример 4: Проверка разделов без монтирования
Если вы хотите просто увидеть, какие разделы есть в образе:
```bash
# Выводим список разделов
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`)
```bash
# 1. Привязываем образ к loop-устройству в режиме только чтение
sudo losetup -r -f disk.img
```
- Опция `-r` указывает, что устройство будет привязано в режиме только чтение.
- Команда `-f` автоматически выбирает свободное loop-устройство (например, `/dev/loop0`).
```bash
# 2. Проверяем, какое loop-устройство используется
losetup -l
```
- Это покажет, к какому устройству привязан образ (например, `/dev/loop0`).
```bash
# 3. Создаём устройства для разделов с помощью kpartx
sudo kpartx -a -v /dev/loop0
```
- Опция `-a` добавляет устройства для разделов в `/dev/mapper` (например, `/dev/mapper/loop0p1`).
- Поскольку loop-устройство создано в режиме только чтение, разделы также будут доступны только для чтения.
```bash
# 4. Монтируем раздел в режиме только чтение
sudo mount -o ro /dev/mapper/loop0p1 /mnt
```
- Опция `-o ro` указывает, что файловая система монтируется в режиме только чтение.
```bash
# 5. Проверяем содержимое
ls /mnt
```
```bash
# 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`.
#### Пример:
```bash
# 1. Устанавливаем диск в режим только чтение
sudo blockdev --setro /dev/sdb
```
- Команда `--setro` переводит устройство в режим только чтение.
```bash
# 2. Проверяем статус
sudo blockdev --getro /dev/sdb
```
- Если команда возвращает `1`, устройство в режиме только чтение.
```bash
# 3. Создаём устройства для разделов
sudo kpartx -a -v /dev/sdb
```
- Разделы появятся в `/dev/mapper` (например, `/dev/mapper/sdb1`).
```bash
# 4. Монтируем раздел в режиме только чтение
sudo mount -o ro /dev/mapper/sdb1 /mnt
```
```bash
# 5. После работы размонтируем и очищаем
sudo umount /mnt
sudo kpartx -d /dev/sdb
sudo blockdev --setrw /dev/sdb
```
- `--setrw` возвращает устройство в режим чтения-записи.
### 3. Работа с LVM-разделами в режиме только чтение
Если образ содержит LVM-разделы, можно активировать их в режиме только чтение.
#### Пример:
```bash
# 1. Привязываем образ в режиме только чтение
sudo losetup -r -f disk.img
```
```bash
# 2. Создаём устройства для разделов
sudo kpartx -a -v /dev/loop0
```
```bash
# 3. Сканируем и активируем LVM в режиме только чтение
sudo vgscan
sudo vgchange -ay --activationmode partial --readonly
```
- `--readonly` активирует LVM-группы в режиме только чтение.
```bash
# 4. Монтируем логический том
sudo mount -o ro /dev/vg_name/lv_name /mnt
```
```bash
# 5. После работы очищаем
sudo umount /mnt
sudo vgchange -an
sudo kpartx -d /dev/loop0
sudo losetup -d /dev/loop0
```
### Примечания
- **Проверка режима только чтение**: Убедитесь, что монтирование выполнено с опцией `ro`. Проверить можно командой:
```bash
mount | grep /mnt
```
В выводе должно быть указано `(ro`).
- **Ошибки монтирования**: Если монтирование не удаётся, проверьте файловую систему на ошибки с помощью `fsck` (но только для чтения: `fsck -n`).
- **Права**: Для всех операций требуются права суперпользователя (`sudo`).
- **Очистка**: Всегда размонтируйте и отключайте loop-устройства после работы, чтобы избежать конфликтов.
- **LVM**: Для работы с LVM установите пакет `lvm2` (`sudo apt install lvm2` на Debian/Ubuntu).