GRUB2 needs patches to allow it to initialize video correctly and show the framebuffer console when booting. Another problem was that it did not have a TextModeHack.
For the technical side of these problems: GRUB2 did not pass correct video information in the linux kernel parameters due to it only supporting UGA video. Thanks to bean's patch, I was able to construct a working GRUB2. UPDATE: now with adq's updated patch, we no longer need to use screen.efi as it contains a TextModeHack now - thanks to him for the great hack!
To compile GRUB2:
- Grab the source and untar it
- Patch it with grub-gop-video-v1.patch
cd grub-1.98/loader/i386/efi/ patch -p1 linux.c < grub-gop-video-v1.patch
- ./configure --with-platform=efi
- Run 'make'
Once you have grub built you need to create a custom executable with all the modules you want
./grub-mkimage -d . -o ../grub.efi part_msdos part_gpt fat ext2 hfsplus normal sh chain boot configfile linux help reboot acpi pci search
- part_msdos : reads msdos partition tables
- part_gpt : gpt partition tables
- fat : reads FAT filesystem
- ext2 : reads ext2/3 filesystems
- hfsplus : apple filesytems
- normal : basic grub
- sh : uses
- chain : may be useful to run the original O2 boot.efi
- boot : allow it to boot
- configfile : reads the menu from a config
- linux : understand the linux kernel
- help : online help
- reboot : !
- acpi : May be needed to access internal acpi devices
- cpi : May be needed to access internal pci devices
- search : Enables searching for devices by label
To use it on the device from an external stick:
- put grub.efi in the root of a usb fat partition on a stick
- go through the <esc> tapping and type: "fs1:grub" blind
To make this automatic:
- you can go to shell and edit the fs0:boot.nsh
- Put in the root of the FAT partition, file boot.nsh:
- And file startup.nsh:
- Put in a grub.cfg file in \efi\tools (sample one linked, not working, you need to edit it). See elilo config in the other post for inspiration.
- If you do not need interactivity with the menu (letting it time out to the default item), you do not have to press ESC at bootup.