diff options
| author | namilsk <namilsk@namilsk.tech> | 2026-01-09 19:13:16 +0300 |
|---|---|---|
| committer | namilsk <namilsk@namilsk.tech> | 2026-01-09 19:13:16 +0300 |
| commit | bca3ae435452b22a08eb66b7d3ab98d840a87b94 (patch) | |
| tree | 5048a0afa1806bc8213f0b4100a91b10f949cdf2 /init/src/processes/udev.rs | |
| parent | 3a5c327a546ff1838e4dc32b8b67a056c1b95f3d (diff) | |
Implemetned kernel modules, locales and timezones settings.
Diffstat (limited to 'init/src/processes/udev.rs')
| -rw-r--r-- | init/src/processes/udev.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/init/src/processes/udev.rs b/init/src/processes/udev.rs new file mode 100644 index 0000000..7cb6a5d --- /dev/null +++ b/init/src/processes/udev.rs @@ -0,0 +1,29 @@ +use std::process::Command; + +// TODO: Rewrite this bad fn +pub fn spawn_udev() -> Result<(), Box<dyn std::error::Error>> { + let udevd_paths = [ + "/sbin/udevd", + "/usr/sbin/udevd", + "/bin/udevd", + "/usr/bin/udevd", + ]; + let udevd_path = udevd_paths + .iter() + .find(|path| std::path::Path::new(path).exists()) + .ok_or_else(|| -> Box<dyn std::error::Error> { + "udevd not found in standard locations".into() + })?; + + let mut child = Command::new(udevd_path).arg("--daemon").spawn().map_err( + |e| -> Box<dyn std::error::Error> { format!("Failed to spawn udevd: {}", e).into() }, + )?; + + child.wait()?; + + Command::new(udevd_path).arg("--trigger").output().map_err( + |e| -> Box<dyn std::error::Error> { format!("Failed to trigger udev: {}", e).into() }, + )?; + + Ok(()) +} |
