PS3 NetBSD Port in Development by Gitbrew for OtherOS++ CFW
PlayStation 3 developer Glevand of Gitbrew has started work on porting NetBSD to the PS3 OtherOS++ (CFW) Custom Firmware.
* Ok, here i will start porting NetBSD to PS3 OtherOS++.
* It would be cool to have another BSD on PS3.
* Special thanks to Makoto Fujiwara and Tsubai Masanari for porting NetBSD to PS3.
* Any help is welcome. Come on BSD fans, let us run NetBSD on PS3.
* It is still work in progress and I'm not able to run NetBSD on PS3 yet.
Obtaining Source Code
Building the Toolchain
* I must say the toolchain is really super done.
* Linux really sucks in comparison with NetBSD or FreeBSD regarding toolchain and cross-compiling.
Compiling Kernel
* Modify Tsubai Masanari's source code to use current powerpc infrastructure of NetBSD else no chance that NetBSD will accept our port.
* Tsubai Masanari's source code uses powerpc64 arch which is NOT present in NetBSD source. Everything is in powerpc arch.
* Currently, NetBSD supports 64bit PowerPC arch only in 64bit bridge mode, that means 32bit kernel and user-space.
* 64bit bridge mode won't work on CELL cpu. It is not supported.
Compiling Loader
Booting with Petitboot on OtherOS++
* Bootloader doesn't work yet but it looks very promising. I can run code in loader already.
Compiling User-Space
Links
* Why NetBSD and NOT Linux: http://www.embeddedarm.com/~joff/
* http://www.ki.nu/hardware/ps3/
* ftp://nandra.segv.jp/pub/NetBSD/ps3/
* http://www.netbsd.org/docs/guide/en/chap-fetch.html
* http://www.usenix.org/events/bsdcon/...n/linden_html/
* UVM: http://www.usenix.org/event/usenix99...nor/cranor.pdf
* ftp://ftp.gcu-squad.org/pub/books/netbsd-io-2002.pdf
* http://www.atmnis.com/~proger/openky...proger_sys.pdf
* http://www.netbsd.org/docs/kernel/bus_dma.pdf
* http://maxim.int.ru/bookshelf/osdi99.pdf
* http://gentiane.org/~miod/software/openbsd/solbourne
* http://www.teamten.com/lawrence/291.paper.pdf
PlayStation 3 developer Glevand of Gitbrew has started work on porting NetBSD to the PS3 OtherOS++ (CFW) Custom Firmware.
* Ok, here i will start porting NetBSD to PS3 OtherOS++.
* It would be cool to have another BSD on PS3.
* Special thanks to Makoto Fujiwara and Tsubai Masanari for porting NetBSD to PS3.
* Any help is welcome. Come on BSD fans, let us run NetBSD on PS3.
* It is still work in progress and I'm not able to run NetBSD on PS3 yet.
Obtaining Source Code
Code:
# cd /usr # export CVS_RSH="ssh" # export CVSROOT="[email protected]:/cvsroot" # cvs checkout -A -P src # ftp ftp://nandra.segv.jp/pub/NetBSD/ps3/ps3-111111.tar.gz
* I must say the toolchain is really super done.
* Linux really sucks in comparison with NetBSD or FreeBSD regarding toolchain and cross-compiling.
Code:
# cd /usr/src # mv sys/arch/powerpc ~ # tar xvzf ps3-111111.tar.gz # patch -p0 < build.sh.patch # patch -p0 < elf_machdep.h.patch # mkdir /usr/obj # cd tools # sh ./mkheaderlist.sh # cd .. # ./build.sh -m ps3 -a powerpc64 tools
Code:
===> Tools built to /usr/src/obj/tooldir.NetBSD-5.1-amd64
===> build.sh ended: Sat Jan 7 15:34:30 CET 2012
===> Summary of results:
build.sh command: ./build.sh -m ps3 -a powerpc64 tools
build.sh started: Sat Jan 7 15:23:22 CET 2012
NetBSD version: 5.99.59
MACHINE: ps3
MACHINE_ARCH: powerpc64
Build platform: NetBSD 5.1 amd64
HOST_SH: /bin/sh
No $TOOLDIR/bin/nbmake, needs building.
Bootstrapping nbmake
TOOLDIR path: /usr/src/obj/tooldir.NetBSD-5.1-amd64
DESTDIR path: /usr/src/obj/destdir.ps3
RELEASEDIR path: /usr/src/obj/releasedir
Created /usr/src/obj/tooldir.NetBSD-5.1-amd64/bin/nbmake
Updated makewrapper: /usr/src/obj/tooldir.NetBSD-5.1-amd64/bin/nbmake-ps3
Tools built to /usr/src/obj/tooldir.NetBSD-5.1-amd64
build.sh ended: Sat Jan 7 15:34:30 CET 2012
* Modify Tsubai Masanari's source code to use current powerpc infrastructure of NetBSD else no chance that NetBSD will accept our port.
* Tsubai Masanari's source code uses powerpc64 arch which is NOT present in NetBSD source. Everything is in powerpc arch.
* Currently, NetBSD supports 64bit PowerPC arch only in 64bit bridge mode, that means 32bit kernel and user-space.
* 64bit bridge mode won't work on CELL cpu. It is not supported.
Code:
# cd /usr/src # patch -p0 < PS3.patch # patch -p0 < cpu.h.patch # patch -p0 < pio.h.patch # patch -p0 < cpu_counter.h.patch # patch -p0 < spr.h.patch # patch -p0 < altivec.c.patch # patch -p0 < cpufunc.h.patch # patch -p0 < powerpc_machdep.c.patch # patch -p0 < cpu_970.c.patch # patch -p0 < fpu.c.patch # patch -p0 < trap.c.patch # patch -p0 < ps3pic.c.patch # patch -p0 < vuart.c.patch # patch -p0 < clock.c.patch # patch -p0 < extintr.c.patch # patch -p0 < machdep.c.patch # patch -p0 < pmap.h.patch # patch -p0 < pmap.c.patch # patch -p0 < ps3av_cmd.c.patch # patch -p0 < if_gelic.c.patch # cd sys/arch/ps3/conf # /usr/obj/tooldir.NetBSD-5.1-amd64/bin/nbconfig PS3 # cd ../compile/PS3 # export PATH=/usr/obj/tooldir.NetBSD-5.1-amd64/bin:$PATH # /usr/obj/tooldir.NetBSD-5.1-amd64/bin/nbmake-ps3 depend # /usr/obj/tooldir.NetBSD-5.1-amd64/bin/nbmake-ps3 NOGCCERROR=1 # file netbsd netbsd: ELF 64-bit MSB executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), statically linked, for NetBSD 5.99.59, not stripped
Code:
# cd /usr/src # patch -p0 < Makefile.patch # patch -p0 < start.S.patch # patch -p0 < boot.c.patch # patch -p0 < gelic.c.patch # patch -p0 < devopen.c.patch # cd sys/arch/ps3/stand/boot # /usr/obj/tooldir.NetBSD-5.1-amd64/bin/nbmake-ps3 depend # /usr/obj/tooldir.NetBSD-5.1-amd64/bin/nbmake-ps3 NOGCCERROR=1 LIBCRT0= LIBC= LIBCRTBEGIN= LIBCRTEND= # file boot.elf boot.elf: ELF 64-bit MSB executable, 64-bit PowerPC or cisco 7500, version 1 (SYSV), statically linked, not stripped
* Bootloader doesn't work yet but it looks very promising. I can run code in loader already.
Code:
# kexec -l boot.elf # reboot
Links
* Why NetBSD and NOT Linux: http://www.embeddedarm.com/~joff/
* http://www.ki.nu/hardware/ps3/
* ftp://nandra.segv.jp/pub/NetBSD/ps3/
* http://www.netbsd.org/docs/guide/en/chap-fetch.html
* http://www.usenix.org/events/bsdcon/...n/linden_html/
* UVM: http://www.usenix.org/event/usenix99...nor/cranor.pdf
* ftp://ftp.gcu-squad.org/pub/books/netbsd-io-2002.pdf
* http://www.atmnis.com/~proger/openky...proger_sys.pdf
* http://www.netbsd.org/docs/kernel/bus_dma.pdf
* http://maxim.int.ru/bookshelf/osdi99.pdf
* http://gentiane.org/~miod/software/openbsd/solbourne
* http://www.teamten.com/lawrence/291.paper.pdf