Как смонтировать образ SD-карты, созданный с помощью dd?

Я создал изображение моей SD-карты Raspberry Pi с помощью dd:

sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img

SD-карта содержит два раздела (один vfat, один ext4), которые автоматически устанавливаются, когда я подключите карту.

Мой вопрос: как смонтировать эти разделы из файла .img?

Подробнее:

1
задан 15 June 2017 в 20:24

3 ответа

Чтобы избежать необходимости создавать отдельные изображения для каждого раздела или устанавливать такую ​​утилиту, как kpartx, вы можете монтировать каждый раздел отдельно, указав offset в команде mount.

Сначала просмотрите разделы в файле изображения и определите смещение с помощью fdisk:

$ fdisk -u -l rpi_image280914 

Disk rpi_image280914: 16.0 GB, 16012804096 bytes
255 heads, 63 sectors/track, 1946 cylinders, total 31275008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000cdac7

           Device Boot      Start         End      Blocks   Id  System
rpi_image280914p1   *        2048      514047      256000    c  W95 FAT32 (LBA)
rpi_image280914p2          540672    31242239    15350784   83  Linux

Возьмите сектор Start нужного раздела и умножьте это значение на размер Units. Итак, если вы хотите второй раздел, вы получите 540672 * 512 = 276824064.

Теперь создайте папку и смонтируйте раздел:

mkdir rpi_partition2
sudo mount -o loop,offset=276824064 rpi_image280914 rpi_partition2/

Как только вы закончите делать то, что хотите данные раздела:

sudo umount rpi_partition2/
rm -r rpi_partition2/
22
ответ дан 24 May 2018 в 09:36

, если ваша цель - изучить или изменить содержимое раздела (файловой системы), эта командная строка смонтирует файловую систему дампа sd-карты my_sdcard_dump.img в каталоге mount_dir.

part_id=2; INFILE=my_sdcard_dump.img; MOUNTPT=mount_dir PARTITION=${part_id}; sudo mount "$INFILE" "$MOUNTPT" -o loop,offset=$[ `/sbin/sfdisk -d "$INFILE" | grep "start=" | head -n $PARTITION | tail -n1 | sed 's/.*start=[ ]*//' | sed 's/,.*//'` * 512 ]
1
ответ дан 24 May 2018 в 09:36

Работа с изображением целого диска с несколькими разделами довольно сложна. Linux не был предназначен для чтения таблицы разделов из обычного файла, даже если он подключен к устройству loopback, поэтому вы должны тщательно идентифицировать смещения разделов и передать их в команду mount.

[d2 ] Предпочтительным способом было бы создавать отдельные изображения каждого раздела:

sudo dd if=/dev/sdf1 of=/home/myusername/raspberry-backup-sdf1-2014-04-10.img
sudo dd if=/dev/sdf2 of=/home/myusername/raspberry-backup-sdf2-2014-04-10.img

Теперь вы можете легко обрабатывать эти файлы, как если бы они были отдельными разделами на диске, монтируя их, как обычно, на реальном диске раздел, сопоставляя их с довольно сложным . Устройство loop или loopback-устройство - это виртуальное устройство, которое обеспечивает уровень перевода для Linux для обработки файла в виде блочного устройства (например, диска или раздела).

Устройства цикла, как правило, /dev/loop0 через /dev/loop8. Определите неиспользуемое устройство цикла с помощью команды losetup:

$ sudo losetup /dev/loop0
loop: can't get info on device /dev/loop0: No such device or address

Этот ответ указывает на неназначенное устройство цикла. Теперь мы можем назначить устройство цикла одному из наших файлов изображений:

$ sudo losetup /dev/loop0 /home/myusername/raspberry-backup-sdf1-2014-04-10.img

Отсутствие вывода из этой команды указывает на успех. Теперь /dev/loop0 для большинства целей функционально эквивалентен /dev/sdf1 вашей SD-карты, и вы можете установить его, как обычно:

sudo mount -t vfat /dev/loop0 /media/sdimage-1

Повторите этот процесс, используя другое устройство контура, чтобы установить другое раздел. Когда вы закончите, отключите файловые системы и отмените назначение устройств цикла:

sudo umount /dev/loop0
sudo losetup -d /dev/loop0
0
ответ дан 24 May 2018 в 09:36
  • 1
    Я хотел бы избежать создания двух файлов изображений, потому что среди других незначительных причин я хотел бы распространять изображение для других людей, чтобы они могли использовать его для инициализации своих SD-карт. Поэтому разные разделы, такие как / boot и т. Д., Должны быть в одном файле. – MrD 10 April 2014 в 19:33

Другие вопросы по тегам:

Похожие вопросы: