config: strip redbear-legacy-base.toml to the one needed override

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).
This commit is contained in:
2026-07-19 23:42:42 +09:00
parent a6c7d1d9c6
commit 6afa2efa8b
+17 -41
View File
@@ -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"
"""