diff --git a/config/redbear-legacy-base.toml b/config/redbear-legacy-base.toml index 1d8f24834f..13b7ed72e1 100644 --- a/config/redbear-legacy-base.toml +++ b/config/redbear-legacy-base.toml @@ -1,19 +1,24 @@ # Red Bear OS overrides for base init services. # -# 00_base.service: stripped base setup (tmpdir only, no sudo — sudo runs from -# base.toml's 00_sudo.service). ipcd and ptyd are started by -# 00_ipcd.service and 00_ptyd.service from the base recipe. -# 00_drivers / 10_net: no longer overridden — the legacy scripts were removed -# from base.toml. The retained 00_pcid-spawner.service unit name now -# launches driver-manager so existing init ordering remains stable. -# 00_pcid-spawner.service: compatibility wrapper for driver-manager. The base -# recipe uses type="oneshot" which blocks init until pcid-spawner exits. -# Running driver-manager here with oneshot_async keeps the historic unit -# name for downstream `requires_weak` consumers while moving PCI driver -# spawning to the manager that performs bind/channel handoff. +# 00_base.service: stripped base setup (tmpdir only). The base recipe provides +# no 00_base.service, so this override is the sole source. It MUST NOT use zsh: +# a full interactive shell startup hangs an init oneshot here (before the login +# stack even starts), whereas a simple dynamically-linked /usr binary like +# mkdir/echo completes cleanly after switchroot. See the +# usr-dynamic-service-spawn-hang investigation — the hang was zsh-specific, +# not a general /usr spawn failure. +# +# Removed 2026-07-19 (consolidation): +# - 20_audiod.service: redundant — base recipe's own 20_audiod.service is +# already identical (oneshot_async). +# - zsh = {}: redundant — already provided by minimal.toml. +# - 00_pcid-spawner.service (type = "oneshot"): HARMFUL — this blocking +# oneshot overrode the base recipe's fixed oneshot_async pcid-spawner, +# re-introducing the boot-wedge the base recipe's comment explicitly warns +# against ("a single slow/hanging driver wedges the whole boot right here"). +# The base recipe's oneshot_async version is the correct one and now wins. [packages] -zsh = {} [[files]] path = "/etc/init.d/00_base.service" @@ -22,36 +27,7 @@ data = """ description = "Base environment setup (tmpdir)" [service] -# Create the world-writable, sticky /tmp with mkdir (uutils, Rust). This must -# NOT use zsh: a full interactive shell startup hangs the init oneshot here -# (before the login stack even starts), whereas a simple dynamically-linked -# /usr binary like mkdir/echo completes cleanly after switchroot. See the -# usr-dynamic-service-spawn-hang investigation — the hang was zsh-specific, -# not a general /usr spawn failure. cmd = "mkdir" args = ["-p", "-m", "a=rwxt", "/tmp"] type = "oneshot" """ - -[[files]] -path = "/etc/init.d/20_audiod.service" -data = """ -[unit] -description = "Audio multiplexer" -default_dependencies = false - -[service] -cmd = "audiod" -type = "oneshot_async" -""" - -[[files]] -path = "/etc/init.d/00_pcid-spawner.service" -data = """ -[unit] -description = "PCI driver spawner" - -[service] -cmd = "pcid-spawner" -type = "oneshot" -"""