I want to make a series of posts to record some of the things I’ve found out about maintaining the Ports Kernel for PS3 so far. I’m still to complete the full cycle to getting an updated kernel build into the repos but I’d like to note what I’ve found out so far. As I know more I’ll endeavor to update these notes so they remain fairly accurate.
The kernel used for PS3 in Ubuntu is the generic powerpc64-smp flavour. Unfortunately the PowerPC architecture is no longer an officially supported architecture in Ubuntu and therefore it falls to the community to keep it alive. The kernel source for this and the other unsupported architectures have been moved out into a separate git source tree to reduce the complexity and fragility of kernel maintenance. E.g. a bad change in the ports tree won’t break the build for the supported flavours. For the upcoming Intrepid release this is the ubuntu-intrepid-ports tree.
The important thing to note here is the PS3 kernel source is still shared with other architectures such as HPPA, ia64, SPARC etc, as well as for the standard PowerPC platform so any changes we make for PS3 must not break the kernel for any of these platforms. To verify this I will need to find interested parties who have relevant equipment to test on as I will not have access to any of these platforms myself. More on this in later posts.
Stuff To Do
Presuming you’re already subscribed to and known on the ubuntu-cell list, next subscribe to the Ubuntu Kernel Team mailing list and introduce yourself and your intentions. You will also need to monitor or subscribe to the actual kernel mailing list, and also specifically to the PS3/Cell Kernel development list.
Geoff Levand is (one of the folks) employed by Sony to work on the Linux Kernel for Cell and PS3. He keeps releases of the PS3 “Distro Kit” and lots of interesting documentation in his directory on kernel.org: http://www.kernel.org/pub/linux/kernel/people/geoff/cell/. You’ll need to be familiar with what’s there and hoover up the information provided.
Having done all this you should now have
- A local clone of the ubuntu-<codename>-ports tree (replace <codename> with ‘intrepid’ or whichever is the current codename as you read this) to work in.
- A good (but theoretical) idea of the maintenance process to follow.
- And you should know where ‘upstream’ is and where relevant development discussion is happening.
Getting More Official
The way development is structured is each of the Ubuntu Kernel Devs have their own Git source trees on http://kernel.ubuntu.com/git. They work locally then push there changes to their tree hosted there. Changes from their hosted tree can then be pulled into the intended mainline source trees as necessary, e.g. I may push my changes to dmunckton/ubuntu-intrepid-ports and when ready the changes will be moved to ubuntu/ubuntu-intrepid-ports. In theory this is how it works, still to get my changes approved and moved across.
Ben Collins is the guardian of kernel.ubuntu.com (a.k.a. zinc). To get your own tree there you need to convince him you’re serious and he can then get you a login setup. Expect this to take a while – until I had a login I made my own local builds and uploaded them to my website for review.
Once you have a login follow the instructions under the section titled “Developers with access to kernel.ubuntu.com” on the KernelGitGuide page to get your hosted tree setup.
In the next few posts I will hopefully deal with building, cross-compiling, rebasing against new official upstream kernel releases, looking for PS3 specific fixes, testing, and (fingers crossed) hopefully record the process of getting an updated build into the repos.