Commit Graph

6 Commits

Author SHA1 Message Date
vasilito 5b49b36724 fix(boot): base submodule ptr (bare/mini warning cleanup) + bare serial console
Track base 1769b083 (condition_path_exists for optional daemons, ahcid no-media,
netstack no-NIC idle, dhcpd fast-fail). Re-enable the serial debug console on
the bare target so it has a headless-visible login prompt (matching mini up to
login).
2026-07-18 00:30:00 +09:00
vasilito c096e29825 config: use brush as the login shell for bare and mini
Switch the text-login shell from zsh to brush now that brush builds and
packages for Redox. base.toml [users.root]/[users.user] -> /usr/bin/brush
covers mini (which inherits base); redbear-bare.toml gets the same shell
plus the brush package so bare and mini share an identical boot-to-login
path (bare stays the minimal boot-test surface, mini adds the app payload).

bare/full keep their own [users.root]; full and the greeter remain on zsh
(that is the graphical/sddm path, handled separately). zsh stays installed
as a fallback. Verified: redbear-mini.iso builds and its /etc/passwd reads
`.../usr/bin/brush` for root and user.
2026-07-16 23:42:36 +09:00
vasilito 87d5a24dbc fix(redbear-bare): enable bare target to build and boot
Multiple fixes to make redbear-bare actually build and progress
through boot:

config/redbear-bare.toml:
- filesystem_size: 96 -> 192 MiB. The bare image packages ~153 MiB
  of installed content (zsh, base, base-initfs, kernel, relibc,
  userutils, libgcc, libstdcxx, plus coreutils/extrautils/etc.),
  so 96 MiB triggers installer ENOSPC during commit.
- Override 31_debug_console.service with postinstall=true so the
  override wins over minimal.toml's version that uses
  /scheme/debug/no-preserve (which busy-loops when the debug
  scheme returns ENODEV in the bare initfs).

recipes/core/base-initfs/recipe.toml:
- bare_initfs() now only references BINS in the base workspace
  (init, logd, ramfs, randd, zerod, ptyd). getty is removed from
  BINS because it lives in userutils, not base.
- Copy getty from the sysroot into the initfs after the cargo
  build (analogous to the existing redoxfs/ion/driver-manager
  sysroot copies).
- Filter the init.d copy under REDBEAR_BARE_INITFS to keep only
  services for binaries we actually built (logd, randd, zerod,
  runtime.target, ramfs@.service, 90_initfs.target, 50_rootfs).
  The mainline 23 services reference fbcond/vesad/acpid/pcid/
  fbbootlogd/hwd/inputd which aren't in the bare BINS, so
  init would try to start them and busy-loop.
- Synthesize minimal 00_ptyd.service and 30_getty.service units
  in the initfs since they're built/copied but not in the
  mainline init.initfs.d.
- Override 00_runtime.target to add ptyd and getty as weak
  requires (the mainline target references nulld/rtcd which we
  filtered out).
2026-07-15 06:48:46 +09:00
vasilito b447c22da1 build-redbear.sh + redbear-bare: wire REDBEAR_BARE_INITFS to make
Round-25 fix landed the bare initfs conditional in
recipes/core/base-initfs/recipe.toml but the cookbook does NOT parse
[build.env] sections in TOML configs. The REDBEAR_BARE_INITFS=1
env var I put in redbear-bare.toml was silently ignored.

Fix: propagate REDBEAR_BARE_INITFS through build-redbear.sh's make live
invocation. When CONFIG=redbear-bare and the operator has not already
exported REDBEAR_BARE_INITFS, auto-set it to 1 so the bare initfs
branch is triggered. Also propagates any pre-existing REDBEAR_BARE_INITFS
through the make call (override-only).

Also rewrote the [build.env] section in redbear-bare.toml to a
comment-only section explaining the dispatch mechanism, since the
cookbook parser ignores it.

(NO AI attribution)
2026-07-14 23:39:18 +09:00
vasilito 48a6f4c20b config + base-initfs: comprehensive redbear-bare target gaps
Address 4 gaps in the new redbear-bare target per review:

Gap 1: add REDBEAR_BARE_INITFS env var to base-initfs recipe. When
  set, BINS=init logd ramfs randd zerod ptyd getty instead of 22+
  daemons/drivers. The bare target can now opt into the truly-minimal
  initfs via the env var.

Gap 2: add ptyd and getty to the cp case-list so they go to /initfs/bin
  not /initfs/lib/drivers. Without this, the getty 2 service cannot
  start because ptyd (which it requires) isn't in the initfs.

Gap 3: add /etc/issue (pre-login banner) and /etc/motd (post-login
  message) to the bare config. Standard Unix login surface polish.

Gap 4: trim packages in the bare config. Override ca-certificates,
  pkgutils, kibi (from minimal.toml) to empty. Bare only needs:
  zsh, coreutils, base, base-initfs, kernel, relibc, userutils,
  libgcc, libstdcxx.

Build invocation:
  REDBEAR_BARE_INITFS=1 make live CONFIG_NAME=redbear-bare

(NO AI attribution)
2026-07-14 23:32:53 +09:00
vasilito 1256a43a5b config: add redbear-bare target
Strips to bare minimum: kernel boots, base-initfs 90_initfs.target
brings up init daemons (logd, randd, zerod, ptyd, inputd), console
getty 2 hands off to zsh as default shell. No networking, no
display/audio, no driver-manager, no extra services.

filesystem_size=96 MiB. Includes only minimal.toml. Overrides
base.toml's /etc/net/* and /etc/pkg.d/50_redox (empty) and
/etc/login_schemes.toml (display/audio removed).

Build: make live CONFIG_NAME=redbear-bare

(NO AI attribution)
2026-07-14 23:09:01 +09:00