system_files.rs
1 use alloc::string::String as AllocString; 2 use core::fmt::Write; 3 4 use crate::{ 5 config::{app, board}, 6 filesystems::sd, 7 services::{identity, system}, 8 }; 9 10 pub fn initialize_layout() { 11 let _ = sd::create_directory("ETC"); 12 let _ = sd::create_directory("BOOT"); 13 let _ = sd::create_directory("TMP"); 14 15 identity::ensure_home_hierarchy(); 16 generate_rc_conf(); 17 generate_loader_conf(); 18 } 19 20 pub fn generate_rc_conf() { 21 let mut rc = AllocString::new(); 22 let _ = write!(rc, "# /etc/rc.conf -- generated by Microvisor\r\n"); 23 let _ = write!( 24 rc, 25 "# Do not edit. Configuration is compiled into firmware.\r\n\r\n" 26 ); 27 let _ = write!(rc, "hostname=\"{}\"\r\n", app::HOSTNAME); 28 let _ = write!(rc, "sshd_enable=\"YES\"\r\n"); 29 let _ = write!(rc, "sshd_port=\"{}\"\r\n", app::ssh::PORT); 30 let _ = write!(rc, "sntpd_enable=\"YES\"\r\n"); 31 let _ = write!(rc, "sntpd_server=\"{}\"\r\n", app::NTP_SERVER); 32 let _ = write!(rc, "httpd_enable=\"YES\"\r\n"); 33 let _ = write!(rc, "httpd_port=\"{}\"\r\n", app::http::PORT); 34 let _ = write!(rc, "otad_enable=\"YES\"\r\n"); 35 let _ = write!(rc, "otad_port=\"{}\"\r\n", app::ota::PORT); 36 let _ = write!(rc, "wifi_ap_ssid=\"{}\"\r\n", app::wifi::ap::SSID); 37 let _ = write!(rc, "wifi_ap_auth=\"{}\"\r\n", app::wifi::ap::AUTH_MODE); 38 let _ = write!(rc, "timezone=\"{}\"\r\n", app::time::ZONE); 39 let _ = sd::write_file_at("/etc", "RC.CONF", rc.as_bytes()); 40 } 41 42 pub fn generate_loader_conf() { 43 let mut loader = AllocString::new(); 44 let _ = write!(loader, "# /boot/loader.conf -- generated by Microvisor\r\n"); 45 let _ = write!( 46 loader, 47 "# Do not edit. Hardware config is compiled into firmware.\r\n\r\n" 48 ); 49 let _ = write!(loader, "fatfs_load=\"YES\"\r\n"); 50 let _ = write!(loader, "sd_spi_bus=\"{}\"\r\n", app::sd_card::DEVICE); 51 let _ = write!( 52 loader, 53 "i2c_frequency=\"{}\"\r\n", 54 board::i2c::FREQUENCY_KHZ 55 ); 56 let _ = write!( 57 loader, 58 "sensor_power_gpio=\"{}\"\r\n", 59 board::i2c::LEGACY_POWER_GPIO 60 ); 61 let snapshot = system::snapshot(); 62 let _ = write!(loader, "heap_size=\"{}\"\r\n", snapshot.heap_total); 63 let _ = sd::write_file_at("/boot", "LOADER.CO", loader.as_bytes()); 64 }