SDカードの複製と再マウント

SDカードの複製と再マウント

次のパーティションで構成されたマイクロSDカードがあります。

Disk /dev/sdb: 29,7 GiB, 31914983424 bytes, 62333952 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
Disklabel type: dos
Disk identifier: 0xa6202af7

Device     Boot  Start      End  Sectors Size Id Type
/dev/sdb1         8192   122879   114688  56M  c W95 FAT32 (LBA)
/dev/sdb2       122880 10608639 10485760   5G 83 Linux

複製したいのですが、合計29,7 GBではなく、これら2つのパーティションのみを複製したいと思います。だから私は次のコマンドを使用しました。

dd bs=1M count=$((5431623169 / (1024*1024) + 1)) if=/dev/sdb of=myimage.img
truncate -s 5431623169

これにより、2つのパーティションを持つイメージが作成されます。それでは、myimage.imgの2番目のパーティションをマウントして変更しようとしています。だから、次のコマンドを実行しています。

sudo mount -t ext4 -o loop,offset=62914560 myimage.img mount/

ただし、これは次のような出力を生成します。

mount: wrong fs type, bad option, bad superblock on /dev/loop1,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.

対照的に、sdb1はよくインストールされました。 blkidが返すので、ext4だと確信しています。

このマイクロSDカードはRaspberry Pi Linuxシステム用の完全なファームウェアです。 myimage.imgを新しいSDカードにフラッシュして実行すると、システムが正常に動作しているように見えるので、インストールできることを意味します。

上記のmountコマンドを使用して手動でマウントできないのはなぜですか?

答え1

問題は、最後のセクタの最後の512バイトをコピーしないことです。これにより、最後のパーティションが不完全になります。セクタをもう1つコピーすると、すべてが正しくインストールされます。

関連情報