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)
This commit is contained in:
@@ -2,19 +2,32 @@
|
|||||||
#
|
#
|
||||||
# Target contract:
|
# Target contract:
|
||||||
# - Boots kernel
|
# - Boots kernel
|
||||||
# - Starts init daemons via base-initfs 90_initfs.target
|
# - Starts init daemons via a minimal base-initfs
|
||||||
# (logd, randd, zerod, ptyd, inputd — provided by base recipe)
|
# (logd, randd, zerod, ptyd, getty — see recipes/core/base-initfs)
|
||||||
# - Console getty → zsh login prompt (from minimal.toml's 30_console.service)
|
# - Console getty → zsh login prompt (from minimal.toml's 30_console.service)
|
||||||
# - No networking, no driver-manager, no display, no audio, no extra daemons
|
# - No networking, no driver-manager, no display, no audio, no extra daemons
|
||||||
# - Stripped to bare minimum
|
# - Stripped to bare minimum
|
||||||
#
|
#
|
||||||
# Build: make live CONFIG_NAME=redbear-bare
|
# To trigger the bare initfs (BINS=init logd ramfs randd zerod ptyd getty):
|
||||||
|
# REDBEAR_BARE_INITFS=1 make live CONFIG_NAME=redbear-bare
|
||||||
|
#
|
||||||
|
# Or via the build script with the env var set:
|
||||||
|
# REDBEAR_BARE_INITFS=1 ./local/scripts/build-redbear.sh redbear-bare
|
||||||
|
|
||||||
include = ["minimal.toml"]
|
include = ["minimal.toml"]
|
||||||
|
|
||||||
[general]
|
[general]
|
||||||
filesystem_size = 96
|
filesystem_size = 96
|
||||||
|
|
||||||
|
# Trim down packages beyond what minimal.toml includes.
|
||||||
|
# minimal.toml includes ca-certificates, coreutils, extrautils, zsh, pkgutils, kibi.
|
||||||
|
# For "bare" we only need: zsh, coreutils, base, base-initfs, kernel, relibc,
|
||||||
|
# userutils, libgcc, libstdcxx. Drop ca-certificates, pkgutils, kibi.
|
||||||
|
[packages]
|
||||||
|
ca-certificates = {} # explicitly empty (overrides minimal)
|
||||||
|
pkgutils = {} # explicitly empty (overrides minimal)
|
||||||
|
kibi = {} # explicitly empty (overrides minimal)
|
||||||
|
|
||||||
# Override base.toml's network config — no DNS, no IP, no router
|
# Override base.toml's network config — no DNS, no IP, no router
|
||||||
[[files]]
|
[[files]]
|
||||||
path = "/etc/net/dns"
|
path = "/etc/net/dns"
|
||||||
@@ -87,6 +100,27 @@ schemes = [
|
|||||||
]
|
]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Pre-login banner (printed by getty before the login prompt)
|
||||||
|
[[files]]
|
||||||
|
path = "/etc/issue"
|
||||||
|
data = """
|
||||||
|
Red Bear OS 0.3.1 - bare target
|
||||||
|
Kernel \\r on an \\m (\\s)
|
||||||
|
|
||||||
|
Login as 'root' (password: password) or 'user' (no password).
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Post-login message (printed by zsh at shell startup)
|
||||||
|
[[files]]
|
||||||
|
path = "/etc/motd"
|
||||||
|
data = """
|
||||||
|
Welcome to Red Bear OS bare target.
|
||||||
|
|
||||||
|
This is a stripped-down initfs+rootfs build with only:
|
||||||
|
init, logd, ramfs, randd, zerod, ptyd, getty
|
||||||
|
No networking, no display, no audio, no driver-manager.
|
||||||
|
"""
|
||||||
|
|
||||||
[users.root]
|
[users.root]
|
||||||
password = "password"
|
password = "password"
|
||||||
uid = 0
|
uid = 0
|
||||||
@@ -100,3 +134,8 @@ shell = "/usr/bin/zsh"
|
|||||||
[groups.sudo]
|
[groups.sudo]
|
||||||
gid = 1
|
gid = 1
|
||||||
members = ["user"]
|
members = ["user"]
|
||||||
|
|
||||||
|
# Build override: trigger the bare-initfs branch in base-initfs/recipe.toml.
|
||||||
|
# The cookbook honors REDBEAR_BARE_INITFS in the env when invoking make.
|
||||||
|
[build.env]
|
||||||
|
REDBEAR_BARE_INITFS = "1"
|
||||||
|
|||||||
@@ -58,12 +58,29 @@ aarch64_bins()
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bare_initfs()
|
||||||
|
{
|
||||||
|
BINS=(
|
||||||
|
init
|
||||||
|
logd
|
||||||
|
ramfs
|
||||||
|
randd
|
||||||
|
zerod
|
||||||
|
ptyd
|
||||||
|
getty
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
case "${TARGET}" in
|
case "${TARGET}" in
|
||||||
i586-unknown-redox | i686-unknown-redox)
|
i586-unknown-redox | i686-unknown-redox)
|
||||||
x86_common_bins
|
x86_common_bins
|
||||||
;;
|
;;
|
||||||
x86_64-unknown-redox)
|
x86_64-unknown-redox)
|
||||||
x86_common_bins
|
if [ "${REDBEAR_BARE_INITFS:-0}" = "1" ]; then
|
||||||
|
bare_initfs
|
||||||
|
else
|
||||||
|
x86_common_bins
|
||||||
|
fi
|
||||||
;;
|
;;
|
||||||
aarch64-unknown-redox)
|
aarch64-unknown-redox)
|
||||||
aarch64_bins
|
aarch64_bins
|
||||||
@@ -93,7 +110,7 @@ mkdir -pv "${COOKBOOK_BUILD}/initfs/bin" "${COOKBOOK_BUILD}/initfs/lib/drivers"
|
|||||||
for bin in "${BINS[@]}"
|
for bin in "${BINS[@]}"
|
||||||
do
|
do
|
||||||
case "${bin}" in
|
case "${bin}" in
|
||||||
init | logd | ramfs | randd | zerod | pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd | hwd)
|
init | logd | ramfs | randd | zerod | pcid | pcid-spawner | fbbootlogd | fbcond | inputd | vesad | lived | ps2d | acpid | bcm2835-sdhcid | rtcd | hwd | ptyd | getty)
|
||||||
cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_BUILD}/initfs/bin"
|
cp -v "target/${TARGET}/${build_type}/${bin}" "${COOKBOOK_BUILD}/initfs/bin"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
Reference in New Issue
Block a user