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);

Reply via email to