4.1 KiB
4.1 KiB
Zero-OS Builder – Persistent TODO
This canonical checklist is the single source of truth for ongoing work. It mirrors the live task tracker but is versioned in-repo for review and PRs. Jump-points reference exact functions and files for quick triage.
High-level
- Regenerate repository function index: scripts/functionlist.md
- Refresh NOTES with jump-points and roadmap: docs/NOTES.md
- Extend RFS design with RESP/DB-style backend: docs/rfs-flists.md
- Make Rust components Git fetch non-destructive: bash.components_download_git()
- Update zinit config for "zosception" workflow: config/zinit/
- Add zosstorage to the initramfs (package/build/install + zinit unit)
- Validate via minimal rebuild and boot tests; refine depmod/udev docs
- Commit and push documentation and configuration updates (post-zosception/zosstorage)
Zosception (zinit service graph and ordering)
- Define service graph changes and ordering constraints
- Reference current triggers:
- Early coldplug: config/zinit/udev-trigger.yaml
- Network readiness: config/zinit/network.yaml
- Post-mount coldplug: config/zinit/udev-rfs.yaml
- Reference current triggers:
- Add/update units under config/zinit/ with proper after/needs/wants
- Validate with stage runner and logs
- Stage runner: bash.stage_run()
- Main flow: bash.main_build_process()
ZOS Storage in initramfs
- Decide delivery mechanism:
- APK via config/packages.list
- Source build via bash.components_parse_sources_conf() with a new build function
- Copy/install into initramfs
- Components copy: bash.initramfs_copy_components()
- Zinit setup: bash.initramfs_setup_zinit()
- Create zinit unit(s) for zosstorage startup and ordering
- Place after network and before RFS if it provides storage used by rfs
- Add smoke command to confirm presence in image (e.g., which/--version) during bash.initramfs_validate()
RFS backends — implementation follow-up (beyond design)
- RESP uploader shim for packers (non-breaking)
- Packers entrypoints: scripts/rfs/pack-modules.sh, scripts/rfs/pack-firmware.sh
- Config loader: bash.rfs_common_load_rfs_s3_config() → extend to parse RESP_* (non-breaking)
- Store URI builder (S3 exists): bash.rfs_common_build_s3_store_uri()
- Manifest patching remains:
- Stores table: bash.rfs_common_patch_flist_stores()
- route.url: bash.rfs_common_patch_flist_route_url()
- Connectivity checks and retries for RESP path
- Local cache for pack-time (optional)
Validation and boot tests
- Minimal rebuild after zinit/units/edit
- Helper: scripts/rebuild-after-zinit.sh
- Validate contents before CPIO
- Create: bash.initramfs_create_cpio()
- Validate: bash.initramfs_validate()
- QEMU / cloud-hypervisor smoke tests
- Test suite: bash.testing_run_all()
- Kernel embed path and versioning sanity
- Embed config: bash.kernel_modify_config_for_initramfs()
- Full version logic: bash.kernel_get_full_version()
Operational conventions (keep)
- Diagnostics-first changes; add logs before fixes
- Absolute path normalization respected
- Normalization: scripts/lib/common.sh
Notes
- Keep this file in sync with the live tracker. Reference it in PR descriptions.
- Use the clickable references above for rapid navigation.