Skip to content

依赖、下载产物与忽略策略

1. 基本原则

  • ART-REQ-001:外部固件、内核、rootfs、磁盘镜像、下载缓存、构建输出和运行日志不得提交 Git。
  • ART-REQ-002:所有外部产物必须来自可审计来源,并记录版本、许可证和 SHA-256。
  • ART-REQ-003:任何联网下载、依赖安装和构建命令执行前必须说明用途并获得用户确认。
  • ART-REQ-004:不得使用来源不明的预编译镜像替代失败下载,也不得伪造校验结果。
  • ART-REQ-005:仓库必须保留可复现的配置、补丁、脚本和校验清单,但不保留大二进制结果。

2. 目录约定

所有仓库内路径从根目录计算:

artifacts/
├── downloads/      # 原始下载缓存
├── firmware/       # OpenSBI 等固件构建结果
├── kernel/         # Linux 内核构建结果
├── rootfs/         # rootfs 工作目录或压缩包
├── disk/           # rootfs.ext4 等磁盘镜像
└── logs/           # 构建、测试、UART 和网络日志

实际创建目录和修改 .gitignore 属于后续实施任务 BLD-005,必须另行说明并取得确认。

3. 可提交与不可提交内容

3.1 可提交

  • 下载/构建脚本源文件。
  • Linux .config、OpenSBI 构建参数和 rootfs 包清单。
  • 项目自有补丁及补丁来源说明。
  • 小型纯文本 SHA-256 清单、版本锁定文件和许可证说明。
  • 去敏后的测试模板和复现步骤。

3.2 不可提交

  • opensbi.binfw_payload.bin 等固件二进制。
  • Imagevmlinux、模块和内核构建树。
  • rootfs 压缩包、目录树和 ext4 镜像。
  • 编译对象、可执行文件、缓存、抓包、日志和 core dump。
  • 工具链压缩包或安装目录。
  • 用户凭据、私钥、网络配置和机器特定绝对路径。

4. 来源策略

技术依赖优先级:

  1. 项目官方发布页或官方源码仓库的签名/固定提交。
  2. 可信 Linux 发行版或工具链发布源。
  3. 经用户明确批准的镜像提供方。

每个来源记录:名称、用途、项目主页、精确版本或 commit、下载 URL、发布日期、许可证、SHA-256 和验证日期。版本浮动 URL 不能作为唯一复现依据。

5. Linux 最小系统

最小系统必须真实下载或从锁定源码/包集合构建,包含:

  • 可工作的 init 与 Shell。
  • ext4 支持匹配的用户空间。
  • macOS 无网络验收所需的 lspwdcat 以及可挂载的 /proc
  • Linux 网络档位额外需要 dhclientping、IP 配置和 DNS 解析所需内容。
  • VirtIO 设备所需 /dev/proc/sys 挂载流程。
  • 不含默认密钥、外部服务凭据或个人配置。

选择 Buildroot、BusyBox 加发行版工具、或其他方案会影响 dhclient 可用性、许可证和可复现性。实施前必须比较方案并由用户决定,不得自行用更快方案替代命令要求。

6. 校验流程

  1. 下载到 artifacts/downloads/
  2. 在解压、构建或执行前计算 SHA-256。
  3. 与官方校验值比对;若官方未提供,记录本项目锁定值和首次获取来源。
  4. 校验失败立即停止,不继续使用文件。
  5. 构建输出可另计算 SHA-256,用于本地验收复现。

不得在文档中预填没有实际计算过的哈希值。

7. .gitignore 规格

实施时 .gitignore 至少应精确覆盖:

/artifacts/
/build/
/cmake-build-*/
*.o
*.a
*.so
*.d
*.bin
*.img
*.ext4
*.pcap
*.log
core
core.*

最终规则必须审查避免误排源码、配置、许可证或测试 fixture。通配规则若可能排除可提交输入,应改为目录级精确规则。

8. 许可证与教育用途

  • 项目自身已采用仓库根目录 LICENSE 中的 MIT License。
  • 第三方依赖保持其原许可证,MIT 不会覆盖第三方权利。
  • README 的独立、非官方、教育用途免责声明不能替代遵守第三方许可证。
  • 发布脚本、补丁或配置时必须保留所需版权和许可证通知。

9. 验收条件

  • 仓库状态检查证明外部二进制均未被跟踪。
  • 从干净环境按文档可获得相同版本和校验值的产物。
  • 构建出的 Linux/rootfs 包含最终验收所需工具。
  • 所有来源和许可证完整,无虚假或未经验证的校验记录。