Tobias Hintze: on machines with more than 4GB RAM there is an issue resulting in: Error 28: "selected item cannot fit into memory" the bug is in grubs bugtracker (including this patch) since 2004 but still not in 0.97: https://savannah.gnu.org/bugs/?func=detailitem&item_id=9954 diff -Naur grub-0.97~/stage2/char_io.c grub-0.97/stage2/char_io.c --- grub-0.97~/stage2/char_io.c 2005-02-01 21:51:23.000000000 +0100 +++ grub-0.97/stage2/char_io.c 2007-08-06 19:35:37.711924190 +0200 @@ -1175,13 +1175,13 @@ #endif /* ! STAGE1_5 */ int -memcheck (int addr, int len) +memcheck (unsigned long addr, unsigned long len) { #ifdef GRUB_UTIL - auto int start_addr (void); - auto int end_addr (void); + auto unsigned long start_addr (void); + auto unsigned long end_addr (void); - auto int start_addr (void) + auto unsigned long start_addr (void) { int ret; # if defined(HAVE_START_SYMBOL) @@ -1192,7 +1192,7 @@ return ret; } - auto int end_addr (void) + auto unsigned long end_addr (void) { int ret; # if defined(HAVE_END_SYMBOL) diff -Naur grub-0.97~/stage2/shared.h grub-0.97/stage2/shared.h --- grub-0.97~/stage2/shared.h 2004-06-19 18:40:09.000000000 +0200 +++ grub-0.97/stage2/shared.h 2007-08-06 19:35:43.856274336 +0200 @@ -911,7 +911,7 @@ int nul_terminate (char *str); int get_based_digit (int c, int base); int safe_parse_maxint (char **str_ptr, int *myint_ptr); -int memcheck (int start, int len); +int memcheck (unsigned long start, unsigned long len); void grub_putstr (const char *str); #ifndef NO_DECOMPRESSION