summaryrefslogtreecommitdiff
path: root/init/src/main.rs
diff options
context:
space:
mode:
authornamilsk <namilsk@namilsk.tech>2026-01-09 19:13:16 +0300
committernamilsk <namilsk@namilsk.tech>2026-01-09 19:13:16 +0300
commitbca3ae435452b22a08eb66b7d3ab98d840a87b94 (patch)
tree5048a0afa1806bc8213f0b4100a91b10f949cdf2 /init/src/main.rs
parent3a5c327a546ff1838e4dc32b8b67a056c1b95f3d (diff)
Implemetned kernel modules, locales and timezones settings.
Diffstat (limited to 'init/src/main.rs')
-rw-r--r--init/src/main.rs63
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(())