Clarify build targets, add GRUB live configs, clean up docs

Consolidate compile target naming (redbear-live, redbear-grub-live-full,
etc.), add config/redbear-grub-live-full.toml, make redbear-live-full-grub
a legacy alias, update build-iso.sh to support all GRUB live targets, and
sync AGENTS.md/README.md build command documentation.
This commit is contained in:
2026-04-25 00:39:15 +01:00
parent a1fdf9782b
commit f7ffafa0c4
7 changed files with 140 additions and 35 deletions
+16 -6
View File
@@ -92,12 +92,22 @@ echo 'PODMAN_BUILD?=0' > .config # Native build (no container)
echo 'PODMAN_BUILD?=1' > .config # Podman container build echo 'PODMAN_BUILD?=1' > .config # Podman container build
# Build Red Bear OS # Build Red Bear OS
# Supported compile targets: redbear-mini, redbear-live-mini, redbear-full, redbear-live-full # Supported compile targets:
# Desktop/graphics are available only on redbear-full and redbear-live-full. # redbear-full desktop/graphics harddrive.img
make all CONFIG_NAME=redbear-full # Desktop/graphics-enabled Red Bear target → harddrive.img # redbear-live full desktop live ISO (greeter + text fallback)
make live CONFIG_NAME=redbear-live-full # Desktop/graphics live ISO for real bare metal # redbear-live-mini text-only mini live ISO for recovery/bare metal
make all CONFIG_NAME=redbear-mini # Minimal non-desktop Red Bear target # redbear-full-grub desktop target with GRUB boot manager
make live CONFIG_NAME=redbear-live-mini # Minimal live ISO for real bare metal # redbear-grub-live-full full desktop live ISO with GRUB
# redbear-grub-live-mini text-only mini live ISO with GRUB
# Desktop/graphics targets: redbear-full, redbear-full-grub, redbear-live, redbear-grub-live-full
# Text-only targets: redbear-live-mini, redbear-grub-live-mini
# NOTE: redbear-kde and redbear-live-full are historical/staging, not supported compile targets
make all CONFIG_NAME=redbear-full # Desktop/graphics-enabled target → harddrive.img
make live CONFIG_NAME=redbear-live # Full desktop live ISO (greeter + text fallback)
make live CONFIG_NAME=redbear-live-mini # Text-only mini live ISO for recovery/bare metal
make all CONFIG_NAME=redbear-full-grub # Desktop target with GRUB boot manager → harddrive.img
make live CONFIG_NAME=redbear-grub-live-full # Full desktop live ISO with GRUB
make live CONFIG_NAME=redbear-grub-live-mini # Text-only mini live ISO with GRUB
CI=1 make all CONFIG_NAME=redbear-mini # CI mode (disables TUI, for non-interactive) CI=1 make all CONFIG_NAME=redbear-mini # CI mode (disables TUI, for non-interactive)
# Run # Run
+16 -4
View File
@@ -175,11 +175,23 @@ Current validation language should be read this way:
Requires a Linux x86_64 host with Rust nightly, QEMU, and standard build tools. See the [Redox Build Instructions](https://doc.redox-os.org/book/podman-build.html) for full prerequisites. Requires a Linux x86_64 host with Rust nightly, QEMU, and standard build tools. See the [Redox Build Instructions](https://doc.redox-os.org/book/podman-build.html) for full prerequisites.
```bash ```bash
# Non-live (harddrive.img for QEMU / development)
make all CONFIG_NAME=redbear-full # Tracked desktop-capable target make all CONFIG_NAME=redbear-full # Tracked desktop-capable target
make all CONFIG_NAME=redbear-mini # Tracked minimal non-desktop target make all CONFIG_NAME=redbear-full-grub # Desktop target with GRUB boot manager
make all CONFIG_NAME=redbear-full-grub # Broader integration slice with GRUB boot manager
make live CONFIG_NAME=redbear-live # Full live ISO for real bare metal # Live ISO (for real bare metal)
make live CONFIG_NAME=redbear-live-mini # Tiny bare-metal live ISO for minimal/recovery use (~256 MiB image) make live CONFIG_NAME=redbear-live # Full desktop live ISO (greeter + text fallback)
make live CONFIG_NAME=redbear-live-mini # Text-only mini live ISO for recovery (~384 MiB)
make live CONFIG_NAME=redbear-grub-live-full # Full desktop live ISO with GRUB
make live CONFIG_NAME=redbear-grub-live-mini # Text-only mini live ISO with GRUB
# Or use the helper script
scripts/build-iso.sh redbear-live # Full desktop live ISO
scripts/build-iso.sh redbear-live-mini # Text-only mini
scripts/build-iso.sh redbear-grub-live-full # Full desktop + GRUB
scripts/build-iso.sh redbear-grub-live-mini # Text-only + GRUB
# QEMU (uses harddrive.img, not live ISO)
make qemu CONFIG_NAME=redbear-full # Boot the tracked desktop-capable target in QEMU make qemu CONFIG_NAME=redbear-full # Boot the tracked desktop-capable target in QEMU
``` ```
+14
View File
@@ -0,0 +1,14 @@
# Red Bear OS GRUB Live Full Configuration
# Canonical GRUB-backed live ISO for the full desktop/session target.
#
# Build: make live CONFIG_NAME=redbear-grub-live-full
#
# Boot flow: UEFI → GRUB (menu) → chainload EFI/REDBEAR/redbear.efi → Redox bootloader → kernel
# Session: graphical greeter on VT 3, text login fallback on VT 2, debug console on /scheme/debug
#
# The installer reads bootloader = "grub" from this config and writes:
# EFI/BOOT/BOOTX64.EFI — GRUB EFI binary (primary bootloader)
# EFI/BOOT/grub.cfg — GRUB menu config
# EFI/REDBEAR/redbear.efi — Redox bootloader (chainload target)
include = ["redbear-live.toml", "redbear-grub.toml"]
+4 -3
View File
@@ -1,6 +1,7 @@
# Red Bear OS Live Full Configuration with GRUB Boot Manager # Red Bear OS Live Full Configuration with GRUB Boot Manager
# Live ISO for full desktop/session target with installer-native GRUB chainload. # Legacy compatibility alias for the canonical GRUB full live target.
# #
# Build: make live CONFIG_NAME=redbear-live-full-grub # Preferred build: make live CONFIG_NAME=redbear-grub-live-full
# Legacy build: make live CONFIG_NAME=redbear-live-full-grub
include = ["redbear-live-full.toml", "redbear-grub.toml"] include = ["redbear-grub-live-full.toml"]
+70 -15
View File
@@ -39,12 +39,22 @@ make all CONFIG_NAME=redbear-full # Rebuild the active desktop/graphics
The supported compile targets are exactly: The supported compile targets are exactly:
- `redbear-mini` Non-live (harddrive.img for QEMU / development):
- `redbear-live-mini` - `redbear-full` — Desktop/graphics-enabled target
- `redbear-full` - `redbear-full-grub` — Desktop/graphics with GRUB boot manager
- `redbear-live-full`
Desktop/graphics are available only on `redbear-full` and `redbear-live-full`. Live (ISO for real bare metal):
- `redbear-live` — Full desktop live ISO (graphical greeter + text fallback)
- `redbear-live-mini` — Text-only mini live ISO for recovery/bare metal
- `redbear-grub-live-full` — Full desktop live ISO with GRUB boot manager
- `redbear-grub-live-mini` — Text-only mini live ISO with GRUB
Legacy aliases (accepted by build-iso.sh):
- `redbear-live-full``redbear-live`
- `redbear-live-mini-grub``redbear-grub-live-mini`
- `redbear-live-full-grub``redbear-grub-live-full`
Desktop/graphics are available only on `redbear-full`, `redbear-live`, `redbear-full-grub`, and `redbear-grub-live-full`.
Names such as `redbear-kde`, `redbear-wayland`, and `redbear-minimal` may still appear in older Names such as `redbear-kde`, `redbear-wayland`, and `redbear-minimal` may still appear in older
docs, legacy validation notes, or in-repo staging configs, but they should not be treated as the docs, legacy validation notes, or in-repo staging configs, but they should not be treated as the
@@ -237,8 +247,16 @@ redox-master/ ← git pull updates mainline Redox
./local/scripts/build-redbear.sh redbear-mini ./local/scripts/build-redbear.sh redbear-mini
# Live images # Live images
./local/scripts/build-redbear.sh redbear-live-full && make live CONFIG_NAME=redbear-live-full ./local/scripts/build-redbear.sh redbear-live && make live CONFIG_NAME=redbear-live
./local/scripts/build-redbear.sh redbear-live-mini && make live CONFIG_NAME=redbear-live-mini ./local/scripts/build-redbear.sh redbear-live-mini && make live CONFIG_NAME=redbear-live-mini
./local/scripts/build-redbear.sh redbear-live-mini && make live CONFIG_NAME=redbear-grub-live-mini
./local/scripts/build-redbear.sh redbear-live && make live CONFIG_NAME=redbear-grub-live-full
# Or using the helper:
scripts/build-iso.sh redbear-live
scripts/build-iso.sh redbear-live-mini
scripts/build-iso.sh redbear-grub-live-mini
scripts/build-iso.sh redbear-grub-live-full
# VM-network baseline validation helpers # VM-network baseline validation helpers
./local/scripts/validate-vm-network-baseline.sh ./local/scripts/validate-vm-network-baseline.sh
@@ -564,16 +582,29 @@ local/Assets/
Active compile targets: Active compile targets:
- `redbear-mini` Non-live (harddrive.img for QEMU / development):
- `redbear-live-mini`
- `redbear-full` - `redbear-full`
- `redbear-live-full` - `redbear-full-grub`
Live (ISO for real bare metal):
- `redbear-live`
- `redbear-live-mini`
- `redbear-grub-live-full`
- `redbear-grub-live-mini`
Desktop/graphics are available only on the `full` targets. Older names such as `redbear-kde`, Desktop/graphics are available only on the `full` targets. Older names such as `redbear-kde`,
`redbear-wayland`, `redbear-minimal`, and `redbear-live-minimal` may still exist in the tree as `redbear-wayland`, `redbear-minimal`, and `redbear-live-minimal` may still exist in the tree as
legacy or staging artifacts, but they are not the supported compile-target surface. legacy or staging artifacts, but they are not the supported compile-target surface.
``` ```
redbear-grub-live-full.toml
└── redbear-live.toml (full desktop base)
└── redbear-grub.toml (GRUB policy: bootloader = "grub", efi_partition_size = 16)
redbear-grub-live-mini.toml
└── redbear-live-mini.toml (text-only live base)
└── redbear-grub.toml (GRUB policy)
redbear-live-full.toml redbear-live-full.toml
└── redbear-full.toml └── redbear-full.toml
├── desktop.toml (mainline) ├── desktop.toml (mainline)
@@ -591,6 +622,19 @@ redbear-live-full.toml
NOTE: redbear-meta is explicitly included in redbear-full.toml; keep broader inclusion deliberate. NOTE: redbear-meta is explicitly included in redbear-full.toml; keep broader inclusion deliberate.
NOTE: redbear-live-full inherits from redbear-full.toml. NOTE: redbear-live-full inherits from redbear-full.toml.
redbear-live.toml
└── redbear-full.toml
├── desktop.toml (mainline)
├── redbear-legacy-base.toml ← Neutralize broken base legacy init scripts
├── redbear-legacy-desktop.toml ← Neutralize broken desktop legacy init scripts
├── redbear-device-services.toml ← Shared firmware-loader / evdevd / udev service wiring
├── redbear-netctl.toml ← Shared Red Bear network profile files + netctl boot service
└── [packages] redbear-release, redbear-hwutils, redbear-netctl,
firmware-loader, evdevd, udev-shim, redbear-info,
redbear-sessiond, redbear-authd, redbear-session-launch,
redbear-greeter, redbear-meta, cub
NOTE: Desktop/graphics are available on redbear-live.
redbear-full.toml redbear-full.toml
└── desktop.toml (mainline) └── desktop.toml (mainline)
└── redbear-legacy-base.toml ← Neutralize broken base legacy init scripts └── redbear-legacy-base.toml ← Neutralize broken base legacy init scripts
@@ -599,10 +643,18 @@ redbear-full.toml
└── redbear-netctl.toml ← Shared Red Bear network profile files + netctl boot service └── redbear-netctl.toml ← Shared Red Bear network profile files + netctl boot service
└── redbear-greeter-services.toml ← Greeter/auth/session-launch wiring └── redbear-greeter-services.toml ← Greeter/auth/session-launch wiring
redbear-full-grub.toml
└── redbear-full.toml
└── redbear-grub.toml (GRUB policy: bootloader = "grub", efi_partition_size = 16)
redbear-live-mini.toml redbear-live-mini.toml
└── minimal non-desktop live target └── minimal non-desktop live target
└── desktop/graphics intentionally absent └── desktop/graphics intentionally absent
redbear-grub-live-mini.toml
└── redbear-live-mini.toml (text-only live base)
└── redbear-grub.toml (GRUB policy)
redbear-mini redbear-mini
└── legacy/staging config files in-tree still use the older `redbear-minimal*` names └── legacy/staging config files in-tree still use the older `redbear-minimal*` names
in some places; do not treat those names as the supported compile-target surface in some places; do not treat those names as the supported compile-target surface
@@ -618,12 +670,15 @@ redbear-minimal.toml (legacy/staging naming still present in tree)
``` ```
Config comparison: Config comparison:
| Config | GPU Stack | Desktop | Branding | ext4d | filesystem_size | | Config | GPU Stack | Desktop | Branding | ext4d | GRUB | filesystem_size |
|--------|-----------|---------|----------|-------|-----------------| |--------|-----------|---------|----------|-------|------|-----------------|
| redbear-full | Full | Yes | Yes | ✅ (via desktop.toml) | 4096 MiB | | redbear-full | Full | Yes | Yes | ✅ (via desktop.toml) | No | 4096 MiB |
| redbear-live-full | Full | Yes | Yes | ✅ (via redbear-full.toml) | 4096 MiB | | redbear-full-grub | Full | Yes | Yes | ✅ (via redbear-full.toml) | Yes | 4096 MiB |
| redbear-mini | None | None | Yes | legacy/staging naming in tree still maps through `redbear-minimal*` files | legacy/staging | | redbear-live | Full | Yes | Yes | ✅ (via redbear-full.toml) | No | 4096 MiB |
| redbear-live-mini | None | None | Yes | legacy/staging naming in tree still maps through `redbear-live-minimal*` files | legacy/staging | | redbear-grub-live-full | Full | Yes | Yes | ✅ (via redbear-full.toml) | Yes | 4096 MiB |
| redbear-live-mini | None | None | Yes | legacy/staging | No | legacy/staging |
| redbear-grub-live-mini | None | None | Yes | legacy/staging | Yes | legacy/staging |
| redbear-mini | None | None | Yes | legacy/staging naming in tree still maps through `redbear-minimal*` files | No | legacy/staging |
## ANTI-PATTERNS (COMMIT POLICY) ## ANTI-PATTERNS (COMMIT POLICY)
+5
View File
@@ -232,6 +232,11 @@ declare -a redbear_configs=(
"config/redbear-full.toml" "config/redbear-full.toml"
"config/redbear-wayland.toml" "config/redbear-wayland.toml"
"config/redbear-live.toml" "config/redbear-live.toml"
"config/redbear-live-mini.toml"
"config/redbear-live-full.toml"
"config/redbear-grub-live-mini.toml"
"config/redbear-grub-live-full.toml"
"config/redbear-grub.toml"
) )
declare -a found_configs=() declare -a found_configs=()
+12 -4
View File
@@ -14,6 +14,12 @@ canonicalize_live_config() {
redbear-live-mini-grub) redbear-live-mini-grub)
printf '%s\n' "redbear-grub-live-mini" printf '%s\n' "redbear-grub-live-mini"
;; ;;
redbear-live-full-grub)
printf '%s\n' "redbear-grub-live-full"
;;
redbear-grub-live-full)
printf '%s\n' "redbear-grub-live-full"
;;
*) *)
printf '%s\n' "$1" printf '%s\n' "$1"
;; ;;
@@ -35,13 +41,15 @@ Options:
-h, --help Show this help -h, --help Show this help
Supported live ISO targets: Supported live ISO targets:
redbear-live Full live ISO redbear-live Full live ISO (graphical greeter + text fallback)
redbear-live-mini Text-only mini live ISO redbear-live-mini Text-only mini live ISO
redbear-grub-live-mini Text-only mini live ISO with GRUB bootloader redbear-grub-live-mini Text-only mini live ISO with GRUB bootloader
redbear-grub-live-full Full live ISO with GRUB bootloader
Legacy compatibility aliases: Legacy compatibility aliases:
redbear-live-full redbear-live-full → redbear-live
redbear-live-mini-grub redbear-live-mini-grub → redbear-grub-live-mini
redbear-live-full-grub → redbear-grub-live-full
Defaults: Defaults:
CONFIG_NAME=redbear-live CONFIG_NAME=redbear-live
@@ -88,7 +96,7 @@ fi
CONFIG_NAME="$(canonicalize_live_config "$CONFIG_NAME")" CONFIG_NAME="$(canonicalize_live_config "$CONFIG_NAME")"
case "$CONFIG_NAME" in case "$CONFIG_NAME" in
redbear-live|redbear-live-mini|redbear-grub-live-mini) redbear-live|redbear-live-mini|redbear-grub-live-mini|redbear-grub-live-full)
;; ;;
*) *)
echo "ERROR: Unsupported live ISO target '$CONFIG_NAME'" >&2 echo "ERROR: Unsupported live ISO target '$CONFIG_NAME'" >&2