bug-xorriso
[Top][All Lists]
Advanced

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

Re: [Bug-xorriso] xorriso and Fedora livecd-tools


From: Thomas Schmitt
Subject: Re: [Bug-xorriso] xorriso and Fedora livecd-tools
Date: Mon, 19 Mar 2018 11:54:06 +0100

Hi,

i have a comment about the commit to github.com/livecd-tools :

  
https://github.com/livecd-tools/livecd-tools/commit/036db423ed89506f65ee0926094f41a826f246b6

In imgcreate/live.py :

The switch from option -e to -efi-boot would make the options -no-emul-boot
and -eltorito-alt-boot obsolete in options.extend. This is because

  -efi-boot $IMAGE_PATH

is equivalent to:

  -eltorito-alt-boot -e $IMAGE_PATH -no-emul-boot -eltorito-alt-boot

Although the surplus options do not harm, the use of -efi-boot takes away
the opportunity to add modifier options for the EFI boot images, which would
make the resulting ISO capable of isohybrid without the need for running
program "isohybrid" of SYSLINUX. That program would need to be fixed so it
understands the specs compliant El Torito Boot catalog with two EFI images
in the same catalog section. (I could help with the fix, but SYSLINUX is
fewly active and i already have a patch being ignored there.)


So i rather advise to use options -isohybrid-mbr, -isohybrid-gpt-basdat,
-isohybrid-apm-hfsplus :

options = [ "-isohybrid-mbr", "/usr/share/syslinux/isohdpfx.bin",
            "-eltorito-boot", "isolinux/isolinux.bin",
            "-eltorito-catalog", "isolinux/boot.cat",
            "-no-emul-boot", "-boot-info-table",
            "-boot-load-size", "4" ]

options.extend([ "-eltorito-alt-boot",
                 "-e", "isolinux/efiboot.img",
                 "-no-emul-boot",
                 "-isohybrid-gpt-basdat", "-isohybrid-apm-hfsplus",
                 "-eltorito-alt-boot",
                 "-e", "isolinux/macboot.img",
                 "-no-emul-boot",
                 "-isohybrid-gpt-basdat", "-isohybrid-apm-hfsplus" ])

and to then omit the postprocessing run of "isohybrid".

       if os.path.exists(isodir + '/isolinux/efiboot.img'):
           c = ['isohybrid', '-u', '-m', iso]
       else:
           c = ['isohybrid', iso]

       try:
           subprocess.call(c)
       except OSError as e:
           if e.errno == errno.ENOENT:
           logging.info('The isohybrid command is not available.')

You may check that MBR code and partition tables were installed by help
of xorriso -report_el_torito "plain" -report_system_area "plain"
or by help of /usr/bin/file :

  CentOS-7-x86_64-Everything-1708.iso: DOS/MBR boot sector ISO 9660 CD-ROM
  filesystem data 'CentOS 7 x86_64' (bootable); partition 2 : ID=0xef, ...

and by /sbin/fdisk -l :

  Device                               Boot Start      End  Sectors  Size Id 
Type
  CentOS-7-x86_64-Everything-1708.iso1 *        0 16982015 16982016  8.1G  0 
Empty
  CentOS-7-x86_64-Everything-1708.iso2       5452    23427    17976  8.8M ef 
EFI (FAT

(The fact that "file" does not report partition 1 is due to the intentional
 camouflage by its partition type 0x00. If it had a non-zero type, then EFI
 would be entitled to consider the partition table broken because of nested
 partitions.)

A boot test with qemu+OVMF is not sufficient, because OVMF/EDK-II/Tianocore
is too tolerant. E.g. it accepts El Torito EFI boot images on USB stick and
tries to follow partition table entries on CD. But UEFI demands that each
medium class gets its own marking of the EFI partition.

qemu+SeaBIOS on the other hand seems to be a good test for BIOS bootability
on the two media classes. Only the test with CHS-addicted BIOS implementations
would need real old hardware (and the fix of isohdpfx.bin from march 2017).



Have a nice day :)

Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]