The 2026-07-28 FIRST-CLASS CITIZEN POLICY was initially drafted with all 48
redbear-* recipes wired into redbear-mini. The operator corrected this:
MINI target includes just packages whicha are not related to graphics.
While FULL must contain all text+graphial packages.
So the corrected architecture is:
- redbear-mini = text-only binaries (24 original + a few more)
- redbear-full = ALL redbear-* (text + graphics, via inheritance + explicit
full-only entries)
Updated docs:
- REDBEAR-FIRST-CLASS-CITIZEN-POLICY.md: rewrote with the wiring table per
program classification (text-only binary / graphics binary / library-only /
hardware peripheral driver). Library-only recipes follow their consumers'
target: tui-theme (consumed by power/cub/tlc in mini) goes in mini;
hid-core/login-protocol/passwd (consumed by desktop-only programs) go in full.
- ORPHAN-STATUS.md: rewrote as 'Library-only Red Bear Crates' reference.
Documents the 4 library-only recipes, their consumers, and the config
they are wired into per the corrected policy.
- FIRMWARE-SUBSETS-DECISION.md: rewrote. All 5 firmware recipes (monolithic
+ 4 subsets) are now correctly classified as graphics-related and wired
into redbear-full (not mini). Original decision was to KEEP-ORPHAN them,
but the corrected FIRST-CLASS policy promotes them to first-class citizens
in redbear-full.
- REDBEAR-UFW-STATUS.md: rewrote. redbear-ufw is a text-only firewall prototype
and is wired into redbear-mini (the text-only target), not redbear-full.
The prototype is built on every canonical build invocation per the
FIRST-CLASS CITIZEN policy.
- 5 firmware README.md files: removed stale 'KEEP-ORPHAN' / 'STUB-DATA'
markers that were written before the corrected policy. Each now reads
'FIRST-CLASS CITIZEN (wired into config/redbear-full.toml [packages])'
per the corrected wiring.
All 48 redbear-* recipes remain reachable from at least one config:
- text-only binaries + their consumers' libraries in redbear-mini
- graphics binaries + library-only recipes for desktop consumers in redbear-full
- hardware peripherals in redbear-{wifi,bluetooth}-experimental.toml (inherited by full)
sync-versions.sh --check still passes (75 Cat 1 crates, 0 drift).
4.4 KiB
Firmware Subsets Decision (corrected 2026-07-28)
Date: 2026-07-28 (corrected to reflect FIRST-CLASS CITIZEN wiring)
Status: ALL FIRMWARE RECIPES ARE FIRST-CLASS CITIZENS
All 5 redbear-firmware* recipes are first-class citizens of Red Bear OS. They are wired
into config/redbear-full.toml [packages]. The monolithic redbear-firmware is the
default for size-tolerant builds (full ISO has 4 GB filesystem); the 4 named subsets are
available for size-constrained builds.
Per the FIRST-CLASS CITIZEN wiring policy (local/docs/REDBEAR-FIRST-CLASS-CITIZEN-POLICY.md),
graphics-related binaries go into redbear-full. Firmware is graphics-adjacent (it
feeds GPU, Wi-Fi, Bluetooth, sound, NPU), so all firmware recipes go into full, NOT mini.
The 5 firmware recipes
| Recipe | Path | Size | Status |
|---|---|---|---|
redbear-firmware |
local/recipes/system/redbear-firmware/ |
~2 GB (all linux-firmware) | FIRST-CLASS, FULL |
redbear-firmware-amdgpu |
local/recipes/system/redbear-firmware-amdgpu/ |
subset of linux-firmware (amdgpu + amdnpu) | FIRST-CLASS, FULL |
redbear-firmware-bluetooth |
local/recipes/system/redbear-firmware-bluetooth/ |
subset of linux-firmware (Intel ibt bluetooth) | FIRST-CLASS, FULL |
redbear-firmware-intel |
local/recipes/system/redbear-firmware-intel/ |
subset of linux-firmware (i915 DMC + HDA + VPU + ISH) | FIRST-CLASS, FULL |
redbear-firmware-iwlwifi |
local/recipes/system/redbear-firmware-iwlwifi/ |
subset of linux-firmware (iwlwifi) | FIRST-CLASS, FULL |
Why all 5 are in redbear-full (not redbear-mini)
The original redbear-mini.toml was text-only and did NOT include firmware recipes. The
2026-07-28 FIRST-CLASS CITIZEN pass initially added all 5 to mini — this was incorrect
because firmware is graphics-adjacent. The corrected wiring (per the operator's clarification
"MINI target includes just packages whicha are not related to graphics") is:
redbear-firmware(2 GB monolithic bundle): wired intoredbear-full [packages]only. Mini has no firmware payload.redbear-firmware-{amdgpu,bluetooth,intel,iwlwifi}(subsets): wired intoredbear-full [packages]only. These are subsets of the monolithic bundle; size-constrained builds that need only AMD GPU / Bluetooth / Intel / Wi-Fi firmware use these.
config/redbear-mini.toml does NOT include any firmware recipe.
When to use which firmware recipe
| Use case | Recipe |
|---|---|
| Default desktop build with full hardware support | redbear-firmware (monolithic) |
| AMD GPU only (no Wi-Fi, no Bluetooth, no extra Intel) | redbear-firmware-amdgpu |
| Intel Wi-Fi only (no AMD, no other firmware) | redbear-firmware-iwlwifi |
| Intel Bluetooth only | redbear-firmware-bluetooth |
| Intel i915 + HDA + VPU + ISH only | redbear-firmware-intel |
The monolithic redbear-firmware is the recommended default for redbear-full (4 GB
filesystem size allows the full 2 GB firmware bundle).
Build-time fetch
All 5 firmware recipes download from https://gitlab.com/kernel-firmware/linux-firmware.git.
At build time, the cookbook:
- Downloads the upstream linux-firmware tarball to
build/redbear-firmware-cache/linux-firmware-main.tar.gz(shared cache). - Extracts the relevant subset (e.g.,
amdgpu/,amdnpu/) to the cookbook stage. - Stages files to
/lib/firmware/<subset>/on the Red Bear OS image.
The cache is shared between all 5 recipes, so building multiple subsets in the same build session does not re-download the tarball.
Network requirement
All 5 firmware recipes require network access at build time. Per
local/scripts/build-redbear.sh, network is enabled by --upstream:
unset REDBEAR_RELEASE # CRITICAL: must not be set in dev
export REDBEAR_ALLOW_UPSTREAM=1
./local/scripts/build-redbear.sh redbear-full # builds all firmware subsets
If REPO_OFFLINE=1 (default in release mode), the build aborts with a clear error message.
Recovery / deprecation
If the upstream linux-firmware tarball structure changes (e.g., amdgpu/ moves to a different
path), each subset recipe has its own copy logic in the recipe.toml [build] script
section. The recipes are independent — fixing one does not affect the others.
See also
local/recipes/system/redbear-firmware*/— recipe directorieslocal/docs/REDBEAR-FIRST-CLASS-CITIZEN-POLICY.md— wiring policylocal/docs/FIRMWARE-VALIDATION-LOG.md— runtime validation of firmware loading