Я пытаюсь разбить диск на моей машине с Linux с помощью Rust.
Для форматирования и создания нового раздела я использую утилиту 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. Если я вызываю ту же команду в сценарии оболочки, она работает.