We have a number of systems based on the ppc core in a Virtex 4 FX12. The system has 4MB flash RAM for program storage and 32MB RAM and uses one of the EDK-supplied Ethernet cores for comms (temac).
Some time ago I ported a 2.6.15 kernel onto it and we've been running with that ever since. The system boots with a small bootloader which loads uboot which in turn loads the Linux kernel. The kernel has an initrd and boots into a ram filesystem that's loaded off a compressed image on the flash.
The total boot time is of the order of 35 seconds - that's from a cold start to the application running with tcp sockets open to receive stuff from the LAN. I'd like to explore ways of making that faster.
It seems that the biggest pauses in the boot process are to do with the initrd loading, then the flash RAM being decompressed into RAM for the ramdisk, and then there's a long pause while the Etherent hardware initialises. There's also about 5 seconds lost at the start while the system looks for keypresses to activate the two boot loaders' flash-ram loading tools, and I'm going to replace both of those to look for a jumper setting on the board.
What's the most effective route to further reducing the boot time? For example, is there anything I can do to get rid of the initrd, or to speed up loading a flash disk into RAM? Is there any benefit to going for a later kernel - later desktop kernels seems to bood a lot faster than older ones on the same hardware, but I'm unsure how much of that is to do with more efficient driver and other module loading and how muchg is to do with the basic kernel itself. I've already removed everything from the kernel that's not needed and everything that it needs is compiled in, I believe.
I'm really looking for ideas for where to look next! Well, that and to get some feeling for if I'm going to be able to get a worthwile speed return - like all these things there's a tradeoff between effort and worth.
Thanks in advance, Nobby