View Issue Details

IDProjectCategoryView StatusLast Update
0010561CloudGeneralpublic2025-09-03 18:33
ReporterChad Dougherty Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
Summary0010561: grub config in the Rocky Linux cloud image has a dependency on VGA
DescriptionInvoking qemu on the Rocky Linux 9 or 10 GenericCloud image with the option `-vga none` causes an endless boot loop.

The grub configuration appears to have a dependency on VGA. From /etc/grub.d/00_header:
```
    190 if loadfont \$font ; then
    191 EOF
    192 else
    193 cat << EOF
    194 if loadfont unicode ; then
    195 EOF
    196 fi
    197 fi
    198
    199 cat << EOF
    200 set gfxmode=${GRUB_GFXMODE}
    201 load_video
    202 insmod gfxterm
    203 EOF
```

And since `load_video()` contains:
```
    112 function load_video {
    113 EOF
    114 if [ -n "${GRUB_VIDEO_BACKEND}" ]; then
    115 cat <<EOF
    116 insmod ${GRUB_VIDEO_BACKEND}
    117 EOF
    118 else
    119 # If all_video.mod isn't available load all modules available
    120 # with versions prior to introduction of all_video.mod
    121 cat <<EOF
    122 if [ x\$feature_all_video_module = xy ]; then
    123 insmod all_video
    124 else
    125 insmod efi_gop
    126 insmod efi_uga
    127 insmod ieee1275_fb
    128 insmod vbe
    129 insmod vga
    130 insmod video_bochs
    131 insmod video_cirrus
    132 fi
    133 EOF
    134 fi
    135 cat <<EOF
    136 }
```
the boot process fails to load these video modules.

A workaround for this problem is to comment out the call to `load_video` in `/etc/grub.d/00_header`, then rerun grub2-mkconfig and grub2-install. The better longterm solution is probably to define `GRUB_VIDEO_BACKEND` appropriately in the cloud image build process.

I discovered this in the process of testing a bespoke virtual machine monitor program that I'm working on. It constructs a qemu command line including `-vga none`. While it's possible to change the behavior of this program to not invoke qemu with this option, it seems wrong to me for the cloud image to depend on an anachronism like VGA. That is to say, I feel like this should work with `-vga none`. Futhermore, in the process of testing other distribution cloud images (see: https://docs.openstack.org/image-guide/obtain-images.html), Rocky Linux 9 and 10 were the only ones that exhibited this behavior, including Rocky Linux 8. I don't have access to RHEL to compare to.
Steps To ReproduceDownload the Rocky Linux cloud image from:
https://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-GenericCloud-Base.latest.x86_64.qcow2

Start qemu with:
`qemu-system-x86_64 -vga none -serial mon:stdio -nographic -display none -cpu host -enable-kvm -m 4096M -drive file=Rocky-9-GenericCloud-Base.latest.x86_64.qcow2,media=disk,if=virtio`

Observe that grub in the guest goes into an endless boot loop.

Change the qemu invocation to:
`qemu-system-x86_64 -serial mon:stdio -nographic -display none -cpu host -enable-kvm -m 4096M -drive file=Rocky-9-GenericCloud-Base.latest.x86_64.qcow2,media=disk,if=virtio`

Observe that the Rocky Linux guest boots normally.
Additional InformationA short video clip of the boot loop behavior in the nonworking case can be found here:
https://sdf.org/~crd/rockylinux-bootloop.mp4
(although the site appears to be unavailable at the time of this writing...)
Tagscloud, grub, qemu, vga

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2025-09-03 15:11 Chad Dougherty New Issue
2025-09-03 15:11 Chad Dougherty Tag Attached: cloud
2025-09-03 15:11 Chad Dougherty Tag Attached: grub
2025-09-03 15:11 Chad Dougherty Tag Attached: vga
2025-09-03 18:33 Chad Dougherty Tag Attached: qemu