DDで作成されたSDカードイメージをマウントする方法


21

次を使用して、Raspberry Pi SDカードのイメージを作成しましたdd

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

SDカードには2つのパーティション(1つはvfat、1つはext4)が含まれており、カードを接続すると自動的にマウントされます。

私の質問:.imgファイルからこれらのパーティションをマウントするにはどうすればよいですか?


詳細:

$ fdisk -l raspberry-backup-2014-04-10.img 

Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 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: 0x000981cb

                          Device Boot      Start         End      Blocks   Id  System
raspberry-backup-2014-04-10.img1            8192      122879       57344    c  W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2          122880     7761919     3819520   83  Linux

SDカードに書き込まずにイメージをマウントしますか?
OrangeTux 14

はい。.imgファイルに保存されているファイルシステムへのフルアクセスを取得して、コピー/変更/削除/などを行えるようにします。SDカードを持たないファイル
MrD

たぶん、この質問はあなたを助けます。
OrangeTux

残念ながら、これは機能しません。両方の試みを試みました。最初のものは/ dev / loop0p1デバイスを作成しませんでした。2番目の方法(それに応じて開始点を計算しました)はwrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error問題を投げます
-MrD

さらに、sudo fdisk -l /dev/loop0ディスク:/ dev / loop0には有効なパーティションテーブルが含まれていません。
MrD

回答:


33

各パーティションまたはのようなユーティリティをインストールするために別々の画像を作成する必要性を避けるために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サイズを掛けます。したがって、2番目のパーティションが必要な場合は、取得し540672 * 512 = 276824064ます。

次に、フォルダーを作成してパーティションをマウントします。

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

パーティションデータを使用して必要な処理を完了したら、次の手順を実行します。

sudo umount rpi_partition2/
rm -r rpi_partition2/

17

いくつかの追加テストの後、私は自分で解決策を見つけました: kpartx

sudo kpartx -a raspberry-backup-2014-04-10.img

このコマンドはを作成/dev/mapper/loop0p1しました/dev/mapper/loop0p2。その後、これらのパーティションを簡単にマウントできます。

sudo mount -o rw -t ext4 /dev/mapper/loop0p2 mount_target/

1

目的がパーティション(ファイルシステム)の内容を探索または変更することである場合、このコマンドラインは、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 ]

0

複数のパーティションを持つディスク全体のイメージを扱うのは非常に難しいです。Linuxは、ループバックデバイスに接続されている場合でも、通常のファイルからパーティションテーブルを読み取るように設計されていないため、パーティションのオフセットを慎重に識別し、mountコマンドに渡す必要があります。

望ましい方法は、各パーティションの個別のイメージを作成することです。

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

これらのファイルをディスク上の個々のパーティションのように簡単に処理し、ループデバイスにマッピングすることにより、通常の実際のディスクパーティションのようにマウントできます。ループデバイス、またはループバックデバイスは、ファイルをブロックデバイス(ディスクやパーティションなど)として扱うためのLinuxの変換レイヤーを提供する仮想デバイスです。

ループデバイスは通常/dev/loop0通過し/dev/loop8ます。losetup次のコマンドを使用して、未使用のループデバイスを特定します。

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

この応答は、割り当てられていないループデバイスを示します。これで、ループデバイスを画像ファイルの1つに割り当てることができます。

$ 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

2つの画像ファイルを作成しないようにしたいのは、他の小さな理由の中でも、他の人に画像を配布して、SDカードを初期化するために使用できるようにするためです。したがって、/ bootなどのさまざまなパーティションは1つのファイルに存在する必要があります。
MrD
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.