[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: