Notes on cross-compiling PS3 kboot –
11-23-2006,08:48 AM
NB: I have only gotten to the point where I can build the kboot tree; I have no way to test the produced image, so I can't fully verify that I've done things correctly.
- There's a bug in ppu-as that pops up when cross-compiling the kernel on some hosts. You can work around this by dropping the attached ppu-makefile.patch into kboot-10/patches/linux/2.6.16/ - kboot will auto-apply it for you. I think it needs to be gunzipped first.
- If you get errors when building arch/powerpc/kernel/vdso32/gettimeofday.o, try applying the attached kboot-no-cross32.patch in kboot-10/
- there seem to be unresolved dependencies in the provided kboot tree: kexec-tools needs zlib, and coreutils needs libiconv.
- the kboot build runs mknod; you must be root for at least this portion of the build.
I registered on this board specifically to thank you for this post. I have been modifying kboot in an effort to facilitate something vaguely resembling pxe/netboot for automated installation. I have been compiling on the ps3, and having to copy the 1.3GB build tree off of the PS3 before every build attempt, and back afterwards. Cross-compile is a huge improvement that will save me a ton of time. I haven't fully tested yet, but things look good so far. Your notes got me past some early failures. Thanks-
PS how did you handle the depencies for kexec and coreutils?
It's been a while since I've done this (I'm running OpenBSD now, and it turns out that BSC's toolchain tree is a complete mess full of Linux/GNUisms, so I don't even have a working Cell toolchain right now). Basically I downloaded the sources for those libraries, built them, and installed them to the target tree. If memory serves, zlib has a very simple build system; I think I just did something like
Code:
CC=ppu-gcc make
and installed libz.a/so/h manually, but you can probably find some information in zlib's Makefile.
as for libiconv, it should support the GNU configure mechanism of specifying
Code:
--target=ppu --prefix=/path/to/target/tree
(where /path/to/target/tree is the directory which contains bin/ , lib/ , include/ et. al. for the PS3 toolchain.