sha256sum -c 必须配合格式正确的校验文件使用:每行须为“64位哈希+两个空格+完整文件路径”,禁止bom、多余空行或windows换行符;校验失败返回1,格式错误返回2,成功返回0,脚本中应直接用if sha256sum -c file; then判断而非检查输出。

sha256sum -c 怎么用才不会报错
直接运行 sha256sum -c 报 sha256sum: standard input: no properly formatted SHA256 checksum lines 是最常见问题,本质是校验文件格式不对。官方发布的 .sha256 文件(如 ubuntu-22.04-live-server-amd64.iso.sha256)通常只有一行哈希值加空格加文件名,但 sha256sum -c 要求每行必须严格匹配默认输出格式:64位哈希 + 两个空格 + 文件路径。
实操建议:
- 检查校验文件内容是否含多余空行、BOM头或 Windows 换行符(
^M),可用file checksum.sha256和cat -A checksum.sha256查看 - 若校验文件只有哈希值(无文件名),手动补全:比如原文件叫
centos7.iso,就改成abc...def centos7.iso(注意两个空格) - 更稳妥的做法是用官网提供的
SHA256SUMS文件(不是.sha256),它本身就是为-c设计的格式 - 校验时确保当前目录下存在待校验文件,且文件名与校验文件中写的完全一致(包括大小写和扩展名)
校验失败时 exit code 是多少
sha256sum -c 不输出错误信息不代表成功——它靠退出状态码说话。成功时返回 0,任意一个文件校验失败返回 1,遇到格式错误或文件不存在则返回 2。这点在脚本里特别关键,不能只看终端有没有打印 OK。
实操建议:
- 写自动化流程时,务必用
if sha256sum -c SHA256SUMS; then ... else ... fi判断,而不是依赖echo $? == 0后再查 - 加
--quiet可以屏蔽所有 OK 输出,只留失败提示,配合--status还能彻底不输出任何内容 - 如果校验文件里列了 10 个文件,其中 1 个损坏,
sha256sum -c仍会返回1,但默认会继续校验完全部——这比中途退出更利于定位问题
为什么不用 md5sum 或 sha1sum
不是不能用,而是不推荐。MD5 已被证实可碰撞(两份不同内容生成相同哈希),SHA-1 也在 2017 年被 Google 实际攻破。Linux 发行版官网从 2015 年起基本弃用 MD5/SHA-1,现在只提供 SHA-256 或更强的 SHA-512。
实操建议:
- 看到官网同时提供
.md5和.sha256,优先用后者;若只有.md5,说明该镜像源更新滞后,建议换官方主站或可信镜像站 -
md5sum和sha256sum命令用法几乎一样,但算法强度差一个数量级,对安全敏感场景(如生产环境部署、U 盘启动盘制作)必须用 SHA-256 - SHA-256 计算耗时略高,但对几 GB 的 ISO 文件,差异在毫秒级,无需权衡性能
校验通过但系统安装仍失败,可能漏了什么
SHA-256 校验只保证「文件比特流未变」,不等于「能正常安装」。常见脱节点在于:写入 U 盘过程出错、U 盘本身有坏块、BIOS/UEFI 启动模式不匹配、ISO 文件虽完整但被厂商标记为「仅限特定硬件」。
实操建议:
- 校验通过后,用
isoinfo -d -i your-file.iso确认 ISO 是合法光盘镜像(输出含CD-ROM字样),排除某些“伪 ISO”压缩包伪装成镜像的情况 - 制作启动盘时别用普通文件复制,必须用
dd或balenaEtcher等专用工具,否则校验通过也白搭 - 部分发行版(如 Arch Linux)要求校验 GPG 签名而非仅哈希值,
sha256sum无法覆盖这一层信任链











