Hi,
I had problems booting the Linux 2.2.18 kernel with an INITRD. It
seems that the last pages of the memory are off-limits for the
INITRD. There is some workaround in GRUB for the 2.3.xx kernel,
but the offset isn't sufficient for the 2.2.18 kernel.
Kernel message:
"initrd extends beyond end of memory (0xc3ffb000 > 0xc3ff0000)"
In the attachment is a patch to fix this problem.
; Bodo
--
Bodo Rüskamp, <[EMAIL PROTECTED]>, Itchigo Communications GmbH
Index: stage2/boot.c
===================================================================
RCS file: /cvs/grub/stage2/boot.c,v
retrieving revision 1.30
diff -c -r1.30 boot.c
*** stage2/boot.c 2000/10/16 04:27:56 1.30
--- stage2/boot.c 2001/03/15 12:40:45
***************
*** 633,639 ****
/* XXX: Linux 2.3.xx has a bug in the memory range check, so avoid
the last page. */
! moveto -= 0x1000;
memmove ((void *) RAW_ADDR (moveto), (void *) cur_addr, len);
printf (" [Linux-initrd @ 0x%x, 0x%x bytes]\n", moveto, len);
--- 633,639 ----
/* XXX: Linux 2.3.xx has a bug in the memory range check, so avoid
the last page. */
! moveto -= 0x10000;
memmove ((void *) RAW_ADDR (moveto), (void *) cur_addr, len);
printf (" [Linux-initrd @ 0x%x, 0x%x bytes]\n", moveto, len);