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:
kernel/lib/boot/*.js(sorted) — preamble (BARE_OS_BOOT_TXN_STATE, multisig shape,invokeCtxBootHooks).kernel/lib/init/fragments/*.js(sorted) — large cohesive regions:20-init-boot-policy.js— semver helpers, skip merge,kernel.denv guards,applyBootPolicyFile.30-init-kernel-extensions.js—runKernelExtDropins, topological ordering, signer pins, multisig gate.
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.