关于镜像文件校验

  • 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. 校验文件对比
  • 4.1 .md5/.sha1/.sha256/.sha512 文件
  • 如果在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 文件内部记录了对应文件的校验值,支持以下3种格式(以 sha256 为例):

    f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830
    
    f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830  ubuntu-21.10-desktop-amd64.iso
    
    SHA256 (ubuntu-21.10-desktop-amd64.iso) = f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830
    

  • 4.2 VENTOY_CHECKSUM 文件
  • 你也可以把文件的校验值统一写到一个 VENTOY_CHECKSUM 文件中,Ventoy 会自动从这个文件中找到对应的校验值做对比。
    这里有两种类型的 VENTOY_CHECKSUM 文件:
    一种是和ISO文件位于同一个目录下的 VENTOY_CHECKSUM 文件。 另外一种是全局 VENTOY_CHECKSUM 文件(即位于根目录下)。
    你可以在每一个子目录下放一个 VENTOY_CHECKSUM 文件,该文件中只记录对应目录内的镜像文件的校验值。
    你也可以把所有目录、子目录下的镜像文件的校验值全部记录到全局 VENTOY_CHECKSUM 文件中。

    VENTOY_CHECKSUM 文件只支持以下2种格式(以 sha256 为例):

    f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830  ubuntu-21.10-desktop-amd64.iso
    
    SHA256 (ubuntu-21.10-desktop-amd64.iso) = f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830
    


    注意,对于全局 VENTOY_CHECKSUM 文件,需要使用以根目录为基准的完整路径,例如:

    f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830  ISO/ubuntu-21.10-desktop-amd64.iso
    
    SHA256 (ISO/ubuntu-21.10-desktop-amd64.iso) = f8d3ab0faeaecb5d26628ae1aa21c9a13e0a242c381aa08157db8624d574b830
    

  • 4.3 校验文件优先级
  • 在做校验值对比时,如果存在和镜像文件对应的 .md5/.sha1/.sha256/.sha512 文件,则会优先使用它,就不会再继续查找 VENTOY_CHECKSUM 文件了。
    否则会使用 VENTOY_CHECKSUM 文件,此时会优先从和镜像文件同目录下的 VENTOY_CHECKSUM 文件中查找(如果存在的话),
    找不到则继续从全局 VENTOY_CHECKSUM 文件中查找(如果存在的话)。如果最终仍然找不到则不再做对比。

  • 5. 截图