Files
RedBear-OS/local/docs/FIRMWARE-SUBSETS-DECISION.md
T
vasilito 304b0d4977 docs: correct first-class-citizen policy + remove stale ORPHAN markers
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).
2026-07-28 16:24:17 +09:00

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 into redbear-full [packages] only. Mini has no firmware payload.
  • redbear-firmware-{amdgpu,bluetooth,intel,iwlwifi} (subsets): wired into redbear-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:

  1. Downloads the upstream linux-firmware tarball to build/redbear-firmware-cache/linux-firmware-main.tar.gz (shared cache).
  2. Extracts the relevant subset (e.g., amdgpu/, amdnpu/) to the cookbook stage.
  3. 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 directories
  • local/docs/REDBEAR-FIRST-CLASS-CITIZEN-POLICY.md — wiring policy
  • local/docs/FIRMWARE-VALIDATION-LOG.md — runtime validation of firmware loading