bug-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #15590] Address fields in Multiboot header not used


From: Julio M. Merino Vidal
Subject: [bug #15590] Address fields in Multiboot header not used
Date: Tue, 31 Jan 2006 11:46:45 +0100
User-agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; es) AppleWebKit/417.9 (KHTML, like Gecko) Safari/417.8

URL:
  <http://savannah.gnu.org/bugs/?func=detailitem&item_id=15590>

                 Summary: Address fields in Multiboot header not used
                 Project: GNU GRUB
            Submitted by: jmmv
            Submitted on: Tue 01/31/06 at 11:46
                Category: Booting
                Severity: Major
                Priority: 5 - Normal
              Item Group: Software Error
                  Status: None
                 Privacy: Public
             Assigned to: None
         Originator Name: Julio M. Merino Vidal
        Originator Email: address@hidden
             Open/Closed: Open
                 Release: 0.97
         Reproducibility: Every Time
         Planned Release: 

    _______________________________________________________

Details:

The Multiboot header defines a set of fields that can be used to tell the
boot loader where to load a kernel image.  These fields must be specified
when loading an a.out image, in which case they are properly used by GRUB. 
However, when the image is an ELF file, these fields are optional and
unfortunately GRUB does not honour them.

This makes it impossible to load a Multiboot kernel which is mapped to a very
high virtual memory address, because GRUB will always spit out a
"ERR_WONT_FIT" error.

In my specific case, I've adapted the NetBSD kernel to be
Multiboot-compliant.  NetBSD is built to be executed at the 0xc0100000
virtual address.  However, the kernel must be loaded at a lower address
(0x00100000) because it relocates itself later on.  If you look at the code
in GRUB to boot NetBSD kernels natively, you'll see how it "truncates" the
addresses in the ELF file by doing an (& 0xFFFFFF).

If GRUB honoured the address fields in the Multiboot header, I'd use them to
explicitly tell it where to place the kernel.



    _______________________________________________________

Carbon-Copy List:

CC Address                          | Comment
------------------------------------+-----------------------------
address@hidden                     | 



    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Tue 01/31/06 at 11:46  Name: grub-elf-addr.diff  Size: 1.45KB   By:
jmmv
Sample patch.
<http://savannah.gnu.org/bugs/download.php?item_id=15590&item_file_id=3347>

    _______________________________________________________

Reply to this item at:

  <http://savannah.gnu.org/bugs/?func=detailitem&item_id=15590>

_______________________________________________
  Message sent via/by Savannah
  http://savannah.gnu.org/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]