diff --git a/config/redbear-bare.toml b/config/redbear-bare.toml index 80d3fe72ed..b9eafac4ae 100644 --- a/config/redbear-bare.toml +++ b/config/redbear-bare.toml @@ -1,20 +1,33 @@ # Red Bear OS Bare Configuration -# +# # Target contract: # - Boots kernel -# - Starts init daemons via base-initfs 90_initfs.target -# (logd, randd, zerod, ptyd, inputd — provided by base recipe) +# - Starts init daemons via a minimal base-initfs +# (logd, randd, zerod, ptyd, getty — see recipes/core/base-initfs) # - Console getty → zsh login prompt (from minimal.toml's 30_console.service) # - No networking, no driver-manager, no display, no audio, no extra daemons # - 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"] [general] 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 [[files]] 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] password = "password" uid = 0 @@ -100,3 +134,8 @@ shell = "/usr/bin/zsh" [groups.sudo] gid = 1 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" diff --git a/recipes/core/base-initfs/recipe.toml b/recipes/core/base-initfs/recipe.toml index 2341c176bd..6ab537c9fa 100644 --- a/recipes/core/base-initfs/recipe.toml +++ b/recipes/core/base-initfs/recipe.toml @@ -58,12 +58,29 @@ aarch64_bins() esac } +bare_initfs() +{ + BINS=( + init + logd + ramfs + randd + zerod + ptyd + getty + ) +} + case "${TARGET}" in i586-unknown-redox | i686-unknown-redox) x86_common_bins ;; 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_bins @@ -93,7 +110,7 @@ mkdir -pv "${COOKBOOK_BUILD}/initfs/bin" "${COOKBOOK_BUILD}/initfs/lib/drivers" for bin in "${BINS[@]}" do 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" ;; *)