关于镜像文件校验
- 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
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
在做校验值对比时,如果存在和镜像文件对应的 .md5/.sha1/.sha256/.sha512
文件,则会优先使用它,就不会再继续查找 VENTOY_CHECKSUM
文件了。
否则会使用 VENTOY_CHECKSUM
文件,此时会优先从和镜像文件同目录下的 VENTOY_CHECKSUM
文件中查找(如果存在的话),
找不到则继续从全局 VENTOY_CHECKSUM
文件中查找(如果存在的话)。如果最终仍然找不到则不再做对比。
- 5. 截图