init: /usr driver-manager + netstack must not block boot-to-login
This commit is contained in:
@@ -3,4 +3,14 @@ description = "PCI driver spawner"
|
||||
|
||||
[service]
|
||||
cmd = "pcid-spawner"
|
||||
type = "oneshot"
|
||||
# oneshot_async, NOT oneshot: this is the post-switchroot /usr driver-manager.
|
||||
# As a blocking oneshot, init waits for pcid-spawner to enumerate PCI and bring
|
||||
# every matched driver to readiness (daemon::Daemon::spawn blocks on each
|
||||
# driver's ready signal) before continuing — so a single slow/hanging driver,
|
||||
# or an unavailable /scheme/pci after switchroot, wedges the whole boot right
|
||||
# here, before the console/login stack. The login path renders on the initfs
|
||||
# framebuffer (vesad+fbcond) and does not need the /usr PCI drivers to be ready
|
||||
# first, so bring them up asynchronously. NOTE: the initfs driver spawner
|
||||
# (40_pcid-spawner-initfs) stays a blocking oneshot — disk (ahcid) must be
|
||||
# ready before redoxfs mounts.
|
||||
type = "oneshot_async"
|
||||
|
||||
@@ -8,4 +8,10 @@ requires_weak = [
|
||||
|
||||
[service]
|
||||
cmd = "smolnetd"
|
||||
type = "notify"
|
||||
# oneshot_async, NOT notify: smolnetd only signals readiness once it binds a
|
||||
# network adapter, so on a machine with no NIC (or before the NIC driver
|
||||
# attaches) a notify unit blocks init forever right here — before the console
|
||||
# stack — and there is no login. The network scheme is not on the critical
|
||||
# path to login, so start it non-blocking (this matches the redbear-mini
|
||||
# netstack unit). Boot must never hang on absent/late network hardware.
|
||||
type = "oneshot_async"
|
||||
|
||||
Reference in New Issue
Block a user