Bug#982746: live-build: autopkgtest failure on arm64, armhf and ppc64el: Failed to prepare session write run
Hi,
this could be a bug in live-build.
It seems to use "xorriso -as mkisofs" option -isohybrid-mbr on systems
which have no PC-BIOS firmware and thus get no ISOLINUX BIOS bot equipment
in the ISO.
Line 69 in
https://sources.debian.org/src/live-build/1:20210122/scripts/build/binary_iso/
adds -isohybrid-mbr to the options without checking that LB_BOOTLOADER_BIOS
is set to "syslinux".
But only with this setting, the option
-b isolinux/isolinux.bin
is used, which is a precondition for using -isohybrid-mbr.
(Option -partition_offset 16 would be ok without "syslinux".)
------------------------------------------------------------------------
Long story:
I am the developer of libisofs. The error message is sparse, i have to
confess.
Code study shows three occasions where
libisofs: MISHAP : Cannot patch isolinux boot image
can be emitted without more explanation.
1: The size of the El Torito boot image file isolinux.bin is less than
64 bytes. So it cannot take a Boot Info Table.
2: There was no isolinux.bin submitted at all.
(option -b in mkisofs emulation, or command
-boot_image isolinux dir=/isolinux in native command mode.)
3: is like 2 in a different code path.
I can provoke the sparse message by omitting -b and its subordinates:
xorriso -as mkisofs -o /dev/null -isohybrid-mbr "$HOME"/x "$HOME"/xx
with "$HOME"/x and "$HOME"/xx being some small dummy files:
...
xorriso : NOTE : Copying to System Area: 36 bytes from file '[...]/x'
libisofs: MISHAP : Cannot patch isolinux boot image
xorriso : FAILURE : Failed to prepare session write run
...
That would be occasion 3.
Now why should there be no -b isolinux/isolinux.bin ?
Do i get it right, that the xorriso run is started by
https://sources.debian.org/src/live-build/1:20210122/scripts/build/binary_iso/
?
(Would it be possible to let the script report the actual xorriso
arguments ?)
My best guess is that variable LB_BOOTLOADER_BIOS is not set to "syslinux".
It controls in line 110 ff. which BIOS boot equipment is to be submitted
by option -b.
The option -isohybrid-mbr is used if LB_IMAGE_TYPE is "iso-hybrid"
(line 66 ff.).
This seems wrong, because it is used even if no ISOLINUX is selected
by LB_BOOTLOADER_BIOS.
So if amd64 and i386 succeed, it is most probably the inappropriate
option -isohybrid-mbr which spoils the runs for the others.
Have a nice day :)
Thomas
Reply to: