On 2024-04-30 11:41, Stefan Sterz wrote:
On Tue Apr 30, 2024 at 10:54 AM CEST, Aaron Lauterer wrote:
By mapping files into the ISO, the UUID for the partitions change as
they depend on the timestamp. The result is, that grub cannot find its
partition anymore and the user ends up on the grub shell.
This only happens when booting from a blockdev in UEFI mode. E.g. a USB
flash drive. Alternatively one can `dd` the ISO to a small (2GiB) VM
disk and mark it as the first boot device.
Booting in legacy mode or via CDROM (e.g. pass through via IPMI), it
worked.
Xorriso can report the commands needed to recreate the source ISO. The
'-volume_date uuid' is the one needed to override the same UUIDs. We
therefore read it first from the source iso and pass it as parameter
whenever we inject a file into the iso.
Signed-off-by: Aaron Lauterer <a.laute...@proxmox.com>
---
proxmox-auto-install-assistant/src/main.rs | 44 ++++++++++++++++++++--
1 file changed, 41 insertions(+), 3 deletions(-)
+fn get_iso_uuid(iso: &PathBuf) -> Result<String> {
+ let result = Command::new("xorriso")
+ .arg("-dev")
+ .arg(iso)
+ .arg("-report_system_area")
+ .arg("cmd")
+ .output()?;
+ if !result.status.success() {
+ bail!(
+ "Error determining the UUID of the source ISO: {}",
+ String::from_utf8_lossy(&result.stderr)
+ );
+ }
+ let mut uuid = String::new();
+ for line in String::from_utf8(result.stdout)?.lines() {
+ if line.starts_with("-volume_date uuid") {
+ uuid = line
+ .split(' ')
+ .last()
+ .unwrap()
nit: while this probably won't happen, if xorriso ever starts returning
nothing to the above command, this unwrap may panic. it might be nice to
do a `ok_or_else(|| bail!("xorisso command behaved unexpectedly"))?` or
similar here.
thanks. will send a v2
+ .replace('\'', "")
+ .trim()
+ .into();
+ break;
+ }
+ }
+ Ok(uuid)
+}
+
fn get_disks() -> Result<BTreeMap<String, BTreeMap<String, String>>> {
let unwantend_block_devs = vec![
"ram[0-9]*",
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel