2つのパーティションを含む外部USBフラッシュドライブがMy Raspberry Piに接続されています。dd
フラッシュドライブの最初のパーティションがイメージファイルの最初のパーティションと異なる場合は、この外部フラッシュドライブにイメージファイルを保存したいと思います。
これを達成するためにチェックサムを比較します。
フラッシュドライブパーティションのチェックサムを計算するのは簡単です。
md5sum /dev/sda1
ところで、イメージファイルに保存されている最初のパーティションのチェックサムを計算する方法は?
私はDebian 10オペレーティングシステムを使用しています。
ベストアンサー1
losetup --partscan --find --show /path/to/disk.img
以下を使用して、イメージとそのパーティションに1つ以上のループデバイスを設定できます。/dev/loopN
はい
dd if=/dev/zero bs=1M count=100 >/tmp/100M.img pimg() { parted /tmp/100M.img --align optimal unit MiB "$@"; } pimg mklabel gpt pimg mkpart primary 2 50 pimg mkpart primary 51 100% pimg print Model: (file) Disk /tmp/100M.img: 100MiB Sector size (logical/physical): 512B/512B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 2.00MiB 50.0MiB 48.0MiB primary 2 51.0MiB 100MiB 49.0MiB primary lo=$(losetup --partscan --find --show /tmp/100M.img); echo $lo /dev/loop0 ls ${lo}* /dev/loop0 /dev/loop0p1 /dev/loop0p2
2つのチェックサムを作成する代わりに(既存のターゲットとソースイメージを完全に読み取る必要があります)を使用してください
cmp
。これはバイト不一致が発生するとすぐに停止するため、チェックサムを生成するよりも効率的です。 (そうでない場合は最後まで読みますが、使用した選択肢よりも遅くはありませんmd5sum
。)cmp /dev/loop0p1 /path/to/existing_image
たとえば、ツールを引き続き使用する場合は、
md5sum
以前に作成したループデバイスを使用できます。md5sum /dev/loop0p1
使用しないでください
dd
- これ少なくとも使用速度は速いcat
または、よりpv
簡単な方法もあります(覚えておくべき退屈なオプションがなく、誤って入力するとデータが破損する可能性はありません)。pv /dev/loop0p1 >/path/to/existing_image