我正在尝试使用Rust在Linux机器上对磁盘进行分区。
我要使用sgdisk
实用程序来格式化和创建新分区。
#[derive(Deserialize, Debug)]
pub struct Drives {
system: PathBuf,
home: Option<PathBuf>,
}
impl Drives {
fn create_partitions(&self) -> Result<()> {
cmd!("sgdisk", "--new=0:0:+256MiB --typecode=0:ef00 -c 0:\"efi\"", &self.system).run().context("Failed to create EFI partition")?;
Ok(())
}
}
该命令成功创建了一个新分区,但不幸的是标签丢失了。
sgdisk -p /dev/sda
...
Number Start (sector) End (sector) Size Code Name
1 2048 526335 256.0 MiB 8300
cmd!
宏来自duct
板条箱,该板条箱将内容传递到下面的std::process::Command
。即使我直接调用外部进程,也不会给分区加上标签。
我认为问题可能在于将字符串传递给sgdisk
,期望以零结尾的ASCII字符串。如果我在shell脚本中调用相同的命令,它将起作用。