RaspberryPiを使用しています。
あらゆる種類のLinuxディストリビューションがあり、すべて.img形式で、Win32DiskImagerを使用してSDカードに書き込みます。
どのファイルが変更されたかを確認する方法(このイメージはディストリビューションXから作成されたため、dist。Xを1つのファイルとして使用し、彼をもう1つのファイルとして使用して比較できる)、およびカスタムディストリビューションかどうかを確認する方法悪意があるかどうか?
Windows 7での違いを理解したいと思います。ただし、ディストリビューションは常にLinuxです。
.imgファイルは、完全なディスクのイメージファイルです。したがって、複数のパーティションが含まれる場合があります。ディスクイメージの場合、fdisk
などのディスク管理ツールを使用して、含まれているパーティションの種類を確認できます。
$ fdisk -l archlinux-hf-2013-06-06.img
Disk archlinux-hf-2013-06-06.img: 1960 MB, 1960837120 bytes
64 heads, 32 sectors/track, 1870 cylinders, total 3829760 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: 0x0004f23a
Device Boot Start End Blocks Id System
archlinux-hf-2013-06-06.img1 * 2048 186367 92160 c W95 FAT32 (LBA)
archlinux-hf-2013-06-06.img2 186368 3667967 1740800 83 Linux
したがって、出力を見ると、.imgファイル内に2つのパーティションがあることがわかります。最初のrchlinux-hf-2013-06-06.img1は、FAT32タイプのパーティションです。 2番目のパーティションarchlinux-hf-2013-06-06.img2はLinuxパーティションです。
2つのパーティション(2048および186368)の開始セクターをメモします。後で必要になります。また、特定のセクターに含まれるバイト数(512バイト)にも注意してください。
Linuxパーティションをマウントするには、最初にバイト単位で開始位置を計算する必要があります。したがって、次の計算を行います。
part1: 2048 sectors * 512 bytes/sector = 1048576 bytes
part2: 186368 sectors * 512 bytes/sector = 95420416 bytes
したがって、Linuxパーティション(2番目のパーティション)をマウントするには、次のようにします。
$ Sudo mount -o loop,offset=95420416 archlinux-hf-2013-06-06.img /mnt/
注:FAT32パーティションをマウントするには、次のコマンドを使用できます。
$ Sudo mount -t vfat -o loop,offset=1048576 archlinux-hf-2013-06-06.img /mnt/
これで、内容を確認できます。
$ ls /mnt|columns -c 4
bin boot dev etc
home lib lost+found media
mnt opt proc root
run sbin srv sys
tmp usr var
完了したらパーティションをアンマウントするには、次のコマンドを実行します。
$ Sudo umount /mnt
だからここにアイデアがあります。たとえば/mnt1
と/mnt2
に2つの.imgファイルをマウントしてから、各.imgファイルに含まれる2つのディレクトリツリーの再帰的な比較を実行できます。
2つの.imgファイルがマウントされている状態で、次のようなコマンドを実行して比較を行うことができます。
$ diff -qr /mnt1 /mnt2
これにより、ファイルと、2つのディレクトリツリーでファイルが異なるか欠落しているかどうかを示す出力が生成されます。
fdisk
を使用して上記の計算を実行するのが面倒な場合は、kpartx
を使用して、簡単にマウント/アンマウントできるループバックデバイスにパーティションをマップできます。コマンドは次のようになります。
mount .imgファイル#1
$ Sudo kpartx -av your-image1.img
add map loop0p1 (252:5): 0 117187 linear /dev/loop0 1
add map loop0p2 (252:6): 0 3493888 linear /dev/loop0 118784
$ Sudo mount /dev/mapper/loop0p2 /mnt1
mount .imgファイル#2
$ Sudo kpartx -av your-image2.img
add map loop1p1 (252:5): 0 117187 linear /dev/loop1 1
add map loop1p2 (252:6): 0 3493888 linear /dev/loop1 118784
$ Sudo mount /dev/mapper/loop1p2 /mnt2