View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0010561 | Cloud | General | public | 2025-09-03 15:11 | 2025-09-03 18:33 |
Reporter | Chad Dougherty | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | new | Resolution | open | ||
Summary | 0010561: grub config in the Rocky Linux cloud image has a dependency on VGA | ||||
Description | Invoking 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 Reproduce | Download 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 Information | A 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...) | ||||
Tags | cloud, grub, qemu, vga | ||||
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 |