config: driver-manager cutover — retire pcid-spawner from the boot path
Operator-ratified cutover (the D5/C-phase gate):
- redbear-device-services.toml: driver-manager added to [packages]
(was 'intentionally not included'); /lib/drivers.d/70-wifi.toml
staged (redbear-iwlwifi --daemon); stale pre-cutover comments
replaced with the single-spawner invariant for driver-manager.
- redbear-mini.toml: /etc/init.d override now stages
00_driver-manager.service (--hotplug, gated !disabled) instead of
00_pcid-spawner.service; all requires_weak references switched to
00_driver-manager.service.
- redbear-full.toml, redbear-greeter-services.toml: same requires_weak
switch for iommu, greeter, SDDM.
- base submodule bump (c72d4247): init.d/init.initfs.d service gates —
pcid-spawner services start only when
/etc/driver-manager.d/disabled exists (operator fallback, never
deleted); driver-manager services run by default.
make lint-config: OK — no init service path violations.
This commit is contained in:
@@ -6,11 +6,10 @@
|
||||
redbear-quirks = {}
|
||||
pciids = {}
|
||||
fatd = {}
|
||||
# driver-manager intentionally not included: it is the intended future
|
||||
# replacement for pcid-spawner but is not yet ready (driver config migration
|
||||
# pending) and was previously packaged-but-unused — its service launched
|
||||
# pcid-spawner instead of driver-manager. Consolidated on pcid-spawner for
|
||||
# now; the recipe source is kept for when the migration is completed.
|
||||
driver-manager = {}
|
||||
# driver-manager owns the boot-time PCI match/claim/spawn path since the
|
||||
# cutover. pcid-spawner stays built into base and staged, gated behind
|
||||
# /etc/driver-manager.d/disabled as the operator fallback.
|
||||
|
||||
# Firmware fallback chain configs
|
||||
[[files]]
|
||||
@@ -656,11 +655,24 @@ priority = 70
|
||||
command = ["/usr/bin/redbear-usbaudiod"]
|
||||
"""
|
||||
|
||||
# PCI driver spawning is performed by pcid-spawner (the base recipe's
|
||||
# 00_pcid-spawner.service, oneshot_async). driver-manager is the intended
|
||||
# future replacement but is not yet ready; do NOT create a separate
|
||||
# 00_driver-manager.service here — it previously duplicated pcid-spawner
|
||||
# (two async instances of the same spawner racing to spawn drivers).
|
||||
[[files]]
|
||||
path = "/lib/drivers.d/70-wifi.toml"
|
||||
data = """
|
||||
[[driver]]
|
||||
name = "redbear-iwlwifi"
|
||||
description = "Intel Wi-Fi driver (iwlwifi port)"
|
||||
priority = 50
|
||||
command = ["/usr/lib/drivers/redbear-iwlwifi", "--daemon"]
|
||||
|
||||
[[driver.match]]
|
||||
vendor = 0x8086
|
||||
class = 0x02
|
||||
subclass = 0x80
|
||||
"""
|
||||
|
||||
# PCI driver spawning is performed by driver-manager since the cutover
|
||||
# (00_driver-manager.service, oneshot_async, --hotplug). pcid-spawner
|
||||
# stays staged as the fallback behind /etc/driver-manager.d/disabled.
|
||||
# Firmware fallback chain configs
|
||||
[[files]]
|
||||
path = "/etc/firmware-fallbacks.d/00-amdgpu.toml"
|
||||
@@ -711,10 +723,12 @@ pattern = "i915/adlp_dmc_ver2_16.bin"
|
||||
chain = ["i915/adlp_dmc_ver2_14.bin", "i915/adlp_dmc_ver2_12.bin"]
|
||||
"""
|
||||
|
||||
# There must be exactly one PCI driver spawner service in the image: the
|
||||
# base recipe's 00_pcid-spawner.service (oneshot_async). Do not add a
|
||||
# second, differently-named service that also launches pcid-spawner — two
|
||||
# async instances race to spawn the same drivers.
|
||||
# There must be exactly one PCI driver spawner service active in the image:
|
||||
# since the cutover that is 00_driver-manager.service (oneshot_async).
|
||||
# pcid-spawner remains staged behind /etc/driver-manager.d/disabled as the
|
||||
# operator fallback. Do not add a second, differently-named service that
|
||||
# also spawns PCI drivers — two async instances race to spawn the same
|
||||
# drivers.
|
||||
|
||||
# Firmware fallback chain configs
|
||||
[[files]]
|
||||
@@ -827,7 +841,7 @@ data = """
|
||||
description = "Evdev input daemon"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
@@ -1127,7 +1141,7 @@ path = "/etc/init.d/13_driver-params.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "Driver parameter scheme"
|
||||
requires_weak = ["00_pcid-spawner.service"]
|
||||
requires_weak = ["00_driver-manager.service"]
|
||||
|
||||
[service]
|
||||
cmd = "/usr/bin/driver-params"
|
||||
|
||||
@@ -262,7 +262,7 @@ data = """
|
||||
description = "IOMMU DMA remapping daemon"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
@@ -444,7 +444,7 @@ data = """
|
||||
[unit]
|
||||
description = "Red Bear greeter service"
|
||||
requires_weak = [
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
"12_dbus.service",
|
||||
"13_redbear-sessiond.service",
|
||||
"13_seatd.service",
|
||||
@@ -495,7 +495,7 @@ data = """
|
||||
[unit]
|
||||
description = "SDDM display manager (Wayland)"
|
||||
requires_weak = [
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
"12_dbus.service",
|
||||
"13_redbear-sessiond.service",
|
||||
"13_seatd.service",
|
||||
|
||||
@@ -66,7 +66,7 @@ data = """
|
||||
[unit]
|
||||
description = "Red Bear greeter service (experimental — Phase 3 user session bring-up)"
|
||||
requires_weak = [
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
"12_dbus.service",
|
||||
"13_redbear-sessiond.service",
|
||||
"13_seatd.service",
|
||||
|
||||
+14
-11
@@ -27,8 +27,9 @@ redbear-release = {}
|
||||
redbear-hwutils = {}
|
||||
redbear-quirks = {}
|
||||
|
||||
# Device driver infrastructure (pcid-spawner is built by the base recipe;
|
||||
# driver-manager requires driver config migration and is not yet ready)
|
||||
# Device driver infrastructure (driver-manager owns the boot-time PCI
|
||||
# match/claim/spawn path since the cutover; pcid-spawner stays staged as
|
||||
# the fallback behind /etc/driver-manager.d/disabled)
|
||||
ehcid = {}
|
||||
ohcid = {}
|
||||
uhcid = {}
|
||||
@@ -125,7 +126,7 @@ data = """
|
||||
[unit]
|
||||
description = "Network stack (non-blocking on live-mini)"
|
||||
requires_weak = [
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
@@ -184,7 +185,7 @@ data = """
|
||||
description = "USB device hotplug daemon (auto-spawns class drivers)"
|
||||
requires_weak = [
|
||||
"00_base.target",
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
@@ -343,7 +344,7 @@ data = """
|
||||
description = "udev compatibility shim"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
@@ -358,7 +359,7 @@ data = """
|
||||
description = "Evdev input daemon"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
@@ -373,7 +374,7 @@ data = """
|
||||
description = "Wi-Fi control daemon"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
@@ -431,7 +432,7 @@ data = """
|
||||
description = "IOMMU DMA remapping daemon"
|
||||
requires_weak = [
|
||||
"12_boot-late.target",
|
||||
"00_pcid-spawner.service",
|
||||
"00_driver-manager.service",
|
||||
]
|
||||
|
||||
[service]
|
||||
@@ -572,14 +573,16 @@ type = "oneshot"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
path = "/etc/init.d/00_pcid-spawner.service"
|
||||
path = "/etc/init.d/00_driver-manager.service"
|
||||
data = """
|
||||
[unit]
|
||||
description = "PCI driver spawner (non-blocking on live-mini)"
|
||||
description = "Driver manager (non-blocking on live-mini)"
|
||||
|
||||
[service]
|
||||
cmd = "pcid-spawner"
|
||||
cmd = "driver-manager"
|
||||
args = ["--hotplug"]
|
||||
type = "oneshot_async"
|
||||
ConditionPathExists = "!/etc/driver-manager.d/disabled"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
|
||||
+1
-1
Submodule local/sources/base updated: e30f24997c...c72d4247a6
Reference in New Issue
Block a user