关于镜像文件校验

  • 1. 背景介绍

有些小伙伴使用U盘时的习惯不好,经常直接拔盘。 尤其是在拷贝ISO文件的时候,如果拷贝完成接着就拔盘,此时可能还有部分数据还存在系统的缓存中,还没有真正写到U盘里面, 此时直接拔盘的结果就是拷贝到U盘的ISO文件有错误,可能就会无法启动。
由于 Linux 和 Windows 采用的缓存机制不一样,这个问题在 Linux 系统中尤其明显,非常容易出问题。
因此我们都要养成良好的使用U盘的习惯,使用系统提供的 “弹出”“安全移除” 等安全操作,Linux系统可以在终端执行 sudo sync 命令。
再有一点就是可以在文件拷贝完之后对文件进行校验。

  • 2. 校验方式

对文件进行校验有很多种方式,可以在原来的系统内进行校验。本文中介绍的是在 Ventoy 界面上进行校验的方法。
在原来的系统内进行校验的话存在一些特殊的情况。比如还是像上面说的那样,因为对于用户来说,缓存是透明的,读写文件都会经过缓存这一层。读出来的数据正确不代表U盘里面的数据也是对的, 因为数据有可能是从缓存中读出来的,还没有真正写到U盘里面。

因此推荐在 Ventoy 界面上进行校验,这里计算出的校验值肯定是和U盘硬件中的数据一致的。

  • 3. 使用方法

Ventoy 提供了一个计算文件校验值的快捷键 m。在 Ventoy 主界面上,选择对应的镜像文件,按 m 然后选择校验的类型即可。
更新:从1.0.80版本开始,可以直接在 二级启动菜单 中对镜像文件进行校验。

  • 4. 校验文件对比

如果在ISO文件所在的位置同时存在一个文件名 + .md5/.sha1/.sha256/.sha512 的文件,则在计算完之后还会自动去和该文件内的校验值进行对比。
注意,要求是在原来文件名的基础上增加一个 .md5/.sha1/.sha256/.sha512 后缀名,而不是把原来的后缀名改成这些后缀。例如:

/ISO/Linux/tails-amd64-4.23.iso
/ISO/Linux/tails-amd64-4.23.iso.md5
/ISO/Linux/tails-amd64-4.23.img
/ISO/Linux/tails-amd64-4.23.img.md5

/ISO/Windows/en_Windows11.iso
/ISO/Windows/en_Windows11.iso.sha1

/ISO/ChromeOS/cloudready-free-92.3.4-64bit.img
/ISO/ChromeOS/cloudready-free-92.3.4-64bit.img.sha256

对应的 .md5/.sha1/.sha256/.sha512 文件内部记录了对应文件的校验值,支持以下两种格式(以 sha256 为例):

f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830
f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830  ubuntu-21.10-desktop-amd64.iso

  • 5. 截图