
Build world
------------

SRC_DIR=/usr/src

# First checkout source code, a stable branch or the head

svn co svn://svn.freebsd.org/base/releng/10.0 $SRC_DIR

or

svn co svn://svn.freebsd.org/base/head $SRC_DIR

cd $SRC_DIR

# Apply patches here

for file in /home/glevand/git/ps3freebsd/kernel-patches.git/*.patch; do
	patch -p0 < $file
done

# Update LV1 calls

cd $SRC_DIR/sys/powerpc/ps3
awk -f ps3-hv-asm.awk < ps3-hvcall.master > ps3-hvcall.S
awk -f ps3-hv-header.awk < ps3-hvcall.master > ps3-hvcall.h

# Create a kernel configuration

cd $SRC_DIR/sys/powerpc/conf
mkdir /root/kernels
cp GENERIC64 /root/kernels/PS3
ln -s /root/kernels/PS3
cd ../../..

# Build world

chflags -R noschg /root/PS3
rm -rf /root/PS3

env MAKEOBJDIRPREFIX=/usr/obj/PS3 make -j4 buildworld TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3 DESTDIR=/root/PS3
env MAKEOBJDIRPREFIX=/usr/obj/PS3 make -j4 buildkernel TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3 DESTDIR=/root/PS3
env MAKEOBJDIRPREFIX=/usr/obj/PS3 make -j4 installkernel TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3 DESTDIR=/root/PS3
env MAKEOBJDIRPREFIX=/usr/obj/PS3 make -j4 installworld TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3 DESTDIR=/root/PS3
env MAKEOBJDIRPREFIX=/usr/obj/PS3 make -j4 distribution TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3 DESTDIR=/root/PS3

cd /root/PS3
tar cvJf ../freebsd_world.tar.xz .

Install world on target
------------------------

newfs -U /dev/ps3disk3p3

mkdir /tmp/usb
mkdir /tmp/ufs

mount -t msdosfs /dev/da0s1 /tmp/usb
mount -t ufs /dev/ps3disk3p3 /tmp/ufs

cd /tmp/ufs
tar xvJf /tmp/usb/freebsd_world.tar.xz

cat >boot/loader.conf <<EOF
autoboot_delay="-1"
#boot_single="1"
EOF

cat >etc/fstab <<EOF
/dev/ps3disk3p3         /       ufs     rw      1 1
/dev/ps3disk3p1         none    swap    sw      0 0
proc                    /proc   procfs  rw      0 0
EOF

cat >etc/rc.conf <<EOF
hostname="freebsd"

ifconfig_glc0="SYNCDHCP"

sshd_enable="YES"

keyrate="fast"
keymap="us.iso"
#keymap="fr.iso"
#keymap="german.iso"
scrnmap="NO"
font8x16="iso15-8x16"
font8x14="iso15-8x14"
font8x8="iso15-8x8"
EOF

cat >etc/kboot.conf <<EOF
freebsd=/boot/loader.ps3
EOF

# Set root password

cp /etc/passwd /etc/master.passwd /etc/spwd.db /etc/pwd.db /tmp/ufs/etc/
mount -t devfs devfs /tmp/ufs/dev
mount -t procfs procfs /tmp/ufs/proc
cp /etc/resolv.conf /tmp/ufs/etc/
chroot /tmp/ufs /bin/csh
passwd
exit
umount /tmp/ufs/dev
umount /tmp/ufs/proc

cd
umount /tmp/ufs
umount /tmp/usb

Build loader
-------------

cd $SRC_DIR
env MAKEOBJDIRPREFIX=/usr/obj/PS3 make TARGET=powerpc TARGET_ARCH=powerpc64 buildenv
cd sys/boot
make all install DESTDIR=/root/PS3

Build kernel
-------------

cd $SRC_DIR
env MAKEOBJDIRPREFIX=/usr/obj/PS3 make buildkernel installkernel \
	TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3 DESTDIR=/root/PS3

Build module
-------------

cd $SRC_DIR
env MAKEOBJDIRPREFIX=/usr/obj/PS3 SYSDIR=$SRC_DIR/sys \
	make TARGET=powerpc TARGET_ARCH=powerpc64 buildenv
cd ~/ps3gpu
make
