Quote:
Hello,
1. What's wrong here? (What more informations would you need?)
2. Is there some HOWTO-initrd-ON-PEGASOS-FOR-DUMMIES?
3. Could someone please point me to some document where I could learn a little bit more about the initial things done by OF and the kernel so that I could someday really understand where exactly why which part is loaded and unzipped to? I want to learn
1. To load kernels above a certain size you need to set load-base to a higher value that it is currently.
In the firmware memory map basically there is the zero page, some free memory, openfirmware stack/heap space (for claim) and at 4MB or so there is the firmware image. After that is empty memory. This is so a system with less than 32MB of RAM can boot.
| 0 | free space (load-base is set to here) | stack | firmware | memory-above-6MB-or-so-is-free |
What happens with the standard load-base is that a kernel which decompresses larger than 4MB is loaded into high memory above the firmware, and decompresses over the top of the low portion of memory (0-4MB and higher) which effectively decompresses Linux over the top of the firmware. Since it's still in the CHRP boot process the firmware is still active.. you get the picture.
The fix is to set load-base so that it loads kernels and decompresses not into the space below the firmware (marked free space) but into the higher memory space. setenv load-base 0x1000000 sets it to the 32MB point which should work great.
That's a very simple, dumb, and probably quite wrong in detail explanation of it. Sven would have a better time documenting this than I would. And yes I do think we need to document this and have it available as a tutorial on our website. I will nag
--
Matt Sealey
Genesi, Manager, Developer Relations