Issue
CentOS 8 virtual server will not boot after the operating system upgrade (with "yum update").
Environment
CentOS Linux 8.* x64 templates
Resolution
Reboot the VS in the Recovery mode (Tools->Startup on Recovery).
Locate primary VS's vdisk. Normally, it's '/dev/vda' in Recovery on KVM hypervisors.
https://help.onapp.com/hc/en-us/articles/222045568-How-to-use-Recovery-Console-
In case the primary VS disk is recognized as '/dev/vda' then run the following command to 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
Then run these commands to 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
If the last command is successful then exit the chroot env and reboot the virtual server in normal mode via UI.
#exit
#cd / && umount /mnt/proc && umount /mnt/dev && umount /mnt/sys && umount /mnt
Cause
By default CentOS 8 comes with a new boot scheme (Boot Loader Specification) that isn't 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 to disable it and regenerate the bootloader's main config file.