NetBSD on PS3: Difference between revisions
(Backup from wiki.gitbrew.org/wikibrew/PS3:NetBSD (down) ; Didn't see it on the wiki, so here it is...) |
m (None.) |
||
Line 128: | Line 128: | ||
Why NetBSD and NOT Linux: http://www.embeddedarm.com/~joff/ | Why NetBSD and NOT Linux: http://www.embeddedarm.com/~joff/ | ||
http://www.ki.nu/hardware/ps3/ | http://www.ki.nu/hardware/ps3/ | ||
ftp://nandra.segv.jp/pub/NetBSD/ps3/ | ftp://nandra.segv.jp/pub/NetBSD/ps3/ | ||
http://www.netbsd.org/docs/guide/en/chap-fetch.html | http://www.netbsd.org/docs/guide/en/chap-fetch.html | ||
http://www.usenix.org/events/bsdcon/full_papers/linden/linden_html/ | http://www.usenix.org/events/bsdcon/full_papers/linden/linden_html/ | ||
UVM: http://www.usenix.org/event/usenix99/full_papers/cranor/cranor.pdf | UVM: http://www.usenix.org/event/usenix99/full_papers/cranor/cranor.pdf | ||
ftp://ftp.gcu-squad.org/pub/books/netbsd-io-2002.pdf | ftp://ftp.gcu-squad.org/pub/books/netbsd-io-2002.pdf | ||
http://www.atmnis.com/~proger/openkyiv/openkyiv2009_proger_sys.pdf | http://www.atmnis.com/~proger/openkyiv/openkyiv2009_proger_sys.pdf | ||
http://www.netbsd.org/docs/kernel/bus_dma.pdf | http://www.netbsd.org/docs/kernel/bus_dma.pdf | ||
http://maxim.int.ru/bookshelf/osdi99.pdf | http://maxim.int.ru/bookshelf/osdi99.pdf | ||
http://gentiane.org/~miod/software/openbsd/solbourne | http://gentiane.org/~miod/software/openbsd/solbourne | ||
http://www.teamten.com/lawrence/291.paper.pdf | http://www.teamten.com/lawrence/291.paper.pdf |
Revision as of 22:35, 16 August 2012
- 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
- 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
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.
- 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
===> 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
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.
- 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
Compiling Loader
- 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
Booting with Petitboot on OtherOS++
Bootloader doesn't work yet but it looks very promising. I can run code in loader already.
- kexec -l boot.elf
- reboot
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/full_papers/linden/linden_html/
UVM: http://www.usenix.org/event/usenix99/full_papers/cranor/cranor.pdf
ftp://ftp.gcu-squad.org/pub/books/netbsd-io-2002.pdf
http://www.atmnis.com/~proger/openkyiv/openkyiv2009_proger_sys.pdf
http://www.netbsd.org/docs/kernel/bus_dma.pdf
http://maxim.int.ru/bookshelf/osdi99.pdf