I was doing my weekly system update, grub-static has an update from 0.97-r9 to 0.97-r10. It gave me an error message:


>>> Emerging (11 of 17) sys-boot/grub-static-0.97-r10
>>> Failed to emerge sys-boot/grub-static-0.97-r10, Log file:
>>> '/var/tmp/portage/sys-boot/grub-static-0.97-r10/temp/build.log'
* Package: sys-boot/grub-static-0.97-r10
* Repository: gentoo
* Maintainer: amd64@gentoo.org
* USE: amd64 elibc_glibc kernel_linux userland_GNU
* Determining the location of the kernel source code
* Found kernel source directory:
* /usr/src/linux
* Found sources for kernel version:
* 2.6.36-gentoo-r5-3
* Checking for suitable kernel configuration options...
* You will NOT be able to run grub unless you have IA32_EMULATION set!
* Please check to make sure these options are set correctly.
* Failure to do so may cause unexpected problems

At first I was confused, why do I need IA32_EMULATION? And yes, I do need that. After I switched to no-multilib in November, 2009, I haven’t enabled IA32_EMULATION since then, kernel’s (gentoo-sources) version from 2.6.31-r4 to 2.6.36-r5, I never encountered any problem. Never have a boot issue.

I then realized that I can’t run GRUB (/sbin/grub) to install the new version of GRUB since GRUB is 32-bit and I didn’t have IA32_EMULATION enabled at that moment. In 2009, I switched to grub-static from grub and installed the grub, then I removed IA32_EMULATION. Until now, grub-static never got an update. I built the kernel with IA32_EMULATION, rebooted with it, emerged the grub-static-0.97-r10, ran grub-install, booted with previous kernel which didn’t have IA32_EMULATION. I have removed IA32_EMULATION from my kernel .config.

I don’t know about the booting, not sure how stage1 and stage2 hand over the control to Linux kernel. But it seems to be okay that I don’t need IA32_EMULATION in kernel for booting.

I think I will keep a copy of a kernel build with IA32_EMULATION as failsafe. But I don’t really think I need that other than installing new version of grub.