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/main.rs | |
| parent | 3a5c327a546ff1838e4dc32b8b67a056c1b95f3d (diff) | |
Implemetned kernel modules, locales and timezones settings.
Diffstat (limited to 'init/src/main.rs')
| -rw-r--r-- | init/src/main.rs | 63 |
1 files changed, 27 insertions, 36 deletions
diff --git a/init/src/main.rs b/init/src/main.rs index feea052..7a77e31 100644 --- a/init/src/main.rs +++ b/init/src/main.rs @@ -1,51 +1,29 @@ +mod host; +mod kmods; mod log; mod mounts; mod pid_one; -mod host; +mod processes; -use crate::log::{log_critical_error, log_warning, log_success}; +use crate::host::locale; +use crate::host::set::set_hostname; +use crate::kmods::load::load_modules; +use crate::log::{log_critical_error, log_success, log_warning}; use crate::mounts::fstab::FstabEntry; use crate::mounts::rescue; use crate::pid_one::check_pid; -use crate::host::sethn::try_set_hostname; - -use std::process::Command; +use crate::processes::udev::spawn_udev; // RULE: I will not use .expect() and .unwrap() in this project. This causes panic, // which will affect stability. -fn spawn_udev() -> Result<(), Box<dyn std::error::Error>> { - log_success("Spawning udev daemon."); - - 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("udevd not found in standard locations")?; - - let child = Command::new(udevd_path) - .arg("--daemon") - .spawn() - .map_err(|e| format!("Failed to spawn udevd: {}", e))?; - - log_success(&format!("udevd started with PID: {}", child.id())); - Command::new(udevd_path) - .arg("--trigger") - .output() - .map_err(|e| format!("Failed to trigger udev: {}", e))?; - - Ok(()) -} - fn main() -> Result<(), Box<dyn std::error::Error>> { println!("Initializing your system."); if let Err(e) = check_pid() { - log_critical_error(&format!("Runned not as first process. init/src/pid_one.rs:8:8 - {}", e)); + log_critical_error(&format!( + "Runned not as first process. init/src/pid_one.rs:8:8 - {}", + e + )); return Err(e); } @@ -67,11 +45,24 @@ fn main() -> Result<(), Box<dyn std::error::Error>> { } } - let _ = try_set_hostname(); + match set_hostname() { + Ok(_) => log_success("Hostname setted successfully."), + Err(e) => log_warning(&format!("Failed to set hostname: {}", e)), + } + + match load_modules() { + Ok(_) => log_success("Kernel modules loaded successfully."), + Err(e) => log_warning(&format!("Error while loading kernel modules: {}", e)), + } match spawn_udev() { Ok(_) => log_success("Successfully started udev daemon."), - Err(e) => log_critical_error(&format!("Failed to start udev daemon: {}", e)), + Err(e) => log_critical_error(&format!("Something went wrong while spawning udev: {}", e)), + } + + match locale::set_system_localization(None, None) { + Ok(_) => log_success("Localization (timezone and locale) set successfully."), + Err(e) => log_warning(&format!("Failed to set localization: {}", e)), } Ok(()) |
