Conversation
Add optional host initramfs and cmdline artifacts to QEMU, U-Boot FIT, and board HTTP Boot runs. Bump the HTTP Boot wire protocol to v3 while retaining v2 loader sessions without new payload fields.
72b6895 to
1d1b47e
Compare
There was a problem hiding this comment.
审查总结:本 PR 将宿主 initramfs/cmdline 统一接入 QEMU、U-Boot、FIT 和 board HTTP Boot,并把 HTTP Boot 控制协议扩展到 v3;同时保留 v2 loader 的无新 payload 启动路径。影响范围覆盖公开配置 schema、U-Boot/QEMU 启动行为、session 文件上传以及 loader poll 响应,改动不是局部实现。当前没有历史 review、review comment 或 issue comment 需要跟进,也未发现独立的重复 initramfs PR。
验证情况:PR head 上的两个 GitHub Actions check 均为 completed/success,git diff --check origin/main...HEAD 通过。审查环境没有安装 cargo,因此按 rust-plan 建议的 cargo fmt --check、各变更 crate 的 clippy 和 test 均无法在本地运行;这不是 PR 导致的失败。实体板卡和完整 U-Boot/HTTP Boot handoff 也未在本地复现。
仍有两项 advisory 问题:
README.md:336-337新增的配置与 HTTP Boot v3 契约没有同步到README.en.md、docs/api.md和docs/axloader-network-control.md;这些权威文档仍描述仅上传内核的旧接口。请补齐新字段、请求头、限制、v2 拒绝规则和 session/hash 语义。ostool/src/board/config.rs:47的 typedserde(flatten)与deny_unknown_fields组合不受 Serde 支持,可能让未知 board TOML key 被静默忽略;请保留未知字段拒绝并补回归测试。具体意见见行内评论。
Powered by gpt-5.6-luna
|
已按审查意见在 3fb76d6 同步 README.en.md、docs/api.md、docs/axloader-network-control.md,并更新 README.md 中协议版本表述。文档现列出可选 initramfs/cmdline 字段、同 Session 先上传归档再发布内核的请求头和顺序、256 MiB/4095 字节限制、大小与 SHA-256 双端核对,以及 v2 loader 遇到新字段时的 boot_payload_unsupported 拒绝规则。配置解析意见已在行内回复。当前本地 cargo fmt --all -- --check、cargo clippy --target x86_64-unknown-linux-gnu --all-features、cargo build --target x86_64-unknown-linux-gnu --all-features、cargo test --target x86_64-unknown-linux-gnu -- --nocapture 均通过;新提交的 PR CI 仍在运行,尚未视为绿色。实体板卡 U-Boot/HTTP Boot 仍未验证。 |
There was a problem hiding this comment.
本 PR 将宿主 initramfs/cmdline 统一接入 QEMU、U-Boot、FIT 和 board HTTP Boot,并将 HTTP Boot 控制协议扩展到 v3,同时保留 v2 loader 的兼容启动路径。改动影响公开配置 schema、启动参数生成、session 文件上传以及 loader poll 响应,属于跨模块协议与启动流程变更,而非局部实现;未发现会破坏现有 v2 路径的具体问题。
验证情况:PR head 上的两个 GitHub Actions check 均为 completed/success,且 git diff --check origin/main...HEAD 通过。本审查环境未安装 cargo,因此 cargo fmt --check、相关 clippy 和 test 无法本地执行;这属于环境限制,不是 PR 导致的失败。实体板卡及完整 U-Boot/HTTP Boot handoff 未在本地复现,保留该验证风险。
我已核对历史 review 及评论:此前关于配置未知字段处理和文档同步的意见已在当前 head 修复,未发现仍未解决且需要阻止合并的合理意见。当前未发现剩余阻塞问题或需要追加的审查意见。
Powered by gpt-5.6-luna
问题
现有 QEMU、U-Boot 和 board 启动配置只能交接内核,无法一致地把宿主 initramfs 与内核命令行交给 TGOS。直接给裸 x86 ELF 使用 Linux
-initrdABI 也不成立;HTTP Boot 需要保证镜像与内核来自同一会话,并防止旧 loader 静默忽略新制品。改动
BootPayloadConfig { initramfs, cmdline },供 QEMU、U-Boot 和 board 配置复用。AArch64/RISC-V QEMU 直启使用-initrd/-append;UEFI QEMU 在 ESP 的EFI/BOOT/放置归档和命令行文件,裸 x86 直启请求明确报错。bootargs。串口命令对参数整体加引号,含单引号的值明确拒绝,避免命令解析改写。配套 TGOS 改动仍在本地联调:someboot/ax_hal 校验并预留 FDT 或 UEFI 镜像物理范围,axloader 传递 v3 制品,ax-fs-ng 与 ax-runtime 共享解包和内存根,Starry 按 Linux initramfs 顺序选择 PID 1。TGOS 目前只通过本地 Cargo patch 联调;本 PR 不包含任何指向本机的依赖。待本 PR 合并且相关 crate 发布到 crates.io 后,才会更新 TGOS 的正式依赖和锁文件并提 TGOS PR。
验证
ee8061c(feat(ostool): 支持可选 ELF 调试产物与元数据解析 #193)。其artifacts.analysis及各分析开关均默认关闭;省略新字段的旧.build.toml和仅启用部分开关的配置测试通过,现有配置文件无需补字段。feat(ostool): 支持可选 ELF 调试产物与元数据解析 #193 新增的公开 RustBuildConfig.artifacts会影响直接构造该结构体的调用方;配套 TGOS 本地调用已改用..Default::default(),cargo xtask clippy --package axbuild和完整cargo xtask test均通过。cargo fmt --all -- --checkcargo test -p ostool -p fitimage -p httpboot-protocol -p ostool-server,含 API 编译测试、FIT 结构、HTTP 会话及 v2/v3 拒绝路径。cargo clippy --target x86_64-unknown-linux-gnu --all-features、cargo build --target x86_64-unknown-linux-gnu --all-features。cargo publish --workspace --dry-run --locked:各包完成打包与验证;现有版本已发布的警告符合预期,没有上传。/init优先与磁盘回退、Axvisor AArch64 无块设备宿主根均通过;cargo xtask axloader test qemu验证 HTTP loader 下载、哈希与 UEFI 交接前的制品就绪。FIT 的归档关联由单元测试验证;没有实体板卡,因此 U-Boot
bootm和板端 HTTP Boot 到内核的完整链路尚未验证。此 PR 不请求也不执行合并或 crates.io 发布。Review 后续
3fb76d6将 board 配置 wire 中的宿主字段改为显式可选项,消除flatten与deny_unknown_fields的组合;TOML/JSON 未知字段及旧配置省略字段均有回归测试。cargo fmt --all -- --check、cargo clippy --target x86_64-unknown-linux-gnu --all-features、cargo build --target x86_64-unknown-linux-gnu --all-features、cargo test --target x86_64-unknown-linux-gnu -- --nocapture通过;PR 新 CI 待完成。