[EMAIL PROTECTED] writes:

> How do we load a kernel linked at say 0xf0100000? i tried doing that
> with a custm ldscript. I set the Load address at 0x100000 and the VMA
> at 0xf0100000. When it try loading the kernel Grub says that it
> cannnot load below 1 M is this a bug? Or an unimplemented feature. 

Perhaps an incorrect error message.  Even if GRUB could load it, it
could not run your kernel because the Multiboot standard mandates
one-to-one virtual-to-physical mappings -- that is, there is no
mapping for virtual addresses larger than the largest physical-memory
address.  In fact, paging is not even enabled when GRUB starts the
kernel.

> It looks like the only way i can remap a kernel to a higher virtual
> memory is to use the gdt otherwise i have to relocate all symbols in
> my kernel (argh).

My solution was to boot a small wrapper program that sets up a simple
page table, enables paging, copies the kernel (linked as an opaque
binary-data block into the wrapper) to its target destination, and
finally jumps to the kernel's startup code.

Michael
-- 
[EMAIL PROTECTED], [EMAIL PROTECTED]
http://home.pages.de/~hohmuth/


_______________________________________________
Bug-grub mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-grub

Reply via email to