[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: loading kernels with different LMA and VMA
From: |
Michael Hohmuth |
Subject: |
Re: loading kernels with different LMA and VMA |
Date: |
28 Mar 2001 17:51:05 +0200 |
address@hidden 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
--
address@hidden, address@hidden
http://home.pages.de/~hohmuth/