Wolfgang,

In message <4a6ddf80....@embeddedarm.com> you wrote:
I'm working on a custom board using an AMCC 440EP that is using a proprietary bootloader(optimized for fast boot time). Currently our bootloader loads a simpleImage.initrd into RAM and jumps into it. I originally chose to use a simpleImage with an initial ramdisk embedded because it was the simplest solution to debug the hardware and get a kernel and initial ramdisk running for development. For production I would prefer to put the initial ramdisk on it's

Hm... isn't that an oxymoron? Trying to optimize  for  speed  on  one
hand, and using an initrd which is one of the slowest ways to boot on
the other hand?

We advertise the amount of time from a cold boot until one is sitting at a command prompt(< 2 s). A Debian filesystem(from Nand or SD card) is then mounted in the background. This gives one the power of Debian in a very short amount of time. From a technical stand point we have to use an initial ramdisk as we are a member of the SD association so we signed an NDA agreeing not to release any details of the SD spec. As a result we have code we can't release under the GPL so we have to load a proprietary SD card driver as a module.

I guess it depends upon how you define boot, that is we define it as how long it takes to get to a Linux shell prompt :) Even without the licensing issue I'm not sure we could boot faster(by the definition above) via some other method. All of the products I've seen that advertise a fast Linux boot time, boot to an initial ramdisk.

http://www.mvista.com/press_release_detail.php?fid=news/2009/Ultra-fast-boot.html

Thanks for any suggestions :)

Use another file system (and another fstype) and separate it from the
kernel image.

See also http://www.denx.de/wiki/view/DULG/RootFileSystemSelection

Thanks for the link. Although, I'm not looking for info on optimizing boot time. Rather I'm looking for information on what the path of least resistance is to boot a kernel with an initrd being loaded from it's own partition. To clarify currently I am using a simpleImage.initrd which is a single image with the flattened device tree, kernel, and initial ramdisk in a single file. One can simply load this image in RAM(assuming 1 to 1 MMU mapping) and jump into it. Now what I would like to do is to load a kernel, device tree, and initial ramdisk into RAM at different locations.

I'm in the process of coming back up to speed on the low-level boot details of the powerpc kernel/architecture. It looks like one can accomplish this by loading R3 with the phys address of the device tree block, R4 with the phys address of the kernel, and R5 with Null. It also looks like the kernel, already has several routines which know about these details(prom_init() and __start()) and I was hoping I could reuse this code to accomplish this rather than rewriting the bootrom to handle this. That is I was hoping there is a boot wrapper image that would allow me to accomplish my goal of creating a single image containing a kernel and device tree block, and an interface to specify where the bootrom loads the initial ramdisk in RAM. I'll continue reading through the docs and code, but if anyone could provide any pointers on how to do this I would really appreciate it.

--
Best Regards,
________________________________________________________________
 Eddie Dawydiuk, Technologic Systems | voice:  (480) 837-5200
 16525 East Laser Drive              | fax:    (480) 837-5300
 Fountain Hills, AZ 85268            | web: www.embeddedARM.com
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to