Complete the internal “100 task” roadmap: coreutils and shell parity (xargs,
sh, diff/patch, sort, printf, find, test, getfacl/setfacl/xattr), expanded /proc and metrics (process table, syscalls, replication, net, security posture, worker budget, swarm/replication hints), initd DAG supervision metadata and richer restart journal telemetry, synthetic process groups via IPC (assignProcessGroup/signalProcessGroup) mirrored into process_table, optional kernel.ext.d incremental hot reload (BARE_OS_KERNEL_EXT_D_HOT_RELOAD) with reload audit NDJSON, features proc for hyperblobs dedup and systemd subset documentation, vault threat model doc plus posture fields for AEAD, Pear enclave pointer, account rotation continuity, and Ed25519 consistency across boot manifest / extensions / replication. Adds or extends tests and keeps kernel/ and packages/bare-os-seeder/kernel/ in parity; guest init is bundled from kernel/lib/init/init-main.js via bundle-kernel-init.
This commit is contained in:
+40
-6
@@ -90,6 +90,7 @@ function bareOsEmitRaw(ctx, chunk) {
|
||||
/**
|
||||
* Subset of POSIX.1-2017 getconf — fixed values for Bare OS (no host sysconf).
|
||||
* Unknown names exit with status 1 (matches common getconf for invalid var).
|
||||
* Live pathconf: **`getconf NAME /absolute/path`** delegates to **`ctx.bareOsPathconf`** when set.
|
||||
*/
|
||||
|
||||
const CONF = {
|
||||
@@ -130,20 +131,31 @@ const CONF = {
|
||||
_PC_NAME_MAX: '255',
|
||||
/** Comma-separated `ctx.bareOsSyscall` op names implemented in stock booter. */
|
||||
BARE_OS_SYSCALL_OPS:
|
||||
'readFile,writeFile,readdir,mkdir,stat,unlink,chmod,chdir,getcwd,readlink,symlink,exists,lstat,rmdir,mount,umount,kill,rename,link,access,utimes,truncate,ftruncate,pathconf',
|
||||
'readFile,writeFile,readdir,mkdir,stat,unlink,chmod,chdir,getcwd,readlink,symlink,exists,lstat,rmdir,mount,umount,kill,rename,link,access,utimes,truncate,ftruncate,fsync,fdatasync,pathconf',
|
||||
/** Encodings accepted by `/bin/iconv` (subset; case-insensitive names). */
|
||||
BARE_OS_ICONV_ENCODINGS: 'UTF-8,ISO-8859-1,UTF-16LE,UTF-16BE',
|
||||
/** Synthetic process table JSON path (logical VFS). */
|
||||
BARE_OS_PROC_PROCESS_TABLE: '/proc/bare_os/process_table.json'
|
||||
BARE_OS_PROC_PROCESS_TABLE: '/proc/bare_os/process_table.json',
|
||||
/** Sidecar suffix for synthetic POSIX ACL text (`getfacl` / `setfacl`). */
|
||||
BARE_OS_ACL_SIDECAR_SUFFIX: '.bare_acl',
|
||||
/** Sidecar suffix for extended-attribute JSON (`xattr`). */
|
||||
BARE_OS_XATTR_SIDECAR_SUFFIX: '.bare_xattr.json',
|
||||
/** Incremental kernel.ext.d reload after boot (`ctx.bareOsReloadKernelExtDropinsSafe`); 0/1 hint only. */
|
||||
BARE_OS_KERNEL_EXT_D_HOT_RELOAD: '0',
|
||||
/** Operator hint for hyperblob-style dedup in host pipelines; guest VFS does not enable automatically. */
|
||||
BARE_OS_VFS_HYPERBLOBS_DEDUP: '0',
|
||||
/** This binary: fixed catalog. Use `getconf NAME /path` + `ctx.bareOsPathconf` for live pathconf. */
|
||||
BARE_OS_GETCONF_SOURCE: 'static_catalog'
|
||||
}
|
||||
|
||||
async function run(ctx, argv) {
|
||||
const args = argv.slice(1).filter((a) => a !== '--')
|
||||
let dumpAll = false
|
||||
let name = null
|
||||
/** @type {string[]} */
|
||||
const positional = []
|
||||
for (const a of args) {
|
||||
if (a === '-a') dumpAll = true
|
||||
else if (!a.startsWith('-')) name = a
|
||||
else if (!a.startsWith('-')) positional.push(a)
|
||||
else {
|
||||
ctx.console.error('getconf: unknown option: ' + a)
|
||||
ctx.exitCode = 1
|
||||
@@ -159,12 +171,34 @@ async function run(ctx, argv) {
|
||||
return
|
||||
}
|
||||
|
||||
if (!name) {
|
||||
ctx.console.error('usage: getconf [-a] system_var')
|
||||
if (positional.length === 2) {
|
||||
const varName = positional[0]
|
||||
const pathSpec = positional[1]
|
||||
if (
|
||||
typeof ctx.bareOsPathconf === 'function' &&
|
||||
pathSpec.startsWith('/')
|
||||
) {
|
||||
try {
|
||||
const v = ctx.bareOsPathconf(pathSpec, varName)
|
||||
ctx.console.log(String(v))
|
||||
ctx.exitCode = 0
|
||||
return
|
||||
} catch (e) {
|
||||
ctx.console.error('getconf: ' + (e?.message || String(e)))
|
||||
ctx.exitCode = 1
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (positional.length !== 1) {
|
||||
ctx.console.error('usage: getconf [-a] system_var [path_for_pathconf]')
|
||||
ctx.exitCode = 1
|
||||
return
|
||||
}
|
||||
|
||||
const name = positional[0]
|
||||
|
||||
if (Object.prototype.hasOwnProperty.call(CONF, name)) {
|
||||
ctx.console.log(CONF[name])
|
||||
ctx.exitCode = 0
|
||||
|
||||
Reference in New Issue
Block a user