PPCEmbedded

You will need to decide whether to use a tried-and-tested, stable
series kernel, or a development kernel. The choice will depend on
your project requirements and how much work you want to do to port
and maintain the kernel on your hardware. For any non-trivial project,
you can expect several major kernel releases during the project's life.
Consider the availability of the features you need, how leading edge
you want to be, and the likely status of each kernel series by the time
you're ready to ship.

You are probably best off using the stable version, unless you want to actively
participate in future development of Linux itself, or require features or board
support only present in the development series.

The bootloader is responsible for configuring the memory map
before jumping to the Linux kernel. Embedded PowerPC processors provide extreme
flexibility for address mapping of internal and external devices. You should
use this flexibitily to configure the memory map of your board to match the
needs of the Linux kernel, rather than modify the Linux kernel MMU
handling to match some arbitrary addressing scheme.

Provided that the PowerPCCPU you are using is already supported in
the kernel, most of the work involved in porting Linux to a new platform
actually involves changes to the ROMstartup code, rather
than the kernel itself. The other major kernel effort required is in
devicedrivers for new hardware devices.

Once you've got something working, there's an abundance of kernel patches
available on the Internet which can help customize the kernel to your
application. Patches are generally issued against a particular kernel
version, but can often be applied against other versions either automatically
or with manual assistance. The latest patches are usually available from
the linuxppc-embedded mailing list. Peter Allworth has some kernel patches
at http://www.zeta.org.au/~linsol/

The people who actively contribute to open source development are also
the ones who benefit the most from it, so it makes sense to actively
contribute wherever you can.

Virtually all the existing embedded Linux code is covered by the GPL,
which requires you to redistribute any changes you make. Contributing
your work offers an invaluable opportunity for peer review far beyond
what is normally possible within a single organization and can save
countless hours of unnecessary debugging.

In general, patches should be submitted in unidiff format to the
linuxppc-embeddedmailinglist.
Even if you submit them directly to the maintainer,
remember to cc: a copy to the mailing list, to keep everyone else informed
of what's going on. If it's large, put it up for ftp and post a pointer instead.