Fix boot-to-login: override pcid-spawner to oneshot_async, add U3 input producers, Intel HDA phases A-D

- Override 00_pcid-spawner.service to oneshot_async in redbear-legacy-base.toml:
  rootfs phase no longer blocks on PCI driver init; getty/login starts immediately.
  Confirmed working on both QEMU and bare metal (redbear-live-mini).
- Clean up 00_base legacy script: remove dead notify ipcd/ptyd calls, keep sudo --daemon.
- Add U3 named input producers: inputd supports per-device named producers with
  fan-out to both device-specific consumers and legacy VT consumers. Migrate ps2d
  and usbhidd to InputProducer trait. RESERVED_DEVICE_NAMES deduplicated.
- Add Intel HDA audio driver phases A-D: ihdad error handling (37 fixes), audio
  quirks, codec path enumeration, mixer/volume control.
- Add init service start/readiness logging (always visible, not debug-gated).
- Update BOOT-PROCESS-ASSESSMENT.md: Phase 6 complete, boot procedure documented,
  validation matrix updated with confirmed boot status.
- Update USB-IMPLEMENTATION-PLAN.md and INPUT-SCHEME-ENHANCEMENT.md for U2/U3 status.
This commit is contained in:
2026-04-24 20:25:00 +01:00
parent 55af4d097b
commit 08bea46575
7 changed files with 1803 additions and 138 deletions
+36 -2
View File
@@ -1,8 +1,31 @@
# Red Bear OS overrides for broken legacy base init scripts.
# Red Bear OS overrides for legacy base init scripts.
#
# 00_base: tmpdir setup + sudo --daemon. ipcd and ptyd are started by the
# systemd-style services in base recipe's init.d/ (00_ipcd.service,
# 00_ptyd.service). The old "notify" calls have been removed because
# the "notify" binary does not exist — they always failed silently.
# sudo --daemon is kept here because 00_sudo.service exists in the base
# recipe but is not wired into any target that gets scheduled.
# 00_drivers: removed — pcid-spawner is started by 00_pcid-spawner.service from
# the base recipe. The legacy script was redundant.
# 10_net: blanked — replaced by per-config network services (e.g. redbear-live-mini's
# 10_smolnetd.service + 10_dhcpd.service).
# 00_pcid-spawner.service: overridden to oneshot_async. The base recipe uses
# type="oneshot" which blocks init until pcid-spawner exits. On real
# hardware (and QEMU), pcid-spawner can hang waiting for a PCI device
# driver that never responds, blocking the entire rootfs phase including
# getty/login. Using oneshot_async lets init proceed to start console
# services while drivers spawn in the background.
[[files]]
path = "/usr/lib/init.d/00_base"
data = ""
data = """
# clear and recreate tmpdir with 0o1777 permission
rm -rf /tmp
mkdir -m a=rwxt /tmp
nowait sudo --daemon
"""
[[files]]
path = "/usr/lib/init.d/00_drivers"
@@ -23,3 +46,14 @@ default_dependencies = false
cmd = "audiod"
type = "oneshot_async"
"""
[[files]]
path = "/etc/init.d/00_pcid-spawner.service"
data = """
[unit]
description = "PCI driver spawner (non-blocking)"
[service]
cmd = "pcid-spawner"
type = "oneshot_async"
"""