离线镜像 1.0.2 SSH 首启失败修复记录
现场结果
- 设备供电后网络间歇可达,但 SSH 22 和控制服务 8080 在 20 分钟门槛内始终未开放。
- FAT 状态文件报告
stage=ssh失败;账户、sudoers、受管 SSH 配置、服务启用链接、machine-id 和新 SSH 主机密钥均已写入。 - ext4 systemd journal 的直接证据为:
sshd -t报告缺少 privilege separation 运行目录/run/sshd,随后首启服务以退出码 1 失败。
根因与修复
- 首启 unit 通过
Before=ssh.service正确阻止 SSH 提前监听,因此 systemd 尚未为ssh.service创建易失的/run/sshd。 - 首启程序却在服务启动前直接执行
sshd -t/-T,错误依赖了该目录已经存在。 configure_ssh现于策略校验前创建/run/sshd并设置模式0755;需求和测试映射同步增加该门槛。- 同版本正式 IMG 只刷新 FAT bundle,第二分区保持核桃派已验证的 SHA-256
a3207843b6c405df3abb827c80ffd60285788541e62fa6fdd8335498084a9f95不变。失败卡上的三个 FAT 载荷文件已逐字更新并读回,配置区摘要写前写后一致。
自动验证
- SSH/镜像聚焦测试:11 项通过。
- 完整 Python:304 项通过、8 项跳过。
- 前端:55 项通过,全部 JavaScript 与相关 shell 语法检查通过。
- 新正式 IMG 与发布记录摘要一致;旧摘要已失效,不得继续使用。
本记录不包含账户、密码、Wi-Fi、IP、主机密钥内容或其他设备身份值。修复后的真实首次启动、SSH、sudo、网页和再次重启仍需重新验收。