如何区分分布?

如何区分分布?

我正在使用树莓派。

似乎有各种各样的linux发行版,都是.img格式,我使用Win32DiskImager来刻录到SD卡。

我如何找出哪些文件已更改(有人说,此图像是从发行版 X 制作的,因此我可以使用 dist.X 作为一个文件,将其作为另一个文件并进行比较)以及如何确定是否是自定义发行版是否恶意?

我想找出 Windows 7 下的差异。不过,发行版始终是 Linux。

答案1

.img 文件是完整磁盘的映像文件。因此它可能包含超过 1 个分区。鉴于它是磁盘映像,您可以使用磁盘管理工具,例如fdisk查看它包含什么类型的分区。

archlinux-hf-2013-06-06.img 的内容

$ 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 类型的分区。第二个分区 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 分区(第二个):

$ 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

比较 .img 文件的内容

所以这是一个想法。您可以挂载 2 个 .img 文件/mnt1/mnt2然后对每个 .img 文件中包含的 2 个目录树执行递归比较。

安装了 2 个 .img 文件后,您可以运行这样的命令来进行比较:

$ diff -qr /mnt1 /mnt2

这将导致输出显示一个文件以及它在两个目录树中是否不同和/或丢失。

kpartx - 安装分区的替代方法

如果您懒得执行上述数学运算,fdisk则可以使用kpartx分区并将其映射到可以轻松安装/卸载的环回设备。命令会像这样:

挂载 .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

挂载 .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

参考

相关内容