Whereas I did get my earlier problem with building proper boot images fixed, I've been struggling with another GRUB2-related problem for most of the day.
The problem is that even though I do set the video info request bit in my multiboot header, GRUB2 does not return proper VESA BIOS Extensions (VBE) info.
The kernel is my own work, and it's noteworthy that it Used to Work (TM) with some earlier version of GRUB2 (I could fill the screen with white pixels, no problem).
Here's my current grub.cfg:
set timeout=10
set default=0
menuentry "zero" {
set gfxmode=1024x768x24
set gfxpayload=keep
insmod vbe
insmod gfxterm
multiboot /kern
}
And here's the script I use to build my boot images:
echo Building kernel
./build.sh
echo Creating bootable CD image...
cp zero cdimg2/kern
grub-mkimage --format=i386-pc --output=core.img \
--config="cdimg2/boot/grub/grub.cfg" loadenv biosdisk \
part_msdos part_gpt fat ntfs \
ext2 ntfscomp iso9660 loopback search linux boot \
minicmd cat cpuid chain \
halt help ls reboot echo test configfile normal sleep \
memdisk tar font \
gfxterm gettext true vbe vga video_bochs video_cirrus \
multiboot multiboot2
cat /usr/lib/grub/i386-pc/cdboot.img core.img > \
cdimg2/grub.img
genisoimage -A "ZERO" -input-charset "iso8859-1" -R -b \
grub.img -no-emul-boot \
-boot-load-size 4 -boot-info-table -o cd.iso cdimg2