> Can someone possibly explain exactly what's wrong with GRUB2?

The main problem of GRUB2/GRUB4DOS is that it is entering the Linux
kernel by the partially documented 32 bits entry point:
http://www.mirrorservice.org/sites/alpha.gnu.org/gnu/grub/grub-1.98.tar.gz/grub-
1.98/loader/i386/linux.c?extract=true

That means you are no more executing the real mode part of the linux
kernel, you are using some real mode memory structures set-up by GRUB2.
Those structures have been more or less identical to those of Linux at
some point in the past.

That means that some kernel options which were working with GRUB1 (like
EDID and EBIOS disk identifications) are no more working, and no more
evolutions can be done in the real mode part of the Linux kernel (like
increasing some structures, moving their base address...).
Those evolutions would only be working with kernel booted with GRUB1,
LILO or Gujin, but not with GRUB2.
Disclaimer: I am not unrelated with the GPL bootloader Gujin at sourceforge.

When entering the Linux kernel by the 32 bits entry point on ia32/amd64
has been discussed on lkml, it was seriously criticised.

For instance, because the boot disk can no more be determined safely
(the BIOS on most machine can tell the PCI address of a drive, but
it is unsafe to call the BIOS after so many modifications in protected
mode done by GRUB2), you get distributions switching to all UUID mode 
- which is a major pain when one of your hard disk fails and you copy
it byte per byte onto a spare disk, leading to UUID conflicts.

Also, some amd64 PC seems to want a BIOS call when they will run a
64 bits kernel (linux kernel real-mode code), I am not sure that one
is done by GRUB2.

And a third problem is that you need the 32 bits libraries to compile
GRUB2, even on a clean 64 bits machine.

Just my $0.02,
Etienne.



Reply via email to