2024-01-10 10:08:39 -08:00
|
|
|
use std::{env, process};
|
2024-01-30 17:42:55 -08:00
|
|
|
use xenclient::error::Result;
|
|
|
|
use xenclient::{DomainConfig, XenClient};
|
2024-01-09 22:39:32 -08:00
|
|
|
|
2024-02-23 04:37:53 +00:00
|
|
|
#[tokio::main]
|
|
|
|
async fn main() -> Result<()> {
|
2024-01-11 12:21:33 -08:00
|
|
|
env_logger::init();
|
|
|
|
|
2024-01-10 10:08:39 -08:00
|
|
|
let args: Vec<String> = env::args().collect();
|
2024-01-16 17:57:19 -08:00
|
|
|
if args.len() != 3 {
|
|
|
|
println!("usage: boot <kernel-image> <initrd>");
|
2024-01-10 10:08:39 -08:00
|
|
|
process::exit(1);
|
|
|
|
}
|
|
|
|
let kernel_image_path = args.get(1).expect("argument not specified");
|
2024-01-16 17:57:19 -08:00
|
|
|
let initrd_path = args.get(2).expect("argument not specified");
|
2024-03-10 00:22:24 +00:00
|
|
|
let mut client = XenClient::open(0).await?;
|
2024-01-17 05:22:47 -08:00
|
|
|
let config = DomainConfig {
|
2024-01-18 06:15:42 -08:00
|
|
|
backend_domid: 0,
|
2024-01-18 01:38:56 -08:00
|
|
|
name: "xenclient-test",
|
2024-01-16 17:57:19 -08:00
|
|
|
max_vcpus: 1,
|
2024-01-17 05:22:47 -08:00
|
|
|
mem_mb: 512,
|
2024-01-17 12:36:13 -08:00
|
|
|
kernel_path: kernel_image_path.as_str(),
|
|
|
|
initrd_path: initrd_path.as_str(),
|
|
|
|
cmdline: "debug elevator=noop",
|
2024-01-18 06:15:42 -08:00
|
|
|
disks: vec![],
|
2024-02-06 14:35:55 +00:00
|
|
|
consoles: vec![],
|
2024-02-01 13:56:03 +00:00
|
|
|
vifs: vec![],
|
2024-01-22 02:15:53 -08:00
|
|
|
filesystems: vec![],
|
2024-01-21 01:58:07 -08:00
|
|
|
extra_keys: vec![],
|
2024-02-23 04:48:44 +00:00
|
|
|
extra_rw_paths: vec![],
|
2024-02-23 03:25:06 +00:00
|
|
|
event_channels: vec![],
|
2024-01-16 17:57:19 -08:00
|
|
|
};
|
2024-02-23 04:37:53 +00:00
|
|
|
let domid = client.create(&config).await?;
|
2024-01-17 05:22:47 -08:00
|
|
|
println!("created domain {}", domid);
|
2024-01-09 22:39:32 -08:00
|
|
|
Ok(())
|
|
|
|
}
|