#![cfg_attr(target_os = "none", no_std)]
#![cfg_attr(target_os = "none", no_main)]
#[macro_use]
extern crate log;
#[macro_use]
extern crate alloc;
use ax_std as _;
#[cfg(target_os = "none")]
extern crate ax_std as std;
mod config;
#[cfg(any(
target_arch = "aarch64",
target_arch = "loongarch64",
target_arch = "riscv64"
))]
mod fdt;
mod images;
mod manager;
mod shell;
use std::println;
const LOGO: [&str; 2] = [
r#"
d8888 888 888 d8b
d88888 888 888 Y8P
d88P888 888 888
d88P 888 888 888 Y88b d88P 888 .d8888b .d88b. 888d888
d88P 888 `Y8bd8P' Y88b d88P 888 88K d88""88b 888P"
d88P 888 X88K Y88o88P 888 "Y8888b. 888 888 888
d8888888888 .d8""8b. Y888P 888 X88 Y88..88P 888
d88P 888 888 888 Y8P 888 88888P' "Y88P" 888
"#,
r#"
_ __ ___
/ \ __ _\ \ / (_)___ ___ _ __
/ _ \ \ \/ /\ \ / /| / __|/ _ \| '__|
/ ___ \ > < \ V / | \__ \ (_) | |
/_/ \_\/_/\_\ \_/ |_|___/\___/|_|
"#,
];
fn print_logo() {
println!();
println!("{}", LOGO[0]);
println!();
println!("by AxVisor Team");
println!();
}
#[cfg_attr(target_os = "none", unsafe(no_mangle))]
fn main() {
print_logo();
info!("Starting virtualization...");
let manager = manager::AxvmManager::new().expect("failed to initialize AxVM manager");
manager.init_default_vms();
manager.start_default_vms();
info!("[OK] Default guest initialized");
shell::console_init();
}