init: Start logd as a regular service

This commit is contained in:
bjorn3
2026-04-10 21:19:28 +02:00
parent 6b41e68be4
commit 24ff4f294e
3 changed files with 16 additions and 8 deletions
+7
View File
@@ -0,0 +1,7 @@
[unit]
description = "Logger"
default_dependencies = false
[service]
cmd = "logd"
type = { scheme = "log" }
+1
View File
@@ -2,6 +2,7 @@
description = "Services that relibc needs to function"
default_dependencies = false
requires_weak = [
"00_logd.service",
"00_nulld.service",
"00_randd.service",
"00_rtcd.service",
+8 -8
View File
@@ -137,20 +137,20 @@ fn main() {
Path::new("/scheme/initfs/etc"),
);
// Start logd first such that we can pass /scheme/log as stdio to all other services
scheduler
.schedule_start_and_report_errors(&mut unit_store, UnitId("00_logd.service".to_owned()));
scheduler.step(&mut unit_store, &mut init_config);
if let Err(err) = switch_stdio("/scheme/log") {
eprintln!("init: failed to switch stdio to '/scheme/log': {err}");
}
let runtime_target = UnitId("00_runtime.target".to_owned());
scheduler.schedule_start_and_report_errors(&mut unit_store, runtime_target.clone());
unit_store.set_runtime_target(runtime_target);
scheduler
.schedule_start_and_report_errors(&mut unit_store, UnitId("90_initfs.target".to_owned()));
let mut command = std::process::Command::new("logd");
command.env_clear().envs(&init_config.envs);
daemon::SchemeDaemon::spawn(command, "log");
if let Err(err) = switch_stdio("/scheme/log") {
eprintln!("init: failed to switch stdio to '/scheme/log': {err}");
}
scheduler.step(&mut unit_store, &mut init_config);
switch_root(