<===

ProNotes

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).
← Previous Next →
Back to list