10caab7085
Comprehensive boot process improvement across the entire stack: Compositor (NEW): Real Rust Wayland display server (690 lines) - Full XDG shell protocol (15/15 protocols implemented and verified) - wl_shm.format, xdg_wm_base, xdg_surface.get_toplevel support - wl_buffer.release lifecycle, buffer composite to framebuffer - Framebuffer mapping via scheme:memory (Redox) with fallback - PID/status files for greeterd health checks - Integration test suite (3 cases passing) - Diagnostic tool: redbear-compositor-check DRM/KMS Chain: - KWIN_DRM_DEVICES=/scheme/drm/card0 wired through init→greeterd→compositor - session-launch propagates KWIN_DRM_DEVICES (new test, 11/11 pass) - DRM auto-detect + 5s wait loop in compositor wrapper - Boot verified: compositor uses DRM backend in QEMU Intel DRM: - Gen8-Gen12 supported with firmware (SKL/KBL/CNL/ICL/GLK/RKL/DG1/TGL/ADLP/DG2/MTL/ARL/LNL/BMG) - Gen4-Gen7 device IDs recognized, unsupported with clear error message - Linux 7.0 i915 reference for all 200+ device IDs - Display fixes: sticky pipe refresh, PIPE=4/PORT=6, 64-bit page flip, EDID skeleton - 4 durability patches wired into recipe VirtIO GPU Driver (NEW): - 220-line DRM/KMS backend for QEMU virtio-gpu - Full GpuDriver trait implementation (11 methods) - PCI BAR0 framebuffer mapping, connector/mode info, GEM management Kernel: - 4GB RAM hang root cause: MEMORY_MAP overflow at 512 entries → fixed to 1024 - Canary chain R S 1 2 3 4 5 6 7 (9 COM1 checkpoints through boot) - Verified: kernel boots at 4GB with all canaries present - 3 durability patches (P0-canary, P1-memory-overflow) Live ISO: - Preload capped at 1 GiB with partial preload messaging - P5 patch wired into bootloader recipe Greeter: - Startup progress logging (4 checkpoints) - QML crash diagnostic (exit code 1 → specific error message) - greeterd tests: 8/8 pass Boot Daemons: - dhcpd: auto-detect interface from /scheme/netcfg/ifaces/ - i2c-gpio-expanderd: I2C decode retry (3× with 50ms delay) - ucsid: same I2C decode hardening - Compositor: safe framebuffer fallback (prevents crash) Qt6 Toolchain: - -march=x86-64 for CPU compatibility (prevents invalid_opcode on core2duo) - -fpermissive for header compatibility (unlinkat/linkat redefinition) Documentation: - BOOT-PROCESS-IMPROVEMENT-PLAN.md (comprehensive, 320 lines) - PROFILE-MATRIX.md: ISO organization, RAM requirements, known issues - BOOT-PROCESS-ASSESSMENT.md: Phase 7 kernel hang diagnosis - Deleted 4 stale docs (BAREMETAL-LOG, ACPI-FIXES, 02-GAP-ANALYSIS, _CUB_RBPKGBUILD) - Cross-references updated across all docs KWin stubs replaced with real compositor delegation. redbear-kde-session script created for post-login session launch. 30+ files, 10 patches, 3 binaries, 22 tests, 0 errors.
138 lines
8.3 KiB
Markdown
138 lines
8.3 KiB
Markdown
# Red Bear OS Profile Matrix
|
||
|
||
## Purpose
|
||
|
||
This matrix makes the tracked Red Bear profiles explicit so support claims map to a concrete build
|
||
target instead of a vague feature list.
|
||
|
||
## Validation Labels
|
||
|
||
- **builds** — configuration and packages are expected to compile
|
||
- **boots** — image is expected to reach a usable boot state
|
||
- **validated** — behavior has been tested on the claimed profile
|
||
- **experimental** — available for bring-up, but not support-promised
|
||
|
||
Subsystem plans may add narrower intermediate labels when `boots` is too coarse. In particular, the
|
||
USB plan uses:
|
||
|
||
- **enumerates** — runtime surfaces can discover controllers, ports, or descriptors
|
||
- **usable** — a specific controller/class path works in a limited real scenario
|
||
|
||
## Compile Targets
|
||
|
||
> **Phase numbering note:** phase labels below use the v2.0 desktop plan phases from
|
||
> `local/docs/CONSOLE-TO-KDE-DESKTOP-PLAN.md`. Scripts and older docs may reference the
|
||
> historical P0–P6 hardware-enablement sequence — those are not the same numbering.
|
||
|
||
| Profile | Intent | Key Fragments | Current support language |
|
||
|---|---|---|---|
|
||
| `redbear-mini` | Console + storage + wired-network baseline | `minimal.toml`, `redbear-legacy-base.toml`, `redbear-device-services.toml`, `redbear-netctl.toml` | builds / primary validation baseline / DHCP boot profile enabled / input-runtime substrate wired / USB: daemons built via base and targeted for bounded mini-profile validation |
|
||
| `redbear-grub` | Text-only with GRUB boot manager | `redbear-mini.toml`, `redbear-grub-policy.toml` | builds / live media variant with GRUB chainload for real bare metal / desktop graphics intentionally absent |
|
||
| `redbear-full` | Desktop/network/session plumbing target | `desktop.toml`, `redbear-legacy-base.toml`, `redbear-legacy-desktop.toml`, `redbear-device-services.toml`, `redbear-netctl.toml`, `redbear-greeter-services.toml` | builds / boots in QEMU / active desktop-capable compile target / support claims remain evidence-qualified |
|
||
|
||
## Build Artifacts (ISO Organization)
|
||
|
||
All profiles produce outputs under `build/x86_64/`. Each profile gets its own directory:
|
||
|
||
| Profile | ISO | harddrive.img | Image size | QEMU RAM | Boots via `make qemu`? |
|
||
|---------|-----|---------------|------------|----------|------------------------|
|
||
| `redbear-mini` | `redbear-mini.iso` | `redbear-mini/harddrive.img` | 1.5 GiB | **2 GiB** | ✅ Text login |
|
||
| `redbear-grub` | `redbear-grub.iso` | `redbear-grub/harddrive.img` | 1.5 GiB | **2 GiB** | ✅ Text login |
|
||
| `redbear-full` | `redbear-full.iso` | `redbear-full/harddrive.img` | 4.0 GiB | **2 GiB** | ⚠️ Text login only |
|
||
|
||
> **⚠️ CRITICAL**: `redbear-full` requires **exactly 2 GiB** of guest RAM in QEMU. With 4 GiB or more, the kernel hangs silently during early SMP/memory initialization (x86_64 only). This is a confirmed kernel bug — see `BOOT-PROCESS-ASSESSMENT.md` Phase 7. The `make qemu` default of `QEMU_MEM=2048` is correct for all profiles.
|
||
|
||
### Known QEMU Issues
|
||
|
||
| Issue | Profiles affected | Workaround |
|
||
|-------|-------------------|------------|
|
||
| **Kernel hang with ≥4 GiB RAM** (nographic mode) | `redbear-full` | Use `-m 2048` or less. `make qemu` default is 2048, safe. |
|
||
| **Graphical login fallback** — greeter uses text login, not Wayland | `redbear-full` | Set `KWIN_DRM_DEVICES=/dev/dri/card0` in greeter env; verify redox-drm daemon is running |
|
||
| **Live ISO preload** — `unable to allocate 4078 MiB upfront` | `redbear-full` | Disable live mode (press `l` at bootloader); preload needs chunked allocation |
|
||
| **EFI EDID unavailable** — `Failed to get EFI EDID` warning | All | Expected in QEMU; not a project issue |
|
||
| **AHCI DVD I/O error** — empty DVD-ROM port probe | All | Benign; non-blocking |
|
||
|
||
### ISO naming convention
|
||
|
||
- **Profile ISOs**: `redbear-{profile}.iso` (e.g. `redbear-full.iso`, `redbear-mini.iso`)
|
||
- **Legacy names** (`redbear-live-mini.iso`, `redbear-live-full.iso`) are **deprecated** and should not be used in new scripts or documentation.
|
||
- `scripts/build-iso.sh` accepts profile names: `redbear-full`, `redbear-mini`, `redbear-grub`.
|
||
|
||
## Profile Notes
|
||
|
||
### `redbear-mini`
|
||
|
||
- First place to validate repository discipline and profile reproducibility.
|
||
- Should stay smaller and less assumption-heavy than the graphics profiles.
|
||
- Enables the shared `wired-dhcp` netctl profile by default for the VM/wired baseline.
|
||
- Ships the shared firmware/input runtime service prerequisites so the early substrate can be tested on the smallest profile as well.
|
||
|
||
### Historical and experimental overlays
|
||
|
||
- Experimental overlays such as `redbear-bluetooth-experimental` and `redbear-wifi-experimental`
|
||
are bounded validation slices layered on top of the tracked compile targets, not additional
|
||
compile targets.
|
||
|
||
### `redbear-grub`
|
||
|
||
- Text-only console/recovery target with GRUB boot manager for multi-boot bare-metal workflows.
|
||
- Inherits the same non-graphics intent as `redbear-mini`, but with GRUB chainload ESP layout.
|
||
- Should not grow desktop/session assumptions.
|
||
|
||
### `redbear-full`
|
||
|
||
- Desktop-capable tracked target for the current Red Bear session/network/runtime plumbing surface.
|
||
- Carries the broader D-Bus, greeter, seat, and desktop-oriented service surface.
|
||
|
||
### Historical notes
|
||
|
||
- Older names such as `redbear-minimal`, `redbear-desktop`, `redbear-wayland`, `redbear-kde`,
|
||
`redbear-live`, `redbear-live-mini`, and `redbear-live-full` remain in older docs and some
|
||
implementation details, but they are not the current supported compile-target surface.
|
||
|
||
### `redbear-bluetooth-experimental`
|
||
|
||
- Standalone tracked profile for the first in-tree Bluetooth slice instead of a blanket claim about
|
||
all Red Bear images.
|
||
- Extends `redbear-mini` so the baseline runtime tooling is already present, then adds only the
|
||
bounded Bluetooth pieces on top.
|
||
- Current path under active validation: QEMU/UEFI boot to login prompt plus guest-side `redbear-bluetooth-battery-check`, targeting repeated in-boot reruns, daemon-restart coverage, and one experimental battery-sensor Battery Level read-only workload.
|
||
- Current support language is intentionally narrow: explicit-startup only, USB-attached transport,
|
||
BLE-first CLI/scheme surface, one experimental battery-sensor Battery Level read-only workload,
|
||
and no USB-class autospawn claim yet.
|
||
|
||
### `redbear-wifi-experimental`
|
||
|
||
- Standalone tracked profile for the current bounded Intel Wi-Fi slice instead of implying that the
|
||
wider desktop profiles already carry the full driver stack.
|
||
- Extends `redbear-mini` so the baseline firmware/input/reporting/profile-manager surface stays
|
||
inherited while the Intel Wi-Fi driver package and bounded validation role remain isolated here.
|
||
- Includes the Intel driver package (`redbear-iwlwifi`) in addition to the shared firmware,
|
||
control-plane, reporting, and profile-manager pieces.
|
||
- Current support language is intentionally narrow: bounded probe/prepare/init/activate/scan/
|
||
connect/disconnect lifecycle, packaged in-target validation and capture commands, and no claim yet
|
||
of validated real AP association or end-to-end Wi-Fi connectivity.
|
||
|
||
## Bluetooth Note
|
||
|
||
- `redbear-bluetooth-experimental` is now the tracked first Bluetooth-specific profile.
|
||
- Its support language remains experimental and bounded; it should not be used to imply Bluetooth
|
||
support across the wider Red Bear profile set.
|
||
- The current bounded BLE workload is one read-only battery-sensor Battery Level interaction; this
|
||
profile still does not claim generic GATT, write, or notify support.
|
||
- The current validation claim is QEMU-scoped and packaged-checker-scoped, not a blanket claim
|
||
about real hardware Bluetooth maturity.
|
||
|
||
## USB Note
|
||
|
||
- `redbear-mini` is the preferred non-graphics target for bounded USB validation because these
|
||
proofs do not require the full desktop graphics/session surface.
|
||
- USB validation is QEMU-only (`test-usb-qemu.sh --check`). No profile makes a real hardware USB
|
||
support claim.
|
||
- USB error handling and correctness carry significant Red Bear patches over upstream; see
|
||
`local/patches/base/redox.patch` and `local/docs/USB-IMPLEMENTATION-PLAN.md` for details.
|
||
- The in-tree mini image is still assembled through legacy `redbear-minimal*` config files in some
|
||
places, but the supported compile-target names are `redbear-mini` and `redbear-grub`.
|
||
- `redbear-bluetooth-experimental` uses USB only as a transport for BLE dongles; it does not make a
|
||
general USB-class-autospawn claim.
|