This commit is contained in:
Raven Scott
2026-04-08 20:53:38 -04:00
parent dc9be9eaff
commit 385fc80894
12 changed files with 470 additions and 444 deletions
@@ -199,6 +199,7 @@ async function loadAuthorizedKeyObjects(ctx, authKeysRel) {
} catch {
return []
}
if (raw == null) return []
const text = b4a.toString(raw)
/** @type {unknown[]} */
const out = []
@@ -236,6 +237,7 @@ async function execOptionalEtcBareOsScript(ctx, logicalPath) {
} catch {
return
}
if (buf == null) return
const text = b4a.toString(buf)
for (const line of text.split(/\r?\n/)) {
const t = line.trim()
@@ -14,6 +14,29 @@ import {
buildStockKernelCapabilityWords
} from './bare-os-capability-registry.js'
/** Splash lines while block 0 / MBR is in flight (avoids a silent multiminute wait). */
const MBR_READ_HEARTBEAT_MS = 10_000
/**
* @param {import('./swarm-disk.js').SwarmDisk} disk
* @param {{ log: (s: string) => void }} splash
*/
async function readBlock0WithProgress(disk, splash) {
const iv = setInterval(() => {
const n = disk.peers?.size ?? 0
splash.log(
n > 0
? `MBR: still waiting for block 0 (${n} peer${n === 1 ? '' : 's'} connected)…`
: 'MBR: no Hyperswarm peers yet — run the system seeder or check network / HYPERSWARM_BOOTSTRAP'
)
}, MBR_READ_HEARTBEAT_MS)
try {
return await disk.read(0)
} finally {
clearInterval(iv)
}
}
/**
* @param {import('corestore').default} store
* @param {import('hyperswarm').default} swarm
@@ -343,7 +366,7 @@ export async function loadOsFromPeers(disk, store, swarm, splash) {
? 'Loading block 0 (MBR)'
: `MBR read retry ${attempt - 1}/${mbrMaxAttempts - 1}`
)
const block = await disk.read(0)
const block = await readBlock0WithProgress(disk, splash)
const { keys } = parseMbr(block)
if (!keys.length) throw new Error('MBR has no drive keys')
mbr = block
+5 -4
View File
@@ -528,10 +528,11 @@ export class SwarmDisk {
async read(index) {
if (this.localRAM.has(index)) return this.localRAM.get(index)
return new Promise((resolve, reject) => {
const timeout = setTimeout(
() => reject(new Error('MBR read timeout')),
mbrReadTimeoutMsForDisk(this)
)
const timeoutMs = mbrReadTimeoutMsForDisk(this)
const timeout = setTimeout(() => {
this.pendingReads.delete(index)
reject(new Error('MBR read timeout'))
}, timeoutMs)
this.pendingReads.set(index, (data) => {
clearTimeout(timeout)
resolve(data)
@@ -1,7 +1,7 @@
{
"schema": 2,
"profileId": "bare-os-posix-like",
"generatedAt": "2026-04-09T00:28:39.719Z",
"generatedAt": "2026-04-09T00:50:30.878Z",
"note": "Sparse POSIX Issue 7 coverage hints for /bin utilities. Omitted command names are not yet profiled here.",
"commandIndex": [
{
@@ -1,18 +1,18 @@
{
"version": 1,
"bundles": [
{
"path": "/lib/bare/bundles/b4a.js",
"keys": [
"b4a"
]
},
{
"path": "/lib/bare/bundles/safetyCatch.js",
"keys": [
"safetyCatch"
]
},
{
"path": "/lib/bare/bundles/b4a.js",
"keys": [
"b4a"
]
},
{
"path": "/lib/bare/bundles/hypercoreIdEncoding.js",
"keys": [
@@ -25,6 +25,12 @@
"compactEncoding"
]
},
{
"path": "/lib/bare/bundles/bareUrl.js",
"keys": [
"bareUrl"
]
},
{
"path": "/lib/bare/bundles/protomux.js",
"keys": [
@@ -32,9 +38,9 @@
]
},
{
"path": "/lib/bare/bundles/bareUrl.js",
"path": "/lib/bare/bundles/bareEncoding.js",
"keys": [
"bareUrl"
"bareEncoding"
]
},
{
@@ -49,12 +55,6 @@
"bareEvents"
]
},
{
"path": "/lib/bare/bundles/bareEncoding.js",
"keys": [
"bareEncoding"
]
},
{
"path": "/lib/bare/bundles/bareAbort.js",
"keys": [
@@ -67,12 +67,6 @@
"bareAbortController"
]
},
{
"path": "/lib/bare/bundles/bareAddonResolve.js",
"keys": [
"bareAddonResolve"
]
},
{
"path": "/lib/bare/bundles/bareReadline.js",
"keys": [
@@ -85,36 +79,42 @@
"bareCrypto"
]
},
{
"path": "/lib/bare/bundles/bareAddonResolve.js",
"keys": [
"bareAddonResolve"
]
},
{
"path": "/lib/bare/bundles/bareAnsiEscapes.js",
"keys": [
"bareAnsiEscapes"
]
},
{
"path": "/lib/bare/bundles/bareAsyncHooks.js",
"keys": [
"bareAsyncHooks"
]
},
{
"path": "/lib/bare/bundles/bareAtomics.js",
"keys": [
"bareAtomics"
]
},
{
"path": "/lib/bare/bundles/bareAppKit.js",
"keys": [
"bareAppKit"
]
},
{
"path": "/lib/bare/bundles/bareAsyncHooks.js",
"keys": [
"bareAsyncHooks"
]
},
{
"path": "/lib/bare/bundles/bareAssert.js",
"keys": [
"bareAssert"
]
},
{
"path": "/lib/bare/bundles/bareAtomics.js",
"keys": [
"bareAtomics"
]
},
{
"path": "/lib/bare/bundles/bareApk.js",
"keys": [
@@ -139,36 +139,36 @@
"bareBuffer"
]
},
{
"path": "/lib/bare/bundles/bareBundle.js",
"keys": [
"bareBundle"
]
},
{
"path": "/lib/bare/bundles/bareBundleCompile.js",
"keys": [
"bareBundleCompile"
]
},
{
"path": "/lib/bare/bundles/bareBundle.js",
"keys": [
"bareBundle"
]
},
{
"path": "/lib/bare/bundles/bareBluetoothApple.js",
"keys": [
"bareBluetoothApple"
]
},
{
"path": "/lib/bare/bundles/bareBoot.js",
"keys": [
"bareBoot"
]
},
{
"path": "/lib/bare/bundles/bareBundleEvaluate.js",
"keys": [
"bareBundleEvaluate"
]
},
{
"path": "/lib/bare/bundles/bareBoot.js",
"keys": [
"bareBoot"
]
},
{
"path": "/lib/bare/bundles/bareConsole.js",
"keys": [
@@ -181,18 +181,18 @@
"bareBundleId"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"keys": [
"bareChannel"
]
},
{
"path": "/lib/bare/bundles/bareDebugLog.js",
"keys": [
"bareDebugLog"
]
},
{
"path": "/lib/bare/bundles/bareChannel.js",
"keys": [
"bareChannel"
]
},
{
"path": "/lib/bare/bundles/bareDelta.js",
"keys": [
@@ -205,18 +205,18 @@
"bareDaemon"
]
},
{
"path": "/lib/bare/bundles/bareDns.js",
"keys": [
"bareDns"
]
},
{
"path": "/lib/bare/bundles/bareDiagnosticsChannel.js",
"keys": [
"bareDiagnosticsChannel"
]
},
{
"path": "/lib/bare/bundles/bareDns.js",
"keys": [
"bareDns"
]
},
{
"path": "/lib/bare/bundles/bareEnv.js",
"keys": [
@@ -229,12 +229,6 @@
"bareExif"
]
},
{
"path": "/lib/bare/bundles/bareCov.js",
"keys": [
"bareCov"
]
},
{
"path": "/lib/bare/bundles/bareDgram.js",
"keys": [
@@ -248,15 +242,9 @@
]
},
{
"path": "/lib/bare/bundles/bareFormData.js",
"path": "/lib/bare/bundles/bareCov.js",
"keys": [
"bareFormData"
]
},
{
"path": "/lib/bare/bundles/bareFormat.js",
"keys": [
"bareFormat"
"bareCov"
]
},
{
@@ -265,24 +253,48 @@
"bareFfmpegEncodings"
]
},
{
"path": "/lib/bare/bundles/bareFormat.js",
"keys": [
"bareFormat"
]
},
{
"path": "/lib/bare/bundles/bareFileLogger.js",
"keys": [
"bareFileLogger"
]
},
{
"path": "/lib/bare/bundles/bareFormData.js",
"keys": [
"bareFormData"
]
},
{
"path": "/lib/bare/bundles/bareFs.js",
"keys": [
"bareFs"
]
},
{
"path": "/lib/bare/bundles/bareGif.js",
"keys": [
"bareGif"
]
},
{
"path": "/lib/bare/bundles/bareHrtime.js",
"keys": [
"bareHrtime"
]
},
{
"path": "/lib/bare/bundles/bareGtk.js",
"keys": [
"bareGtk"
]
},
{
"path": "/lib/bare/bundles/bareHeif.js",
"keys": [
@@ -296,15 +308,9 @@
]
},
{
"path": "/lib/bare/bundles/bareGtk.js",
"path": "/lib/bare/bundles/bareInspect.js",
"keys": [
"bareGtk"
]
},
{
"path": "/lib/bare/bundles/bareGif.js",
"keys": [
"bareGif"
"bareInspect"
]
},
{
@@ -325,12 +331,6 @@
"bareHttp1"
]
},
{
"path": "/lib/bare/bundles/bareInspect.js",
"keys": [
"bareInspect"
]
},
{
"path": "/lib/bare/bundles/bareHttps.js",
"keys": [
@@ -344,9 +344,9 @@
]
},
{
"path": "/lib/bare/bundles/bareIntl.js",
"path": "/lib/bare/bundles/bareIpc.js",
"keys": [
"bareIntl"
"bareIpc"
]
},
{
@@ -355,6 +355,18 @@
"bareLief"
]
},
{
"path": "/lib/bare/bundles/bareIntl.js",
"keys": [
"bareIntl"
]
},
{
"path": "/lib/bare/bundles/bareLogger.js",
"keys": [
"bareLogger"
]
},
{
"path": "/lib/bare/bundles/bareInspector.js",
"keys": [
@@ -367,30 +379,12 @@
"bareLink"
]
},
{
"path": "/lib/bare/bundles/bareLogger.js",
"keys": [
"bareLogger"
]
},
{
"path": "/lib/bare/bundles/bareIpc.js",
"keys": [
"bareIpc"
]
},
{
"path": "/lib/bare/bundles/bareMake.js",
"keys": [
"bareMake"
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareModuleResolve"
]
},
{
"path": "/lib/bare/bundles/bareModuleLexer.js",
"keys": [
@@ -398,9 +392,15 @@
]
},
{
"path": "/lib/bare/bundles/bareModuleTraverse.js",
"path": "/lib/bare/bundles/bareModule.js",
"keys": [
"bareModuleTraverse"
"bareModule"
]
},
{
"path": "/lib/bare/bundles/bareModuleResolve.js",
"keys": [
"bareModuleResolve"
]
},
{
@@ -410,9 +410,9 @@
]
},
{
"path": "/lib/bare/bundles/bareModule.js",
"path": "/lib/bare/bundles/bareModuleTraverse.js",
"keys": [
"bareModule"
"bareModuleTraverse"
]
},
{
@@ -422,15 +422,15 @@
]
},
{
"path": "/lib/bare/bundles/bareNodeFetch.js",
"path": "/lib/bare/bundles/bareMedia.js",
"keys": [
"bareNodeFetch"
"bareMedia"
]
},
{
"path": "/lib/bare/bundles/bareNet.js",
"path": "/lib/bare/bundles/bareNodeFetch.js",
"keys": [
"bareNet"
"bareNodeFetch"
]
},
{
@@ -440,15 +440,15 @@
]
},
{
"path": "/lib/bare/bundles/bareOs.js",
"path": "/lib/bare/bundles/bareNet.js",
"keys": [
"bareOs"
"bareNet"
]
},
{
"path": "/lib/bare/bundles/bareMedia.js",
"path": "/lib/bare/bundles/bareOs.js",
"keys": [
"bareMedia"
"bareOs"
]
},
{
@@ -469,18 +469,18 @@
"barePackDrive"
]
},
{
"path": "/lib/bare/bundles/bareNodeRuntime.js",
"keys": [
"bareNodeRuntime"
]
},
{
"path": "/lib/bare/bundles/barePng.js",
"keys": [
"barePng"
]
},
{
"path": "/lib/bare/bundles/bareNodeRuntime.js",
"keys": [
"bareNodeRuntime"
]
},
{
"path": "/lib/bare/bundles/barePipe.js",
"keys": [
@@ -505,24 +505,18 @@
"bareQuerystring"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
"bareProcess"
]
},
{
"path": "/lib/bare/bundles/bareQueueMicrotask.js",
"keys": [
"bareQueueMicrotask"
]
},
{
"path": "/lib/bare/bundles/bareDev.js",
"keys": [
"bareDev"
]
},
{
"path": "/lib/bare/bundles/bareProcess.js",
"keys": [
"bareProcess"
]
},
{
"path": "/lib/bare/bundles/bareRealm.js",
"keys": [
@@ -530,21 +524,9 @@
]
},
{
"path": "/lib/bare/bundles/bareRpc.js",
"path": "/lib/bare/bundles/bareQueueMicrotask.js",
"keys": [
"bareRpc"
]
},
{
"path": "/lib/bare/bundles/barePromClient.js",
"keys": [
"barePromClient"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
"bareQueueMicrotask"
]
},
{
@@ -553,60 +535,78 @@
"bareRuntime"
]
},
{
"path": "/lib/bare/bundles/barePromClient.js",
"keys": [
"barePromClient"
]
},
{
"path": "/lib/bare/bundles/bareSdl.js",
"keys": [
"bareSdl"
]
},
{
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareSidecar"
]
},
{
"path": "/lib/bare/bundles/bareSignals.js",
"keys": [
"bareSignals"
]
},
{
"path": "/lib/bare/bundles/bareStorage.js",
"keys": [
"bareStorage"
]
},
{
"path": "/lib/bare/bundles/bareStdio.js",
"keys": [
"bareStdio"
]
},
{
"path": "/lib/bare/bundles/bareSemver.js",
"keys": [
"bareSemver"
]
},
{
"path": "/lib/bare/bundles/bareRpc.js",
"keys": [
"bareRpc"
]
},
{
"path": "/lib/bare/bundles/bareRun.js",
"keys": [
"bareRun"
]
},
{
"path": "/lib/bare/bundles/bareRepl.js",
"keys": [
"bareRepl"
]
},
{
"path": "/lib/bare/bundles/bareSignals.js",
"keys": [
"bareSignals"
]
},
{
"path": "/lib/bare/bundles/bareSidecar.js",
"keys": [
"bareSidecar"
]
},
{
"path": "/lib/bare/bundles/bareStringDecoder.js",
"keys": [
"bareStringDecoder"
]
},
{
"path": "/lib/bare/bundles/bareStorage.js",
"keys": [
"bareStorage"
]
},
{
"path": "/lib/bare/bundles/bareStream.js",
"keys": [
"bareStream"
]
},
{
"path": "/lib/bare/bundles/bareStructuredClone.js",
"keys": [
"bareStructuredClone"
]
},
{
"path": "/lib/bare/bundles/bareSvg.js",
"keys": [
@@ -614,9 +614,15 @@
]
},
{
"path": "/lib/bare/bundles/bareStructuredClone.js",
"path": "/lib/bare/bundles/bareStdio.js",
"keys": [
"bareStructuredClone"
"bareStdio"
]
},
{
"path": "/lib/bare/bundles/bareTiff.js",
"keys": [
"bareTiff"
]
},
{
@@ -643,12 +649,6 @@
"bareTcp"
]
},
{
"path": "/lib/bare/bundles/bareTiff.js",
"keys": [
"bareTiff"
]
},
{
"path": "/lib/bare/bundles/bareTimers.js",
"keys": [
@@ -679,48 +679,30 @@
"bareTls"
]
},
{
"path": "/lib/bare/bundles/bareTty.js",
"keys": [
"bareTty"
]
},
{
"path": "/lib/bare/bundles/bareUnpack.js",
"keys": [
"bareUnpack"
]
},
{
"path": "/lib/bare/bundles/bareTty.js",
"keys": [
"bareTty"
]
},
{
"path": "/lib/bare/bundles/bareUiKit.js",
"keys": [
"bareUiKit"
]
},
{
"path": "/lib/bare/bundles/bareUnionBundle.js",
"keys": [
"bareUnionBundle"
]
},
{
"path": "/lib/bare/bundles/bareV8.js",
"keys": [
"bareV8"
]
},
{
"path": "/lib/bare/bundles/bareUtils.js",
"keys": [
"bareUtils"
]
},
{
"path": "/lib/bare/bundles/bareVm.js",
"keys": [
"bareVm"
]
},
{
"path": "/lib/bare/bundles/bareWalkHandles.js",
"keys": [
@@ -728,9 +710,9 @@
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"path": "/lib/bare/bundles/bareVm.js",
"keys": [
"bareV8ToIstanbul"
"bareVm"
]
},
{
@@ -739,12 +721,30 @@
"bareWebKit"
]
},
{
"path": "/lib/bare/bundles/bareUnionBundle.js",
"keys": [
"bareUnionBundle"
]
},
{
"path": "/lib/bare/bundles/bareWebp.js",
"keys": [
"bareWebp"
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"keys": [
"bareWebKitGtk"
]
},
{
"path": "/lib/bare/bundles/bareV8ToIstanbul.js",
"keys": [
"bareV8ToIstanbul"
]
},
{
"path": "/lib/bare/bundles/bareWhich.js",
"keys": [
@@ -752,9 +752,9 @@
]
},
{
"path": "/lib/bare/bundles/bareWebKitGtk.js",
"path": "/lib/bare/bundles/bareUtils.js",
"keys": [
"bareWebKitGtk"
"bareUtils"
]
},
{
@@ -769,18 +769,18 @@
"bareXdiff"
]
},
{
"path": "/lib/bare/bundles/bareZmq.js",
"keys": [
"bareZmq"
]
},
{
"path": "/lib/bare/bundles/bareZlib.js",
"keys": [
"bareZlib"
]
},
{
"path": "/lib/bare/bundles/bareZmq.js",
"keys": [
"bareZmq"
]
},
{
"path": "/lib/bare/bundles/bareWs.js",
"keys": [
@@ -1595,8 +1595,8 @@
],
"bundleProvenance": {
"schemaVersion": 1,
"generatedAt": "2026-04-09T00:28:41.801Z",
"gitCommit": "2d851dbaf203c68ac5e84f130afb92851607231f",
"generatedAt": "2026-04-09T00:50:31.976Z",
"gitCommit": "dc9be9eaff27612a5aaf2c9fe21e5a75e5441867",
"nodeVersion": "v22.22.0",
"bundleTier": "all",
"normativeManifest": "packages/bare-os-booter/lib/bare-module-manifest.json",
@@ -1,6 +1,6 @@
{
"schema": 1,
"atMs": 1775694519719,
"atMs": 1775695830877,
"commands": [
"arch",
"awk",
@@ -1,6 +1,6 @@
{
"schemaVersion": 1,
"generatedAt": "2026-04-09T00:28:39.937Z",
"generatedAt": "2026-04-09T00:50:31.114Z",
"pages": [
{
"name": "arch",