diff --git a/AGENTS.md b/AGENTS.md index a8ec6f91..e8704b47 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -92,13 +92,23 @@ echo 'PODMAN_BUILD?=0' > .config # Native build (no container) echo 'PODMAN_BUILD?=1' > .config # Podman container build # Build Red Bear OS -# Supported compile targets: redbear-mini, redbear-live-mini, redbear-full, redbear-live-full -# Desktop/graphics are available only on redbear-full and redbear-live-full. -make all CONFIG_NAME=redbear-full # Desktop/graphics-enabled Red Bear target → harddrive.img -make live CONFIG_NAME=redbear-live-full # Desktop/graphics live ISO for real bare metal -make all CONFIG_NAME=redbear-mini # Minimal non-desktop Red Bear target -make live CONFIG_NAME=redbear-live-mini # Minimal live ISO for real bare metal -CI=1 make all CONFIG_NAME=redbear-mini # CI mode (disables TUI, for non-interactive) +# Supported compile targets: +# redbear-full desktop/graphics harddrive.img +# redbear-live full desktop live ISO (greeter + text fallback) +# redbear-live-mini text-only mini live ISO for recovery/bare metal +# redbear-full-grub desktop target with GRUB boot manager +# 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) # Run make qemu # Boot in QEMU diff --git a/README.md b/README.md index 6058d89b..e80fd7a7 100644 --- a/README.md +++ b/README.md @@ -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. ```bash +# Non-live (harddrive.img for QEMU / development) 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 # Broader integration slice with GRUB boot manager -make live CONFIG_NAME=redbear-live # Full 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 all CONFIG_NAME=redbear-full-grub # Desktop target with GRUB boot manager + +# Live ISO (for real bare metal) +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 ``` diff --git a/config/redbear-grub-live-full.toml b/config/redbear-grub-live-full.toml new file mode 100644 index 00000000..62bfe4f0 --- /dev/null +++ b/config/redbear-grub-live-full.toml @@ -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"] \ No newline at end of file diff --git a/config/redbear-live-full-grub.toml b/config/redbear-live-full-grub.toml index a3b6ea12..5b1dcd6a 100644 --- a/config/redbear-live-full-grub.toml +++ b/config/redbear-live-full-grub.toml @@ -1,6 +1,7 @@ # 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"] diff --git a/local/AGENTS.md b/local/AGENTS.md index 9e454a1a..86316365 100644 --- a/local/AGENTS.md +++ b/local/AGENTS.md @@ -39,12 +39,22 @@ make all CONFIG_NAME=redbear-full # Rebuild the active desktop/graphics The supported compile targets are exactly: -- `redbear-mini` -- `redbear-live-mini` -- `redbear-full` -- `redbear-live-full` +Non-live (harddrive.img for QEMU / development): +- `redbear-full` — Desktop/graphics-enabled target +- `redbear-full-grub` — Desktop/graphics with GRUB boot manager -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 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 # 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-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 ./local/scripts/validate-vm-network-baseline.sh @@ -564,16 +582,29 @@ local/Assets/ Active compile targets: -- `redbear-mini` -- `redbear-live-mini` +Non-live (harddrive.img for QEMU / development): - `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`, `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. ``` +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-full.toml ├── 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-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 └── desktop.toml (mainline) └── 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-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 └── minimal non-desktop live target └── desktop/graphics intentionally absent +redbear-grub-live-mini.toml + └── redbear-live-mini.toml (text-only live base) + └── redbear-grub.toml (GRUB policy) + redbear-mini └── 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 @@ -618,12 +670,15 @@ redbear-minimal.toml (legacy/staging naming still present in tree) ``` Config comparison: -| Config | GPU Stack | Desktop | Branding | ext4d | filesystem_size | -|--------|-----------|---------|----------|-------|-----------------| -| redbear-full | Full | Yes | Yes | ✅ (via desktop.toml) | 4096 MiB | -| redbear-live-full | Full | Yes | Yes | ✅ (via redbear-full.toml) | 4096 MiB | -| redbear-mini | None | None | Yes | legacy/staging naming in tree still maps through `redbear-minimal*` files | legacy/staging | -| redbear-live-mini | None | None | Yes | legacy/staging naming in tree still maps through `redbear-live-minimal*` files | legacy/staging | +| Config | GPU Stack | Desktop | Branding | ext4d | GRUB | filesystem_size | +|--------|-----------|---------|----------|-------|------|-----------------| +| redbear-full | Full | Yes | Yes | ✅ (via desktop.toml) | No | 4096 MiB | +| redbear-full-grub | Full | Yes | Yes | ✅ (via redbear-full.toml) | Yes | 4096 MiB | +| redbear-live | Full | Yes | Yes | ✅ (via redbear-full.toml) | No | 4096 MiB | +| 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) diff --git a/local/scripts/integrate-redbear.sh b/local/scripts/integrate-redbear.sh index d7d9e8e9..95cec8d8 100755 --- a/local/scripts/integrate-redbear.sh +++ b/local/scripts/integrate-redbear.sh @@ -232,6 +232,11 @@ declare -a redbear_configs=( "config/redbear-full.toml" "config/redbear-wayland.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=() diff --git a/scripts/build-iso.sh b/scripts/build-iso.sh index 85a0f629..e4ad740e 100755 --- a/scripts/build-iso.sh +++ b/scripts/build-iso.sh @@ -14,6 +14,12 @@ canonicalize_live_config() { redbear-live-mini-grub) 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" ;; @@ -35,13 +41,15 @@ Options: -h, --help Show this help Supported live ISO targets: - redbear-live Full live ISO - redbear-live-mini Text-only mini live ISO - redbear-grub-live-mini Text-only mini live ISO with GRUB bootloader + redbear-live Full live ISO (graphical greeter + text fallback) + redbear-live-mini Text-only mini live ISO + 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: - redbear-live-full - redbear-live-mini-grub + redbear-live-full → redbear-live + redbear-live-mini-grub → redbear-grub-live-mini + redbear-live-full-grub → redbear-grub-live-full Defaults: CONFIG_NAME=redbear-live @@ -88,7 +96,7 @@ fi CONFIG_NAME="$(canonicalize_live_config "$CONFIG_NAME")" 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