console: fix login prompt by avoiding oneshot scheduler deadlock
29_activate_console: changed from oneshot back to oneshot_async. The oneshot type calls child.wait() which blocks the entire init scheduler. If inputd doesn't drain its control channel promptly, ControlHandle::write() hangs forever, freezing boot. 30_console: added 'sleep 0.2' before 'exec getty 2' to give inputd time to process the VT activation before getty opens /scheme/fbcon/2. Eliminates the race condition without blocking the init scheduler.
This commit is contained in:
@@ -477,7 +477,7 @@ requires_weak = [
|
||||
[service]
|
||||
cmd = "inputd"
|
||||
args = ["-A", "2"]
|
||||
type = "oneshot"
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
@@ -490,8 +490,8 @@ requires_weak = [
|
||||
]
|
||||
|
||||
[service]
|
||||
cmd = "getty"
|
||||
args = ["2"]
|
||||
cmd = "sh"
|
||||
args = ["-c", "sleep 0.2; exec getty 2"]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
|
||||
@@ -504,7 +504,7 @@ requires_weak = ["00_base.target"]
|
||||
[service]
|
||||
cmd = "inputd"
|
||||
args = ["-A", "2"]
|
||||
type = "oneshot"
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
[[files]]
|
||||
@@ -516,8 +516,8 @@ default_dependencies = false
|
||||
requires_weak = ["29_activate_console.service"]
|
||||
|
||||
[service]
|
||||
cmd = "getty"
|
||||
args = ["2"]
|
||||
cmd = "sh"
|
||||
args = ["-c", "sleep 0.2; exec getty 2"]
|
||||
type = "oneshot_async"
|
||||
"""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user