Files
bare-operating-system/packages/bare-os-seeder/kernel/lib/init/STRUCTURE.md
T
2026-08-18 18:11:34 -04:00

2.1 KiB

Stock kernel internal layout (/boot/init.js)

The shipped kernel is a single Hyperdrive file evaluated with AsyncFunction (see packages/bare-os-booter/lib/boot/kernel-runner.js). Sources are concatenated by scripts/bundle-kernel-init.mjs in this order:

  1. kernel/lib/boot/*.js (sorted) — preamble (BARE_OS_BOOT_TXN_STATE, multisig shape, invokeCtxBootHooks).
  2. kernel/lib/init/fragments/*.js (sorted) — large cohesive regions:
    • 20-init-boot-policy.js — semver helpers, skip merge, kernel.d env guards, applyBootPolicyFile.
    • 30-init-kernel-extensions.jsrunKernelExtDropins, topological ordering, signer pins, multisig gate.
  3. kernel/lib/init/init-main.js — boot trace/journals, RC runners, selftest, start(ctx), REPL.

Staged paths: /lib/init/init-main.js, /lib/init/fragments/*, and bundled /boot/init.js.

Concern Responsibility Primary source
Boot policy & env gates applyBootPolicyFile, skip sets, ABI checks fragments/20-init-boot-policy.js
RC runners runRcLines, kernel.d, rc.d init-main.js
Extensions runKernelExtDropins, topological ordering fragments/30-init-kernel-extensions.js
Selftest kernel.d / selftest.d harness init-main.js
Interactive loop readline / REPL after boot stages init-main.js

After editing any fragment or init-main.js, run node scripts/bundle-kernel-init.mjs and sync the seeder tree (rsync -a --delete kernel/ packages/bare-os-seeder/kernel/). CI: verify-init-bundle-recipe.mjs, verify-kernel-seeder-parity.mjs, verify-runtime-no-incomplete-markers.mjs.

Boot footprint: keep heavy optional paths (for example deep selftest or auxiliary REPL wiring) behind boot policy / env gates inside existing fragments rather than adding new concatenation slots unless verify-init-bundle-recipe.mjs is updated—this preserves a single /boot/init.js artifact while allowing cold-boot skipping of gated sections.