disk format
All checks were successful
ci/woodpecker/push/build/1 Pipeline was successful
ci/woodpecker/push/build/2 Pipeline was successful

This commit is contained in:
JMARyA 2025-04-27 23:22:55 +02:00
parent 047f8eccce
commit 31110447da
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263
3 changed files with 21 additions and 10 deletions

View file

@ -33,6 +33,7 @@ pub fn get_args() -> clap::ArgMatches {
command!()
.name("create-img")
.about("Create an install on a disk image for VMs or embedded devices")
.arg(arg!(--gpt "Use modern disk format"))
.arg(arg!([config] "Config file").required(true))
.arg(arg!([image] "Image file").required(true))
)

View file

@ -151,19 +151,28 @@ pub fn setup_fstrim() {
systemd_service_enable("fstrim.service");
}
pub fn setup_disk_image(img_file: &str) {
pub fn setup_disk_image(img_file: &str, modern: bool) {
print_status(&format!("Allocating disk image"));
run_command(&["fallocate", "-l", "8G", img_file], None, false);
print_status(&format!("Partitioning disk image"));
run_command(
&[
"parted", img_file, "--script", "--", "mklabel", "gpt", "mkpart", "ESP", "fat32",
"1MiB", "1GiB", "set", "1", "esp", "on", "mkpart", "primary", "ext4", "1GiB", "100%",
],
None,
true,
);
if modern {
run_command(
&[
"parted", img_file, "--script", "--", "mklabel", "gpt", "mkpart", "ESP", "fat32",
"1MiB", "1GiB", "set", "1", "esp", "on", "mkpart", "primary", "ext4", "1GiB",
"100%",
],
None,
true,
);
} else {
run_command(
&["fdisk", img_file],
Some("o\nn\np\n1\n\n+1G\nt\nc\nn\np\n2\n\n\nw\n"),
false,
);
}
print_status(&format!("Setting up disk image"));
let (stdout, _) = run_command(

View file

@ -74,8 +74,9 @@ fn main() {
let config_file: &String = install_args.get_one("config").unwrap();
let conf = read_conf(config_file);
let img_file: &String = install_args.get_one("image").unwrap();
let gpt = install_args.get_flag("gpt");
setup_disk_image(img_file.as_str());
setup_disk_image(img_file.as_str(), gpt);
install_mnt(conf, false);
}
Some(("install", install_args)) => {