diff options
Diffstat (limited to 'init/src/kmods')
| -rw-r--r-- | init/src/kmods/load.rs | 24 | ||||
| -rw-r--r-- | init/src/kmods/mod.rs | 1 |
2 files changed, 25 insertions, 0 deletions
diff --git a/init/src/kmods/load.rs b/init/src/kmods/load.rs new file mode 100644 index 0000000..374ce36 --- /dev/null +++ b/init/src/kmods/load.rs @@ -0,0 +1,24 @@ +use liblmod::Selection; +use liblmod::modprobe; +use std::fs; + +fn parse_modules() -> Result<Vec<String>, Box<dyn std::error::Error>> { + let raw_mods = fs::read_to_string("/etc/modules")? + .split(',') + .map(|s| s.trim().to_string()) + .collect(); + + Ok(raw_mods) +} + +pub fn load_modules() -> Result<(), Box<dyn std::error::Error>> { + let modules = parse_modules()?; + + for i in 0..modules.len() { + modprobe(modules[i].to_string(), "".to_string(), Selection::Current)?; + } + + Ok(()) +} + +// TODO: Think, is `rmmod` needed? diff --git a/init/src/kmods/mod.rs b/init/src/kmods/mod.rs new file mode 100644 index 0000000..f5f538c --- /dev/null +++ b/init/src/kmods/mod.rs @@ -0,0 +1 @@ +pub mod load; |
