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).
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.
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).
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)
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)
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)