From 6afa2efa8b734658ec350b8e3ce7c03c179efdc2 Mon Sep 17 00:00:00 2001 From: vasilito Date: Sun, 19 Jul 2026 23:42:42 +0900 Subject: [PATCH] config: strip redbear-legacy-base.toml to the one needed override MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Per-entry assessment (file was never deleted — no D commits in history; continuously present, last touched Jul 16 by d5561184f0 which fixed 00_base.service zsh->mkdir and unblocked boot): - KEEP 00_base.service (mkdir /tmp): base provides no 00_base.service; the Jul-16 fix is the sole source and is required. - REMOVE 20_audiod.service: redundant with base's identical oneshot_async. - REMOVE zsh = {}: redundant with minimal.toml. - REMOVE 00_pcid-spawner.service (type=oneshot): HARMFUL — the blocking oneshot overrode the base recipe's fixed oneshot_async pcid-spawner, re-introducing the boot-wedge the base recipe explicitly fixed. Base's oneshot_async now wins (config /etc/init.d no longer shadows it). Resolves the pcid-spawner service conflict (task T-7fdcd5e5). --- config/redbear-legacy-base.toml | 58 ++++++++++----------------------- 1 file changed, 17 insertions(+), 41 deletions(-) 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" -"""