You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对MMC设备中指定扇区间的数据计算校验和(针对引导分区前的扇区)

如何对MMC设备中指定扇区间的数据计算校验和(针对引导分区前的扇区)

嗨,我来帮你搞定这个MMC设备指定扇区校验和的问题!首先先明确你的需求:要对BOOT分区(从扇区6144开始)之前的所有扇区计算校验和,先把你给出的分区信息整理成清晰的表格:

自定义分区区域表

Area NameSizeFrom (sector #)To (Sector #)
SPL512kB641077
U-Boot2MB20486143
BOOT256MB6144530431
rootfs-530432-

fdisk 查看的分区表

DeviceBootStartEndSectorsSizeIdType
/dev/mmcblk0p16144530431524288256M83Linux
/dev/mmcblk0p2530432-----

接下来给你两种常见的校验和计算方式,一种是直接计算所有引导分区前的扇区,另一种是单独计算SPL、U-Boot这类特定区块:


方式一:计算BOOT分区前的全部扇区(0~6143扇区)

默认MMC设备的扇区大小是512字节,我们可以用dd命令读取指定范围的扇区数据,再配合校验和工具(比如md5sum、sha256sum、crc32)直接计算,无需生成临时文件:

用MD5计算校验和

sudo dd if=/dev/mmcblk0 bs=512 count=6144 | md5sum

用SHA256计算校验和

sudo dd if=/dev/mmcblk0 bs=512 count=6144 | sha256sum

用CRC32计算校验和

如果你的系统有crc32命令(嵌入式系统或安装libarchive-zip-perl包后可用):

sudo dd if=/dev/mmcblk0 bs=512 count=6144 | crc32

注意:如果你的MMC设备扇区大小不是512字节,可以用fdisk -l /dev/mmcblk0查看扇区大小,然后把bs参数改成对应值,同时调整count:比如扇区是4096字节,那么count=6144/8=768,命令就变成sudo dd if=/dev/mmcblk0 bs=4096 count=768 | md5sum


方式二:单独计算特定区块(比如SPL或U-Boot)

如果你只需要对SPL、U-Boot这类单独区域计算校验和,可以用skip参数跳过前面的扇区,再用count指定读取的扇区数:

计算SPL区域(64~1077扇区)

# 计算扇区数:1077-64+1=1014
sudo dd if=/dev/mmcblk0 bs=512 skip=64 count=1014 | md5sum

计算U-Boot区域(2048~6143扇区)

# 计算扇区数:6143-2048+1=4096
sudo dd if=/dev/mmcblk0 bs=512 skip=2048 count=4096 | md5sum

小提示

  • 所有操作需要root权限,所以命令前要加sudo
  • 如果担心误操作,可以先把扇区数据导出到临时文件备份,再计算校验和:比如sudo dd if=/dev/mmcblk0 of=/tmp/pre_boot_backup.bin bs=512 count=6144,然后对这个备份文件计算校验和
  • 校验和可以用来验证这些引导区域的数据是否被篡改,或者在烧写后确认数据正确性

备注:内容来源于stack exchange,提问作者foxtrot22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 14:39:34