Add legacy boot mode
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-05-31 10:05:13 +02:00
parent 5518b45219
commit 4ee01cad4b
4 changed files with 45 additions and 14 deletions

View File

@ -17,6 +17,7 @@ pub struct VMGroupId(pub String);
#[derive(serde::Serialize, serde::Deserialize)]
pub enum BootType {
Legacy,
UEFI,
UEFISecureBoot,
}
@ -351,13 +352,26 @@ impl VMInfo {
machine: "q35".to_string(),
body: "hvm".to_string(),
},
firmware: "efi".to_string(),
loader: Some(OSLoaderXML {
secure: match self.boot_type {
BootType::UEFI => "no".to_string(),
BootType::UEFISecureBoot => "yes".to_string(),
},
}),
firmware: match self.boot_type {
BootType::Legacy => None,
_ => Some("efi".to_string()),
},
loader: match self.boot_type {
BootType::Legacy => None,
_ => Some(OSLoaderXML {
secure: match self.boot_type {
BootType::UEFISecureBoot => "yes".to_string(),
_ => "no".to_string(),
},
}),
},
bootmenu: match self.boot_type {
BootType::Legacy => Some(OSBootMenuXML {
enable: "yes".to_string(),
timeout: 3000,
}),
_ => None,
},
smbios: Some(OSSMBiosXML {
mode: "sysinfo".to_string(),
}),
@ -449,9 +463,10 @@ impl VMInfo {
.virtweb
.group
.map(VMGroupId),
boot_type: match domain.os.loader {
None => BootType::UEFI,
Some(l) => match l.secure.as_str() {
boot_type: match (domain.os.loader, domain.os.bootmenu) {
(_, Some(_)) => BootType::Legacy,
(None, _) => BootType::UEFI,
(Some(l), _) => match l.secure.as_str() {
"yes" => BootType::UEFISecureBoot,
_ => BootType::UEFI,
},