feat(starry-nixos): add Stage-2 NixOS userspace baseline - #1923
feat(starry-nixos): add Stage-2 NixOS userspace baseline#1923silicalet wants to merge 73 commits into
Conversation
# Conflicts: # os/StarryOS/kernel/src/pseudofs/proc.rs # os/arceos/modules/axfs-ng/src/file/handle.rs # test-suit/starryos/qemu/system/bugfix-proc-sys-kernel-hostname/src/main.c
…dd-starry-nixos # Conflicts: # os/StarryOS/kernel/src/pseudofs/proc.rs
There was a problem hiding this comment.
本 PR 不是 release 升级,新增 x86_64 StarryNixOS Stage-2、app-owned rootfs/Axbuild 准备与 QEMU 验收,同时带入 StarryOS VFS、proc、任务、网络、epoll 的 Linux ABI 修复以及 someboot 启动熵链路。
book/guideline/feature-development.md 与 Starry syscall 指南均适用:前者对应新的 PID 1/rootfs/UEFI-NVMe 运行路径,后者对应改动的用户可见 VFS、xattr、clone3、execve、time、epoll 等语义。NixOS app 与默认 Alpine rootfs 隔离,新增 system C 用例处于 system/<subcase>/{CMakeLists.txt,src} 布局,根 CMake 可发现;未发现 [patch.crates-io]。不过存在下列阻塞性重复/冲突风险。
本地验证:review_pr_helper.py prepare-review、git diff --check origin/dev...HEAD、cargo fmt --all --check、bash apps/starry/nixos/build-rootfs.sh --self-test 均通过。已运行 app CLI 的配置解析复核;Nix/direnv/nixfmt 不在环境中,下载 nixfmt 也未成功,故未将 Stage-2 QEMU 验收表述为本地通过。组织当前 HEAD 的 checks 不是全绿(75 项中有 1 个 failure、若干 cancelled/skipped;失败项为 Axvisor self-hosted board),不能替代本 PR 声明的 NixOS x86_64 QEMU 验收。
重叠分析:base 中没有 apps/starry/nixos 或 AppOwned rootfs;相关开放 PR 中 #1904 仍在 open,且已实现同一可信 boot entropy/boot_id 链路和同名 system 回归。因此本 PR 与 #1904 在启动/ABI 契约上冲突,不是可独立合入的重复实现。此前评论中关于临时 specs/ 设计资料的争议已考虑,未将其作为本轮独立 finding。
待解决项见行内评论:请明确以 #1904 或本 PR 为唯一所有者,移除另一条重复链路(或明确取代并关闭 #1904),然后在合入后的基线上重新验证。其余检查中未发现额外的确定性阻塞问题。
Powered by gpt-5.6-terra
|
|
||
| static BOOT_ENTROPY: StaticCell<Option<BootEntropy>> = StaticCell::uninit(); | ||
|
|
||
| pub(crate) fn capture() { |
There was a problem hiding this comment.
反正1904也approve了,已经连带1901转为非open状态
There was a problem hiding this comment.
先等我修一下loongarch的qemu/system
|
补充说明:x86_64 根因是 验证结果:
当前测试命令挂载了 |
There was a problem hiding this comment.
本 PR 不是 release 升级,新增 x86_64 StarryNixOS Stage-2/app-owned rootfs/Axbuild-QEMU 路径,并合入 StarryOS 的 VFS、proc、任务、网络、epoll 等 Linux ABI 兼容改动及 someboot 启动熵传递。
book/guideline/feature-development.md 适用:这是包含 PID 1、rootfs、UEFI/NVMe 和跨层 ABI 的高风险功能;Starry syscall 指南亦适用于这些用户可见 ABI 改动。实现采用 app-owned rootfs,与默认 Alpine 路径隔离;新增 qemu/system C 用例的 system/<subcase>/{CMakeLists.txt,src} 布局可由根 CMake 发现,grouped wrapper 会以失败 marker 传递子用例失败。未发现 [patch.crates-io]。除下列问题外,改动未显示会改变其他 app 的默认 rootfs 契约。
本地验证通过:review_pr_helper.py prepare-review、git diff --check origin/dev...HEAD、cargo fmt --all --check、bash apps/starry/nixos/build-rootfs.sh --self-test、cargo test -p someboot --lib(52 项)、以及 Axbuild 的 AppOwned rootfs 与 matcher 定向单测。未将这些结果当作 Stage-2 来宾启动证据:环境有 QEMU,但没有 Nix/direnv;按文档尝试官方 Nix 安装器时,root 安装需要不可用的 sudo 来创建 /nix。当前 HEAD 的组织 CI run 结论为 failure,失败 job 是 Axvisor self-hosted board 的 Run command,与本 PR 的新 NixOS app 无直接关联;该 PR CI 也未成功证明新的 app 运行。
已考虑先前评论:关于缺失 specs/ 的评论已由作者说明不应提交该私有 planning 目录,因此不再作为本轮独立 finding。关于 boot entropy 的先前评论仍有效:#1904 当前仍为 open,且与本分支实现重叠。重复/开放 PR 搜索中未发现另一条 StarryNixOS/AppOwned rootfs 实现;base 也没有等价 app。剩余阻塞项见两条行内评论:补齐可复现的当前 HEAD NixOS QEMU 验收,并明确 #1904 与本 PR 的唯一所有权。
Powered by gpt-5.6-terra
| ```bash | ||
| apps/starry/nixos/build-rootfs.sh --self-test | ||
| TMPDIR="$PWD/.ci-cache/tmp" \ | ||
| direnv exec . cargo xtask starry app qemu -t nixos --arch x86_64 |
There was a problem hiding this comment.
阻塞(app 运行验证):第 50 行声明的 direnv exec . cargo xtask starry app qemu -t nixos --arch x86_64 是新增 app 的唯一端到端验收,但当前 HEAD 未有可复现的执行证据。审查环境具备 QEMU、但没有 Nix/direnv;按文档尝试安装 Nix 又因 root 安装器依赖不可用的 sudo 创建 /nix 而停止。当前 PR CI 也没有成功覆盖该 app(失败项是无关的 Axvisor board job)。请提供可用的 Nix/Lix+direnv 准备路径,或将构建锁定镜像并运行该 x86_64 QEMU 命令加入 PR CI,确认来宾按顺序输出全部 Stage-2 marker。builder/matcher 单测不能替代真实来宾启动。
| static BOOT_ENTROPY: StaticCell<Option<BootEntropy>> = StaticCell::uninit(); | ||
|
|
||
| pub(crate) fn capture() { | ||
| let entropy = select_boot_entropy(uefi_entropy(), crate::fdt::boot_entropy()) |
|
CI 中 LoongArch 的失败已定位并修复于提交 这不是 ptrace 修复的架构回归。 根因是 修复内容:
验证:
第一次 clippy 尝试因本地磁盘已满报 |
|
补充说明:后续验证发现,提交 现已通过签名提交
验证结果:
另有签名提交 |
|
CI run
|
There was a problem hiding this comment.
本 PR 不是 release 版本升级,新增了 x86_64 StarryNixOS Stage-2 用户态、app-owned rootfs/Axbuild 准备和 QEMU 验收配置,并包含 StarryOS VFS、proc、任务、网络、epoll 等 Linux ABI 路径及启动熵链路的兼容性修复。
book/guideline/feature-development.md 适用:这是新增 PID 1/rootfs/UEFI-NVMe 运行路径的高风险能力;book/guideline/starry/syscall.md 也适用,因为改动覆盖用户可见的 VFS、xattr、clone/exec、time、epoll 等语义。实现将 NixOS rootfs 与默认 Alpine 路径隔离,新增 system C 用例保持 system/<subcase>/{CMakeLists.txt,src} 布局并由根 CMake 发现;未发现 [patch.crates-io]。但下述 app 运行验证缺口仍阻塞合入。
验证:固定 HEAD 4677641b100975019553732120680e006b84ca53 与 review helper 的 prepare-review 均通过;git diff --check origin/dev...HEAD、cargo fmt --all --check、bash -n apps/starry/nixos/build-rootfs.sh 和 bash apps/starry/nixos/build-rootfs.sh --self-test 通过。后者只覆盖工件校验脚本,不能证明 Nix closure 构建或来宾 Stage-2 行为。当前组织 CI 的格式/静态检查通过,但没有证据表明 NixOS app 的实际 x86_64 QEMU 工作流在本 HEAD 上执行;检查矩阵还包含预期跳过/取消项,不能替代该验收。环境中的 nix、direnv 不可用;尝试的工具链准备未在本轮完成,因此未将 app 运行表述为通过。
既有评论已审阅:此前关于缺失 specs/ 设计入口的评论仍对应当前 HEAD(路径不存在),但作者已说明不希望该自定义目录入库;本次不将它作为独立 finding。此前 #1904 的启动熵重复风险已因本分支合入该 PR 的变更而不再是独立冲突。base 中未见等价 apps/starry/nixos / AppOwned rootfs 能力;#1904 是已合并进本分支的相关启动熵来源,未发现仍需要以重复 PR 阻塞的同类开放实现。
影响范围包括 StarryOS 默认 rootfs 选择、QEMU/NVMe 启动、PID 1/systemd 所依赖的 syscall/proc/VFS 合约,以及新增的回归用例。除以下 app 运行验证外,静态审查未确认另一项确定性阻塞缺陷。
待解决问题:
阻塞:本 PR 新增并声明支持 apps/starry/nixos 的 x86_64 QEMU Stage-2 工作流,但当前 HEAD 无法按 README 的命令完成实际运行。环境中没有 nix/direnv;build-rootfs.sh --self-test 只覆盖工件校验辅助逻辑,不能替代构建 Nix closure、启动 QEMU 和观察来宾成功标记。现有组织 CI 也没有提供该 app 在当前 HEAD 执行 STARRY_NIXOS_REUSE_ROOTFS=1 direnv exec . cargo xtask starry app qemu -t nixos --arch x86_64 的证据。请提供可复现的受支持环境,或新增在当前 PR 上执行此命令并保留完整 phase/退出证据的 CI;否则新增 app 的实际可用性仍无法验证。
Todo 审计:约束/指南、HEAD、差异、既有评论、CI、重复分析、测试布局和失败传播均已完成;新增 app 的准备与实际 QEMU 运行因上述环境和 CI 证据缺失而为阻塞项。建议由测试/rootfs、Starry syscall 与文件系统/调度领域维护者继续复核。
Powered by gpt-5.6-terra
|
原来没有.envrc说明根本没人用direnv, 这个东西性质和nix flake + devShell一样只是提供一个开发环境 |
There was a problem hiding this comment.
本 PR 新增 x86_64 StarryNixOS Stage-2 用户态、app-owned rootfs/axbuild 准备与 QEMU 验收,同时包含 StarryOS 的 VFS、proc、任务、网络、epoll 等 Linux ABI 修复及 someboot 启动熵链路;不是 release 版本升级 PR。
feature-development.md 适用:这是新的 PID 1/rootfs/UEFI-NVMe 运行路径和跨层 ABI 行为,属于高风险功能;starry/syscall.md 也适用,因为改动涉及 VFS、xattr、clone、execve、time、epoll 等用户可见语义。新增 app 与默认 Alpine rootfs 隔离,新增 system C case 保持 system/<subcase>/{CMakeLists.txt,src} 布局且根 CMake 可发现;未发现 [patch.crates-io]。base 中没有等价的 NixOS app/AppOwned rootfs;此前 #1904 的启动熵重叠已通过合并进入本分支,不再是未解决的开放 PR 冲突。
本地验证:git diff --check origin/dev...HEAD、cargo fmt --all --check、bash apps/starry/nixos/build-rootfs.sh --self-test 均通过。按文档的 flake Nix 配置执行 x86_64 app 工作流后,已完成 rootfs 发布、StarryOS 构建、QEMU 启动,并观察到有序 pid1、activation、systemd、marker 和 STARRY_NIXOS_SYSTEM_PASSED,文件系统干净卸载且命令退出 0。已审阅已有评论;早期关于缺失 specs 和 #1904 重叠的前提已不再适用,未将它们作为本轮阻塞项。
组织 CI 当前不是全绿:该 HEAD 的 CI run 31239034341 中,Test starry loongarch64 qemu / run_container 失败;其他格式检查等有成功记录,部分矩阵项按条件 skipped/cancelled。失败 job 位于本 PR 的 Starry/QEMU 改动范围,尚无证据可证明无关;请先解决以下问题。
剩余阻塞项:
- 当前 HEAD 的 LoongArch Starry QEMU CI 失败(下列 finding)。
除该 CI 失败外,本轮未确认其他确定性阻塞问题。
Powered by gpt-5.6-terra
|
已 push 签名提交 验证结果:
LoongArch 完整 |
There was a problem hiding this comment.
本 PR 不是 release 版本升级,新增 x86_64 StarryNixOS Stage-2 用户态、app-owned rootfs/Axbuild 准备和 QEMU 验收路径,同时改动 StarryOS 的 VFS、proc、任务、网络、epoll 等用户可见 Linux ABI 路径与 someboot 启动熵链路。
book/guideline/feature-development.md 适用:该功能包含新的 PID 1/rootfs/UEFI-NVMe 运行路径和跨层 ABI 语义,按规范属于高风险功能;Starry syscall 指南也适用于 VFS、xattr、clone3、execve、time、epoll 等改动。阻塞项见行内评论:当前 HEAD 的活动设计入口无法解析,必须修复或移除。
审查与验证:已核对 base dev 与固定 HEAD 8085673d598a9b8daec3266eb1683a65bfedc97f,prepare-review、git diff --check origin/dev...HEAD、NixOS rootfs 的 build-rootfs.sh --self-test 通过。新增 qemu/system/<subcase>/{CMakeLists.txt,src} 布局与根 CMake 的发现规则一致;未发现 [patch.crates-io]。当前环境缺少 Nix、direnv、nixfmt 与 QEMU,不能完成文档声明的 x86_64 Stage-2 实机 QEMU 运行;组织 CI 当前也不是全绿(75 个 check:success=26、failure=1、cancelled=11、skipped=37),因此不能将其替代为该 app 的完整验收。失败/取消项需在后续修复后结合当前 HEAD 重新确认其与本 PR 的关系。
已阅读既有 review/comments:此前关于悬空 specs/ 入口的合理评论在当前 HEAD 仍未解决;先前关于 boot entropy 与 #1904 的重叠,经本 PR 合入 #1904 的提交后不再作为独立阻塞项。基线未发现等价的 apps/starry/nixos 或 app-owned rootfs;开放 PR 搜索没有发现另一个同一 NixOS/app-owned-rootfs 实现。
剩余风险是高风险功能的有效设计入口缺失,以及因环境与非全绿 CI 尚未独立复现 Stage-2 QEMU 验收。请先修复行内问题,然后重新执行并报告文档所列 x86_64 QEMU 命令及受影响回归。
Powered by gpt-5.6-terra
| <!-- SPECKIT START --> | ||
| ## Active SpecKit Plan | ||
|
|
||
| - Active planning artifact: `specs/004-add-starry-nixos/plan.md` |
There was a problem hiding this comment.
阻塞(文档/设计入口):这里新增的活动计划路径 specs/004-add-starry-nixos/plan.md 在当前 HEAD 不存在。该 PR 引入 Stage-2 PID 1、app-owned rootfs/UEFI-NVMe 运行路径及跨层 ABI 变更,属于需要可独立审查设计材料的高风险范围;而这个悬空入口既无法提供审查依据,也会误导后续开发者。请删除该无效 SpecKit 段落,或将实际的设计材料以稳定路径随 PR 提交,并确保引用在当前 HEAD 可解析。
|
本地补充验证 Axvisor x86_64 QEMU(Podman + KVM +
CI run 测试后的 |
There was a problem hiding this comment.
本 PR 新增 x86_64 StarryNixOS Stage-2、应用自有 rootfs/Axbuild 准备流程与 QEMU 验收配置,同时包含 StarryOS VFS、proc、任务、网络、epoll 等 Linux ABI 修复,以及 someboot 启动熵与 ArceOS 调度改动;不是 release 升级 PR。
book/guideline/feature-development.md 适用,风险等级为高:该变更新增 PID 1/rootfs/UEFI-NVMe 运行路径并修改跨层用户可见 ABI。book/guideline/starry/syscall.md 也适用(VFS、xattr、clone/clone3、execve、time、epoll、socket、proc 等)。新 system C 用例均采用 system/<subcase>/{CMakeLists.txt,src} 布局,根 CMake 能发现并安装;未发现 [patch.crates-io]。app 与默认 Alpine rootfs 的实现路径隔离,AppOwned builder 对路径和目标也做了显式校验。
本地验证:review_pr_helper.py test(7/7)和 prepare-review 通过;git diff --check origin/dev...HEAD 通过。bash apps/starry/nixos/build-rootfs.sh --self-test 通过。实际运行文档的 app 命令:先补装缺失的 nix-bin,再执行 NIX_CONFIG='experimental-features = nix-command flakes' cargo xtask starry app qemu -t nixos --arch x86_64;构建锁定 NixOS rootfs 和 Starry 二进制在 240 秒后超时,尚未进入 QEMU,因而没有得到 guest marker 证据。此前缺少 nix 时同一命令也明确以 required command 'nix' is unavailable 失败。该运行限制不替代下列确定性重复问题。
组织 CI 当前 HEAD 的 workflow run 31251124921 结论为 failure;75 个 check 中存在 1 个 failure、若干 cancelled/skipped,不能作为本 PR 声明的 NixOS x86_64 QEMU 成功证据。格式化检查成功;当前环境没有重复运行已成功的广泛 CI。此前 review 已指出 spec 路径问题;作者已说明不应将自定义 spec 目录作为仓库要求,本轮不将其作为独立 finding。
重叠分析:base 没有 apps/starry/nixos 或 AppOwned rootfs。开放 PR #1904 却仍存在,且当前分支提交 0200f6a81 已合并其 boot entropy/boot_id 实现;这是本次阻塞项。除该项外,此轮在所审查的 app runner、测试发现和代表性 VFS/proc/task/epoll/平台实现中未发现另一项已证实的阻塞缺陷。
待解决问题见行内评论。NixOS app 运行、完整逐 syscall 权威标准映射及完整 QEMU 回归需在唯一所有者的最终基线上重新完成。维护者路由:apps/、test-suit/、scripts/、docs/ 匹配 ZCShou,platforms/ 匹配 bullhh,Starry syscall/app 范围匹配 YanLien。
最终 todo 审计:约束、实现、测试布局/发现、重复分析、CI 与实际 app 命令均已完成并记录;唯一阻塞项为 #1904 的重复所有权;完整 QEMU 未完成的原因和命令如上。
Powered by gpt-5.6-terra
|
|
||
| static BOOT_ENTROPY: StaticCell<Option<BootEntropy>> = StaticCell::uninit(); | ||
|
|
||
| pub(crate) fn capture() { |
There was a problem hiding this comment.
There was a problem hiding this comment.
本 PR 不是 release 版本升级,新增 x86_64 StarryNixOS Stage-2/app-owned rootfs 与 QEMU 验收路径,并修改 StarryOS 的 VFS、proc、任务、网络、epoll Linux ABI 路径和 someboot 启动熵链路。默认 Alpine rootfs 路径仍保持隔离;新增 qemu/system C 用例处于根 CMake 可发现的 system/<subcase>/{CMakeLists.txt,src} 布局。
book/guideline/feature-development.md 适用:这是高风险的新 PID 1/rootfs/UEFI-NVMe 跨层能力。Starry syscall 指南也适用(VFS、xattr、clone3、execve、time、epoll 等用户可见语义);本轮检查了对应实现与新增回归用例的发现/失败传播,除下列问题外未确认额外阻塞。
本地验证:review_pr_helper.py prepare-review、git diff --check origin/dev...HEAD、cargo fmt --all --check、bash apps/starry/nixos/build-rootfs.sh --self-test、cargo clippy --manifest-path platforms/someboot/Cargo.toml --all-features -- -D warnings 均通过。安装 nix-bin/direnv 后,带 --extra-experimental-features 'nix-command flakes' 的 nix flake show --no-write-lock-file ./apps/starry/nixos 可以解析;但 README 的默认 cargo xtask starry app qemu -t nixos --arch x86_64 在 rootfs builder 处失败,未到达 QEMU。STARRY_NIXOS_REUSE_ROOTFS=1 路径也因干净工作区没有已发布 manifest 而正确拒绝,不能替代默认构建验收。
组织 CI 当前 HEAD 有 1 个失败:self-hosted 的 Check formatting / run_host 在 cargo publish --workspace --dry-run --no-verify 的 kbpf-basic -> ax-errno 版本解析处退出;本地格式检查通过,且本 PR 没有改动 Cargo.lock 或该依赖声明,因此该失败没有证据表明由本 PR 引入。其他可见静态检查成功,若干 host/container matrix 项按配置跳过;但 CI 并未运行这个 NixOS Stage-2 app 工作流,不能替代上面的本地验收。
既有评论已复核:早期关于缺失 specs/ 的评论不再作为本轮独立 finding;此前 #1904 的 boot entropy 重叠已经通过合并提交 0200f6a81 纳入本分支。base 中不存在等价的 apps/starry/nixos/AppOwned rootfs;相关开放 PR 搜索未发现仍需协调的同一实现。未发现 [patch.crates-io]。
待解决项见行内评论:补齐 Nix feature 启动方式并在干净环境重新执行完整 app/QEMU 验收。完成后应验证 STARRY_NIXOS_PHASE=pid1、activation、systemd、marker 和 STARRY_NIXOS_SYSTEM_PASSED,以及相关系统回归。
Powered by gpt-5.6-terra
| require_command nix | ||
|
|
||
| local image toplevel | ||
| toplevel="$(nix build --no-link --print-out-paths "path:$app_dir#system")" |
There was a problem hiding this comment.
阻塞(可复现性):这里的默认 app 构建流程直接执行 nix build,但没有启用 nix-command/flakes。在干净 Ubuntu 环境安装 nix-bin、direnv 后,带 --extra-experimental-features 'nix-command flakes' 的 nix flake show 能解析同一 flake;按 README 的默认 cargo xtask starry app qemu -t nixos --arch x86_64 则在此处报 experimental Nix feature 'nix-command' is disabled 并退出,rootfs 和 QEMU 都不会启动。请让脚本显式传递所需 feature(build/eval 均覆盖),或提供等价的可靠入口配置,并在干净环境重跑文档化的完整验收命令。
There was a problem hiding this comment.
本 PR 不是 release 版本升级,新增 x86_64 StarryNixOS Stage-2 app、app-owned rootfs/QEMU 流程,并包含 Starry VFS、proc、任务、网络、epoll 的用户可见 ABI 修复及 someboot 启动熵链路。
book/guideline/feature-development.md 与 Starry syscall 指南均适用:前者对应新的 PID 1/rootfs/UEFI-NVMe 路径,后者对应本次 VFS、xattr、clone、execve、time、epoll 等语义。新增 system C 用例均处于 system/<subcase>/{CMakeLists.txt,src} 的当前 runner 布局,根 CMake 可发现;未发现本 PR 新增的 [patch.crates-io]。base 中未见等价的 NixOS app/AppOwned rootfs;此前 boot entropy 与 #1904 的重叠已通过本分支合并该 PR 解决。既有有关缺失 specs/ 的线程已考虑,作者明确不希望把该类设计材料提交为仓库内容,故不将其作为本轮独立 finding。
本地完成:review_pr_helper.py prepare-review、git diff --check origin/dev...HEAD、bash apps/starry/nixos/build-rootfs.sh --self-test、QEMU app CLI 构建/帮助检查均通过。实际执行 README 的 TMPDIR="$PWD/.ci-cache/tmp" cargo xtask starry app qemu -t nixos --arch x86_64 后,axbuild 调用 builder 并因缺少 nix 退出,因此没有完成来宾启动。当前 HEAD 组织 CI 共 75 个 checks(包含成功、跳过、取消和一个失败);格式检查成功,但 Starry x86_64 QEMU 检查被取消,不能证明新的 NixOS Stage-2 场景。失败的 Axvisor 自托管板卡项不触及本 PR 的 NixOS/Starry 变更;本轮阻塞结论不依赖它。
覆盖方面:新增系统用例和 axbuild matcher 测试证明发现、安装与成功/失败正则的基本契约,但不能代替 app 的完整 rootfs 构建与 QEMU PID 1 运行。此前 review 线程中关于 NixOS app/启动熵的内容已复核;boot entropy 的开放 PR 重叠已被合并,设计材料争议不重复提出。剩余阻塞项见行内评论。
审查清单:约束、diff、AppOwned rootfs、system test 布局、SMP/启动熵和代表性 syscall 实现均已检查;x86_64 NixOS QEMU 运行因上述 builder 环境失败而未完成,故不能批准。后续领域复核已保留现有 ZCShou、YanLien、bullhh 请求;它们分别匹配 tests/rootfs/axbuild、apps/syscall 和 platforms 路径。
Powered by gpt-5.6-terra
| ## Build and validate | ||
|
|
||
| From the repository root: | ||
|
|
There was a problem hiding this comment.
阻塞(新增 app 的运行验证):项目规则要求新增 Starry app 在当前 HEAD 完成文档化的准备和 QEMU 运行。我按这里的流程执行 TMPDIR="$PWD/.ci-cache/tmp" cargo xtask starry app qemu -t nixos --arch x86_64,axbuild 已调用构建脚本,但在构建阶段因 required command 'nix' is unavailable 退出。--self-test 虽通过,却不会构建镜像或启动来宾;当前 HEAD 的组织 CI 中 Starry x86_64 QEMU 检查也被取消,不能替代该验收。请提供可复现的 Nix/Lix 构建与当前 HEAD QEMU 运行证据(包含顺序成功标记),或让文档化命令使用可验证的受管工件后再合入。
There was a problem hiding this comment.
这是环境问题,制作nixos镜像你还不用nix?
There was a problem hiding this comment.
本 PR 新增 x86_64 StarryNixOS Stage-2 应用、app-owned rootfs/Axbuild 准备与 QEMU 验收,并同步包含 StarryOS VFS、proc、任务、网络、epoll 的 Linux ABI 修复及 someboot 启动熵链路;不是 release 版本升级。
feature-development.md 适用:这是包含 PID 1/rootfs/UEFI-NVMe 运行路径的高风险功能。当前 HEAD 已提供长期设计文档 docs/docs/architecture/starryos/nixos-stage2.md、应用 README 与兼容性台账;其目标、非目标、隔离的 rootfs 所有权、回滚和验收边界可审查。Starry syscall 指南也适用于 VFS、xattr、clone3、execve、time、epoll 等用户可见语义;新增 system C 用例位于 system/<subcase>/{CMakeLists.txt,src},可由根 CMake 发现,且现有 grouped runner 的失败标记与正则能传播失败。未发现 [patch.crates-io]。
验证:review_pr_helper.py prepare-review、helper 自测、git diff --check origin/dev...HEAD 均通过;组织 CI 的格式检查和多个目标测试已成功,按要求未重复运行大型本地测试。当前 75 个 check 中仍有 1 个失败和若干 cancelled/skipped;已核对其并非本行重复问题的替代验证。Nix/direnv 在审查环境不可用,因此未将本地 Stage-2 QEMU 运行作为已完成证据;PR 文档记录了受支持的 x86_64 QEMU 验收命令与成功标记。
既有评论已复核:先前关于缺失设计材料的评论已由当前 HEAD 的架构文档、README 与兼容性台账解决;但 boot ID 相关的重复/冲突评论仍有效。基础分支没有等价 boot-entropy 实现,而开放 PR #1904 仍拥有同一启动/procfs ABI,当前 PR 的历史又已合并该 PR,故不能视为独立变更。
待解决问题见行内评论:请先确定该启动/ABI 链路的唯一 PR 所有者并消除 #1904 的开放重复,再在最终基线上验证。其它已审查表面未发现额外确定性阻塞项。
审核清单:规范、当前 HEAD、历史评论、组织 CI、NixOS 应用/rootfs、syscall/VFS、启动与 SMP、测试发现/失败传播、依赖 patch、基线及开放 PR 重叠均已完成;无需补充 reviewer,ZCShou、YanLien、bullhh 已在请求列表中。
Powered by gpt-5.6-terra
|
|
||
| static BOOT_ENTROPY: StaticCell<Option<BootEntropy>> = StaticCell::uninit(); | ||
|
|
||
| pub(crate) fn capture() { |
There was a problem hiding this comment.
问题
现有
apps/starry/nix只能在 Alpine 用户态中提供 Nix/nixpkgs;它不能证明 StarryOS 能启动由 NixOS 声明生成的 Stage-2 用户态,也无法让 systemd 作为 PID 1 管理声明的系统状态。缺少独立 rootfs 边界时,Axbuild 的预构建流程还会复制并改写 Alpine 镜像,无法可靠地区分 NixOS 系统工件与 Alpine 覆盖层。修改
x86_64的apps/starry/nixos:使用锁定的 NixOS flake 在主机构建并校验独立 ext4 rootfs,记录闭包、架构和镜像 provenance。AppOwnedrootfs 准备契约:只接受应用构建器发布且已验证的工件;构建、目标或 provenance 不匹配时直接失败,不复制 Alpine rootfs、不改写 APK 配置、不注入覆盖层。/init;未选择该 feature 的应用保持原有 shell PID-1 和 rootfs 行为。multi-user.target都验证后才输出唯一成功记录,并在输出后强制关机使 QEMU 正常结束。bugfix-proc-sysctl-writable-limits:pid_max与max_map_count尚未接入资源上限实施,写入必须返回EOPNOTSUPP;保留并在 LoongArch QEMU 执行bugfix-proc-sysctl-unsupported-limits覆盖该契约。NixOS-style userspace personality,不宣称完整 NixOS 兼容性。设计与替代方案
设计材料:
specs/004-add-starry-nixos/{spec,plan,research,data-model,quickstart}.md。验证
bash apps/starry/nixos/build-rootfs.sh --self-testSTARRY_NIXOS_ARTIFACT_SELF_TEST_PASSEDnixfmt --check apps/starry/nixos/configuration.nixSTARRY_NIXOS_REUSE_ROOTFS=1 direnv exec . cargo xtask starry app qemu -t nixos --arch x86_64-smp 8,顺序输出pid1、activation、systemd、marker和STARRY_NIXOS_SYSTEM_PASSED,文件系统同步后退出码 0cargo xtask starry test qemu --arch loongarch64 -c qemu/system/bugfix-proc-sysctl-unsupported-limits(CI 容器)STARRY_SYSTEM_TEST_PASSED: /usr/bin/starry-test-suit/bugfix-proc-sysctl-unsupported-limits与STARRY_GROUPED_TESTS_PASSEDtest-suit/starryos/qemu/system/bugfix-*与cgroup-basic中新增/更新回归apps/starry/nixos/compatibility.md已知边界:只支持 x86_64 QEMU UEFI/NVMe;不提供 installer、NixOS kernel/initrd/bootloader、来宾内 rebuild 或 generation switching、桌面、网络服务栈、持久 machine ID 或 aarch64 支持。若验收运行出现 shell、部分 phase、失败单元、panic/fatal、超时或成功 marker 后仍未退出,均视为失败。
回滚
功能默认为关闭。移除或禁用 NixOS app/build 配置及其生成的受管镜像即可;其他应用继续使用原有 rootfs 选择和 shell PID-1 路径,未共享或修改 Alpine 镜像。
补充:x86_64 qemu/system 稳定性修复
set_ptrace_syscall_stop分两阶段发布 stop 记录的竞争:waitpid(..., WNOHANG)可能在 syscall 标记写入前观察到普通SIGTRAP,导致PTRACE_O_TRACESYSGOOD状态从预期的0x857f退化为0x57f。现在普通 stop 与 syscall stop 都在一次加锁中完整发布。PTRACE_EVENT_EXEC与 legacy execSIGTRAP二选一,并确保切换到新页表后才释放旧地址空间。cargo xtask starry test qemu --arch x86_64 -c qemu/system为 432/432;cargo xtask clippy --package starry-kernel为 25/25;cargo fmt --all --check与git diff --check通过。补充:SMP 新任务放置回归修复
e4411b657将所有新任务默认改为跨 CPU 轮转,虽然修复了 Starry 用户任务首次入队集中在创建者 CPU 的问题,但也让普通 ArceOSax_std线程首次从远端 CPU 启动,触发 riscv64memtest回归。spawn_task_with()恢复为优先当前 CPU 的默认语义,保留普通内核和 ArceOS 线程的初始局部性;新增显式spawn_task_with_balanced(),只由 Starry clone/fork 创建独立用户任务时使用。cargo xtask arceos test qemu --arch riscv64完整通过(Rust 18/18、C 7/7,包含memtest: parallel allocations OK与memtest: cross CPU free OK);LoongArchqemu/system/bugfix-smp-new-task-placement通过;cargo xtask clippy --package ax-task17/17、cargo xtask clippy --package starry-kernel25/25;格式和 diff 检查通过。补充:开发环境缓存控制
.envrc启用nix_direnv_manual_reload,进入仓库不再因 tracked 文件变化自动重复求值 flake。需要刷新环境时显式执行nix-direnv-reload。/tmp目录,验证结束后已清理;未新增或清理.ci-cache内容,也未执行 Nix 构建或 Nix store 垃圾回收。