xcat2 / xcat-core

Code repo for xCAT core packages
Eclipse Public License 1.0
359 stars 171 forks source link

Ubuntu 2X.XX installs fail to find EFI based bootloader partition. #7224

Open karcaw opened 2 years ago

karcaw commented 2 years ago

When installing on the new ubuntu 20.X and 22.X on UEFI based systems, the code for creating a default partition sets the grub_device: tag on the device, and not a partition:

https://github.com/xcat2/xcat-core/blob/master/xCAT-server/share/xcat/install/scripts/pre.ubuntu.subiquity#L224

    - {id: disk-detected, ptable: msdos, path: $INSTALL_DISK, wipe: superblock,
      preserve: false, name: '', grub_device: true, type: disk}
    - {id: boot-part, device: disk-detected, size: 512MB, flag: boot,
      type: partition, preserve: false}

Which makes this code fail: https://github.com/canonical/subiquity/blob/main/subiquity/models/filesystem.py#L1565

       elif self.bootloader == Bootloader.UEFI:
            for esp in self._all(type='partition', grub_device=True):
                if esp.fs() and esp.fs().mount():
                    if esp.fs().mount().path == '/boot/efi':
                        return False
            return True

changing the code in pre.ubuntu.subiquity to this:

    - {id: disk-detected, ptable: msdos, path: $INSTALL_DISK, wipe: superblock,
      preserve: false, name: '', type: disk}
    - {id: boot-part, device: disk-detected, size: 512MB, flag: boot,
      type: partition, preserve: false, grub_device: true}

Seems to solve the problem.

References: https://github.com/xcat2/xcat-core/issues/6681

khm commented 1 year ago

@karcaw does that change still work under Ubuntu 16 and 18?

karcaw commented 1 year ago

subiquity is a new installer method, so it will not apply to the older 16 and 18 versions.