Issue


A CentOS 8 virtual server does not boot after an operating system upgrade (with yum update).

Refer to the CentOS Linux Templates page to find more details about the CentOS 8 specific issues/limits.

Environment


OnApp < 6.3

CentOS Linux 8.* x64 templates

KVM compute resources

The issue has been fixed for version 6.3 and up and the fix is backported to version 6.0 patch 11.


Resolution


  1. Reboot the virtual server in recovery mode.
  2. Locate the primary VS's vDisk. Normally, it is /dev/vda in recovery on KVM compute resources. Refer to the Recovery Console page.
  3. If the primary VS disk is recognized as a /dev/vda, prepare the chroot environment:

    #mount /dev/vda1 /mnt && mount --bind /proc /mnt/proc/ && mount --bind /dev /mnt/dev&& mount --bind /sys /mnt/sys && chroot /mnt /bin/bash -l
    CODE
  4. Change the bootloader option and regenerate the config file:

    #sed -i 's/GRUB_ENABLE_BLSCFG.*/GRUB_ENABLE_BLSCFG=false/' /etc/default/grub
    #grub2-mkconfig -o /boot/grub2/grub.cfg
    CODE
  5. Exit the chroot environment and reboot the virtual server in normal mode.

    #exit
    #cd / && umount /mnt/proc && umount /mnt/dev && umount /mnt/sys && umount /mnt
    CODE

Cause


By default, CentOS 8 comes with a new boot scheme (Boot Loader Specification) that is not supported by the OnApp GRUB boot image:

https://systemd.io/BOOT_LOADER_SPECIFICATION/
https://access.redhat.com/solutions/3799961

The upgrade overwrites the bootloader option and config files to support the BLS and it requires disabling it and regenerate the bootloader's main config file.