Files
RedBear-OS/config/redbear-boot-stages.toml
vasilito 06b316076f restore driver-manager + pcid service + lost configs from 0.2.3→0.2.4 sync
Root cause: the 0.2.4 upstream sync silently removed driver-manager (our
in-house PCI driver orchestrator) and never added a pcid init service,
leaving /scheme/pci uncreated and breaking all PCI device enumeration.

Changes:
- base-initfs/recipe.toml: restore driver-manager dep, binary copy,
  drivers.d/ config dir, set -eo pipefail
- redbear-device-services.toml: add driver-manager = {} to packages
- redbear-boot-stages.toml: restore from 0.2.3 (109 lines)
- protected-recipes.toml: restore from 0.2.3 (99 lines)
- redbear-mini.toml: add boot-stages to include chain
- driver-manager Cargo.toml: fix pcid path from symlink to physical
- base fork pointer: acdcb183 (adds 35_pcid.service to initfs)
- UPSTREAM-SYNC-PROCEDURE.md: document sync flaw, never-delete rule,
  driver-manager rationale
- PACKAGE-BUILD-QUIRKS.md: document pcid/pcid-spawner architecture,
  Redox flag values, kernel kcall on AcpiScheme

Verified: redbear-mini boots to login prompt in QEMU UEFI with working
PCI enumeration (6 devices), e1000d network driver, DHCP, driver-manager.
2026-06-19 11:39:24 +03:00

110 lines
2.4 KiB
TOML

# Red Bear OS boot stage targets
#
# Semantic boot stages that create ordering through the init system's
# BFS dependency traversal. Each target depends on the previous one.
#
# Stage mapping:
# 00_base.target — kernel schemes ready (defined in base package initfs)
# 02_early_hw.target — ACPI + PCI bus access ready
# 04_drivers.target — driver spawning complete
# 06_services.target — system services (D-Bus, session broker)
# 08_userland.target — user-facing (console, greeter, desktop)
#
# Services use requires_weak against their stage target.
# Targets use requires_weak to chain to the previous stage.
#
# Serial boot markers (02-08_serial_*.service) echo a stage completion
# message to stderr, which appears on the serial console for diagnostics.
[[files]]
path = "/etc/init.d/02_early_hw.target"
data = """
[unit]
description = "Early hardware: ACPI + PCI bus access"
requires_weak = [
"00_base.target",
]
"""
[[files]]
path = "/etc/init.d/02_serial_early_hw.service"
data = """
[unit]
description = "Serial boot marker: early hardware stage"
requires_weak = ["02_early_hw.target"]
[service]
cmd = "echo"
args = ["RB_STAGE_02_EARLY_HW"]
type = "oneshot"
"""
[[files]]
path = "/etc/init.d/04_drivers.target"
data = """
[unit]
description = "Driver spawning stage"
requires_weak = [
"02_early_hw.target",
]
"""
[[files]]
path = "/etc/init.d/04_serial_drivers.service"
data = """
[unit]
description = "Serial boot marker: drivers stage"
requires_weak = ["04_drivers.target"]
[service]
cmd = "echo"
args = ["RB_STAGE_04_DRIVERS"]
type = "oneshot"
"""
[[files]]
path = "/etc/init.d/06_services.target"
data = """
[unit]
description = "System services: D-Bus, session broker, seat management"
requires_weak = [
"04_drivers.target",
]
"""
[[files]]
path = "/etc/init.d/06_serial_services.service"
data = """
[unit]
description = "Serial boot marker: services stage"
requires_weak = ["06_services.target"]
[service]
cmd = "echo"
args = ["RB_STAGE_06_SERVICES"]
type = "oneshot"
"""
[[files]]
path = "/etc/init.d/08_userland.target"
data = """
[unit]
description = "User-facing: console, greeter, desktop"
requires_weak = [
"06_services.target",
]
"""
[[files]]
path = "/etc/init.d/08_serial_userland.service"
data = """
[unit]
description = "Serial boot marker: userland stage"
requires_weak = ["08_userland.target"]
[service]
cmd = "echo"
args = ["RB_STAGE_08_USERLAND"]
type = "oneshot"
"""