Prepare, configure, and manage Firecracker microVMs in seconds!
virtualization linux microvm firecracker
8
fork

Configure Feed

Select the types of activity you want to include in your feed.

check for KVM support

+55
+1
Cargo.lock
··· 140 140 "firecracker-prepare", 141 141 "firecracker-process", 142 142 "firecracker-vm", 143 + "owo-colors", 143 144 ] 144 145 145 146 [[package]]
+1
crates/firecracker-up/Cargo.toml
··· 12 12 firecracker-prepare = { path = "../firecracker-prepare" } 13 13 firecracker-process = { path = "../firecracker-process" } 14 14 clap = "4.5.41" 15 + owo-colors = "4.2.2"
+29
crates/firecracker-up/src/command.rs
··· 1 + use anyhow::{anyhow, Context, Result}; 2 + use std::process::{Command, Output, Stdio}; 3 + 4 + pub fn run_command(command: &str, args: &[&str]) -> Result<Output> { 5 + let mut cmd = Command::new(command); 6 + 7 + let output = cmd 8 + .args(args) 9 + .stderr(Stdio::piped()) 10 + .output() 11 + .with_context(|| format!("Failed to execute {}", command))?; 12 + 13 + if !output.status.success() { 14 + let stderr = String::from_utf8_lossy(&output.stderr); 15 + let stdout = String::from_utf8_lossy(&output.stdout); 16 + return Err(anyhow!( 17 + "Command {} failed: {} {} {} {}", 18 + command, 19 + stderr, 20 + stdout, 21 + args.iter() 22 + .map(|s| s.to_string()) 23 + .collect::<Vec<_>>() 24 + .join(" "), 25 + output.status.code().unwrap_or(-1), 26 + )); 27 + } 28 + Ok(output) 29 + }
+24
crates/firecracker-up/src/main.rs
··· 1 1 use std::thread; 2 2 3 3 use anyhow::Result; 4 + use owo_colors::OwoColorize; 5 + 6 + use crate::command::run_command; 7 + 8 + pub mod command; 4 9 5 10 fn main() -> Result<()> { 11 + check_kvm_support()?; 12 + 6 13 firecracker_process::start()?; 7 14 8 15 loop { ··· 17 24 firecracker_vm::setup()?; 18 25 Ok(()) 19 26 } 27 + 28 + pub fn check_kvm_support() -> Result<()> { 29 + print!("[+] Checking for kvm support... "); 30 + 31 + if !run_command("sh", &["-c", "lsmod | grep kvm"]) 32 + .map(|output| output.status.success()) 33 + .unwrap_or(false) 34 + { 35 + return Err(anyhow::anyhow!( 36 + "KVM is not available. Please ensure KVM is enabled in your system." 37 + )); 38 + } 39 + 40 + println!("{}", "[✓] OK".bright_green()); 41 + 42 + Ok(()) 43 + }