依赖、下载产物与忽略策略¶
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.bin、fw_payload.bin等固件二进制。Image、vmlinux、模块和内核构建树。- rootfs 压缩包、目录树和 ext4 镜像。
- 编译对象、可执行文件、缓存、抓包、日志和 core dump。
- 工具链压缩包或安装目录。
- 用户凭据、私钥、网络配置和机器特定绝对路径。
4. 来源策略¶
技术依赖优先级:
- 项目官方发布页或官方源码仓库的签名/固定提交。
- 可信 Linux 发行版或工具链发布源。
- 经用户明确批准的镜像提供方。
每个来源记录:名称、用途、项目主页、精确版本或 commit、下载 URL、发布日期、许可证、SHA-256 和验证日期。版本浮动 URL 不能作为唯一复现依据。
5. Linux 最小系统¶
最小系统必须真实下载或从锁定源码/包集合构建,包含:
- 可工作的 init 与 Shell。
- ext4 支持匹配的用户空间。
- macOS 无网络验收所需的
ls、pwd、cat以及可挂载的/proc。 - Linux 网络档位额外需要
dhclient、ping、IP 配置和 DNS 解析所需内容。 - VirtIO 设备所需
/dev、/proc、/sys挂载流程。 - 不含默认密钥、外部服务凭据或个人配置。
选择 Buildroot、BusyBox 加发行版工具、或其他方案会影响 dhclient 可用性、许可证和可复现性。实施前必须比较方案并由用户决定,不得自行用更快方案替代命令要求。
6. 校验流程¶
- 下载到
artifacts/downloads/。 - 在解压、构建或执行前计算 SHA-256。
- 与官方校验值比对;若官方未提供,记录本项目锁定值和首次获取来源。
- 校验失败立即停止,不继续使用文件。
- 构建输出可另计算 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 包含最终验收所需工具。
- 所有来源和许可证完整,无虚假或未经验证的校验记录。