OtherOS++

From PS3 Developer wiki
Revision as of 01:41, 8 September 2011 by Euss (talk | contribs)
Jump to navigation Jump to search

OtherOS++

This guide is roughly copypasted from Gitbrew wiki and Glevand' documentations

Firmwares

With SS Patches

No SS Patches

Documentation

Packages

Petitboot Images

Scripts

PS3 Kernels

Git

http://git.gitbrew.org/

Master Servers

Gitweb Mirrors

Git Mirrors

partial backup

gitbrew-backup.zip (1.59 MB)

  • juli 22 2011 snapshot by aKoN-Man:
http://www.multiupload.com/ULBPNLOHJ7 (143.1 MB)
http://www.multiupload.com/MDNVQSFL00 (143.1 MB)
http://www.multiupload.com/O737BH53N6 (143.1 MB)
http://www.multiupload.com/EOG7ABG05F (143.1 MB)
http://www.multiupload.com/CSG2IHRESD (143.1 MB)
http://www.multiupload.com/AL658V0ZUU (143.1 MB)
http://www.multiupload.com/W5BIRAZTUM (143.1 MB)
http://www.multiupload.com/BR410045AK (143.1 MB)
http://www.multiupload.com/RFPAKBP1BD (27.7 MB)

Features

  • Into HV integrated OtherOS bootloader loader (compatible with OtherOS bootloader on 3.15)
  • OtherOS bootloader is booted directly from HV, no GameOS is involved.
  • Process of booting OtherOS bootloader loader is very similar to 3.15 method
  • Booting Linux from HDD/USB/BD/Network
  • Linux with GameOS rights
  • Full access to all HV SS services (Dispatcher Manager) from GameOS or Linux
  • Full access to all System Manager services
  • Ability to create/modify/remove repository nodes in LPAR 1 (e.g. with ps3dm-utils or ps3hvc-utils).
  • This ability gives you much power over the whole system because many layers of PS3 use repository nodes to exchange information.
  • Enabled QA mode in Update Manager
  • Downgrading without USB dongle or Service Mode
  • Ability to deactivate/activate HDD/VFLASH encryption (e.g. with ps3stor-utils)
  • Support for ps3-utils. You can flash new OtherOS bootloader from Linux e.g.


QA Flag

Reports state if you flag your ps3 you will lose all psn .act files making any bought psn content unuseable (warning: these are dev tools, remember this.)


SS Patches

Do not use these pups if you play games via backup managers of your legal games. You will get trophy errors. You need this patch to use ps3dm,sm, and other ps3 dev tools. We're currently working on a patch in petitboot so it only runs when you use linux and not mess with GameOS backup managers -> use dispmgr_access.sh

OtherOS++ How-To

Referenced from http://www.gitbrew.org/otheros/

PS3 Models

PS3 Fat (NAND):

  • CECHA = 256MB
  • CECHB = 256MB
  • CECHC = 256MB
  • CECHE = 256MB
  • CECHG = 256MB

PS3 Fat (NOR):

  • CECHH = 16MB
  • CECHJ = 16MB
  • CECHK = 16MB
  • CECHL = 16MB
  • CECHM = 16MB
  • CECHP = 16MB
  • CECHQ = 16MB

PS3 Slim (NOR):

  • CECH-20..A = 16MB
  • CECH-20..B = 16MB
  • CECH-21..A = 16MB
  • CECH-21..B = 16MB
  • CECH-250.A = 16MB
  • CECH-250.B = 16MB
  • CECH-251.A = 16MB
  • CECH-251.B = 16MB

256MB = NAND, 16 = NOR. Follow Accordingly


Install OtherOS on HDD (for all PS3 models)

   All tools are here: http://gitbrew.org/~glevand/ps3/
    
   NOTICE: All my tools should beep. If you don't get beep during one of the steps below
           then stop doing anything and contact me. I will help.
           OtherOS++ support: irc.gitbrew.org (ssl) #otheros
    
   ALL PS3 MODELS ARE SUPPORTED !!!
    
    1. Install my latest CFW
    2. When installation is finished, reboot in Recovery Mode (not the Backup/Restore in XMB) and choose "Restore PS3 System"
    3. Now your GameOS should use only the half of your HDD
       (Currently working on a better approach)
    4. Run setup_flash_for_otheros.pkg (for all PS3 models)
    5. Reboot (It's important to shut down and turn on your PS3)
    6. Store dtbImage.ps3.bin on USB drive, plug it in and run install_otheros.pkg
       (NAND owners should use dtbImage.ps3.bin.minimal, rename it to dtbImage.ps3.bin).
       Try different USB ports if you don't get any beeps.
    7. Run boot_otheros.pkg
    8. Run reboot.pkg (use the package, not manually reboot!)
    9. You should be in petitboot now.
       Exit from CUI to shell or switch to another virtual console.
   10. Run script create_hdd_region.sh
   11. Reboot and boot petitboot again
   12. You should see now new HDD device on petitboot, /dev/ps3dd.
       That's your OtherOS HDD region.
       Don't touch any other HDD regions if you don't know what you are doing. Use only ps3dd
       device for your Linux installation. Use parted to partition it and create GPT partition
       table on ps3dd. GPT is supported by both, Linux and FreeBSD.
    
   Be warned, if you damage your GameOS HDD region, GameOS will reformat HDD and
   remove your Linux HDD region in the process. You have to do the above steps again.
   Don't mess with GameOS HDD region and GameOS won't mess with your OtherOS HDD region.

For users who installed OtherOS on VFLASH region 7 previously

You have to restore your VFLASH before doing the above steps.
Be warned, this step is NOT for NAND owners.
1. Install my latest petitboot
2. Boot petitboot
3. Run script restore_vflash.sh
4. Reboot. GameOS should reformat your HDD again.

Partition the PS3 Drive

1. parted /dev/ps3dd
2. mklabel gpt
3. mkpart primary 0 2GB
4. print
5. mkpart primary 2GB (the rest of the hard drive here.)
6. quit.

In case you need it: full manual of Parted


You may now continue to Install Linux // (google-cache)




PS3:Linux

Example

Generic Guide to install any PPC64 Linux Distro (vflash only)

umount ps3db
umount ps3dc
wget http://gitbrew.org/~glevand/ps3/scripts/hdd_access.sh
chmod a+x hdd_access.sh
./hdd_access.sh
kexec -l vmlinuz --initrd of the distro you want to install

Fedora

Installed with Fedora 9 Full DVD Tested on Slim PS3 (3.55) & Phat PS3 (3.15)

When installing Fedora 9, when you are asked about partitioning, choose "Custom layout" and select ps3da.


3.55 (Custom CFW)

umount ps3db
umount ps3dc
./hdd_access print|patch|restore?
mkdir /mnt/fedora
cp /tmp/petitboot/mnt/sr0/ppc/ppc64/* /mnt/fedora
kexec -l vmlinuz --initrd=ramdisk.image.gz

Reboot the PS3 and it will start the installer

NOTE: When installing Fedora 9 (possibly all versions), choose "Custom layout" and select ps3da. The hdd_access.sh script disables ps3da-c and makes it so that ps3dd reads as the "first" hard drive. After the installer finishes, DO NOT HIT REBOOT. You must unplug or hardware reset your console.


3.15 PHAT (Stock OFW)

  • Put petitboot on a memory stick
mkdir -p /media/usbstick/PS3/otheros/
wget http://www.kernel.org/pub/linux/kernel/people/geoff/cell/ps3-petitboot/otheros.bld
cp ./otheros.bld /media/usbstick/PS3/otheros/otheros.bld
  • Boot into GameOS
    • XBM>Settings>System Settings>Other OS>
    • Settings>System Settings>Default System>Other OS>Yes
  • Boot into petitboot and load up a dvd with Fedora Core on it :D


NAND 3.15 Notes before Tweaks

  • Your hdd is ps3da. Pay attention to the guide and substitude ps3dd with ps3da
  • Know which partitions are which and don't go mkswap'ing your root partition
  • Do not use hdd_access to configure your hdds
  • You must patch your kernel with glevand's patch / obtain a patched kernel in order to do certain things and compile certain tools.

Tweaks

  • umount /dev/ps3dd2
  • mkdir /mnt/fedora
  • mount /dev/ps3dd2 /mnt/fedora
  • nano /mnt/fedora/etc/yaboot.conf
    • rename "linux" to "Fedora"
    • remove UUID=* from arguments and save
    • NAND 3.15 ONLY:change boot from /dev/sdd (or whatever) to ps3da (or whichever drive yours shows up as, not the partition)
    • NAND 3.15 ONLY:add root=/dev/ps3da1
    • NAND 3.15 ONLY:Example yboot.conf
  • nano /mnt/Fedora/etc/sudoers
    • append your user under root
    • If you cannot write to sudoers file:
      • chmod u+w /mnt/Fedora/etc/sudoers
      • edit
      • chmod 0440 /mnt/Fedora/etc/sudoers.
root     ALL=(ALL) ALL
snowy    ALL=(ALL) ALL
  • each time you boot in petitboot, press e on "Fedora" and change ps3da2 to ps3dd2 for both vmlinux and ramdisk. (temporary)
    • Unless you followed the NAND 3.15 ONLY step previously.
  • when you boot into fedora for the first time, make the user (same as you did in sudoers) account now.
  • when prompted to login hit alt + ctrl + f1
  • log in
  • sudo su
  • nano /etc/udev/rules.d/10-ps3da1swap.rules
KERNEL=="ps3da1", ACTION=="add", RUN+="/sbin/mkswap /dev/ps3da1", RUN+="/sbin/swapon -p 1 /dev/ps3da1"
  • nano /etc/udev/rules.d/10-ps3vram.rules
 # udev rules to automatically enable swap on /dev/ps3vram
 # Copy this file to /etc/udev/rules.d/10-ps3vram-swap.rules
 # Choose only one of the rules below

 # Initialize and enable swap unconditionally
 KERNEL=="ps3vram", ACTION=="add", RUN+="/sbin/mkswap /dev/ps3vram", RUN+="/sbin/swapon -p 10 /dev/ps3vram"

 # Initialize using /etc/fstab and standard init scripts
 # KERNEL=="ps3vram", ACTION=="add", RUN+="/bin/bash -c '/bin/grep -q ^/dev/ps3vram[[:space:]]*swap /etc/fstab && /sbin/mkswap /dev/ps3vram'"

Fedora is now installed and configured.

Debian

Debootstrap HOWTO by glevand ([email protected])
-------------------------------------------------------

Links:

* http://www.debian.org/releases/stable/i386/apds03.html.en
* https://help.ubuntu.com/6.10/ubuntu/installation-guide/i386/linux-upgrade.html

Installing Debian Squeeze with debootstrap on petitboot
--------------------------------------------------------

- Configuring the base system

1. umount /dev/ps3dd2
2. mkdir /mnt/debian
3. mkfs.ext3 /dev/ps3dd2
4. mount /dev/ps3dd2 /mnt/debian
5. rm -rf /mnt/debian/*
6. debootstrap --arch powerpc squeeze /mnt/debian http://ftp.us.debian.org/debian
7. mount -t proc none /mnt/debian/proc
8. mount --rbind /dev /mnt/debian/dev
9. LANG=C chroot /mnt/debian /bin/bash
10. export TERM=xterm-color

- Mounting partitions

File /etc/fstab
----------------

/dev/ps3dd2			/			ext3		defaults		        	0 1
/dev/ps3vram		        none		        swap		sw					0 0
/dev/ps3dd1			none		        swap		sw					0 0
/dev/sr0			/mnt/cdrom	        auto		noauto,ro		        	0 0
proc				/proc		        proc		defaults		        	0 0
shm			        /dev/shm        	tmpfs		nodev,nosuid,noexec             	0 0

- Setting timezone

1. vi /etc/default/rcS
2. dpkg-reconfigure tzdata

- Configuring networking

1. echo "Name of your computer here" > /etc/hostname

File /etc/network/interfaces
-----------------------------

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

File /etc/resolv.conf (cat /etc/resolv.conf, if you see nameservers already skip this step)
----------------------

nameserver 192.168.1.1

- Configuring apt

File /etc/apt/sources.list
---------------------------
deb http://ftp.us.debian.org/debian squeeze main
deb-src http://ftp.us.debian.org/debian squeeze main

deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main

1. aptitude update

- Configuring locales and keyboard

1. aptitude install locales
2. dpkg-reconfigure locales
3. aptitude install console-data
4. dpkg-reconfigure console-data

- Finishing touches

1. tasksel install standard
2. aptitude clean
3. passwd
4. aptitude install git build-essential ncurses-dev
5. mkswap /dev/ps3dd1
6. swapon /dev/ps3dd1

- Installing kernel

1. cd /usr/src
2. git clone git://git.gitbrew.org/ps3/ps3linux/linux-2.6.git
3. ln -sf linux-2.6 linux
4. cd linux
5. cp ps3_linux_config .config
6. make menuconfig
7. make
8. make install
9. make modules_install

If you compile your kernel on PS3 then make sure you activate swap because
compiling kernel needs much RAM. I used /dev/ps3dd1 as swap which
you have to create with fdisk first of course or some other program.

- Creating kboot.conf
1. ls /boot/
2. edit kboot.conf and replace what you see for > vmlinux-2.6.* from below (example. vmlinux-2.6.38-gf77c53d)

File /etc/kboot.conf
---------------------

debian=/boot/vmlinux-2.6.* root=/dev/ps3dd2
debian_Hugepages=/boot/vmlinux-2.6.* root=/dev/ps3dd2 hugepages=1

- Creating /dev/ps3flash device (needed for ps3-utils)

File /etc/udev/rules.d/70-persistent-ps3flash.rules
----------------------------------------------------

KERNEL=="ps3vflashf", SYMLINK+="ps3flash"


Ubuntu

Debootstrap HOWTO by glevand ([email protected]) 
(Redone by snowy)
(Updated by thom)
-------------------------------------------------------
Installing Ubuntu Lucid (10.04) with debootstrap on petitboot
--------------------------------------------------------
For different versions of Ubuntu, just change all occurrences of lucid, to natty or whatever build you would like.

You can also edit the config files in whatever text editor you would like. Nano and Vi are the preferred text editors

- Configuring the base system

1. umount /dev/ps3dd2
2. mkdir /mnt/ubuntu
3. mkfs.ext3 /dev/ps3dd2
4. mount /dev/ps3dd2 /mnt/ubuntu
5. rm -rf /mnt/ubuntu/*
6. debootstrap --arch powerpc lucid /mnt/ubuntu http://ports.ubuntu.com
7. mount -t proc none /mnt/ubuntu/proc
8. mount --rbind /dev /mnt/ubuntu/dev
9. LANG=C chroot /mnt/ubuntu /bin/bash
10. export TERM=xterm-color

- Mounting partitions
if you want to use nano editor you will need to type "apt-get install nano" without quotes

File /etc/fstab
----------------

/dev/ps3dd2			/		ext3		defaults			0 1
/dev/ps3vram			none		swap		sw				0 0
/dev/ps3dd1			none		swap		sw				0 0
/dev/sr0			/mnt/cdrom	auto		noauto,ro			0 0
proc				/proc		proc		defaults			0 0
shm				/dev/shm	tmpfs		nodev,nosuid,noexec		0 0

- Setting timezone

1. dpkg-reconfigure tzdata

- Configuring networking

1. echo "Name of your computer here" > /etc/hostname

File /etc/network/interfaces
-----------------------------

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

File /etc/resolv.conf (cat /etc/resolv.conf, if you see nameservers already skip this step)
----------------------

nameserver 192.168.1.1

- Configuring apt

File /etc/apt/sources.list
---------------------------
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-updates main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ lucid-updates restricted
deb http://ports.ubuntu.com/ubuntu-ports/ lucid universe
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-updates universe
deb http://ports.ubuntu.com/ubuntu-ports/ lucid multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-updates multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-security main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ lucid-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-security universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ lucid-security universe
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-security multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ lucid-security multiverse

OR (Use the following if you have trouble with above sources.)

deb http://ports.ubuntu.com/ubuntu-ports/ lucid main restricted
deb-src http://ftp.usf.edu/pub/ubuntu/ lucid main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-updates main restricted
deb-src http://ftp.usf.edu/pub/ubuntu/ lucid-updates main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ lucid universe
deb-src http://ftp.usf.edu/pub/ubuntu/ lucid universe
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-updates universe
deb-src http://ftp.usf.edu/pub/ubuntu/ lucid-updates universe
deb http://ports.ubuntu.com/ubuntu-ports/ lucid multiverse
deb-src http://ftp.usf.edu/pub/ubuntu/ lucid multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-updates multiverse
deb-src http://ftp.usf.edu/pub/ubuntu/ lucid-updates multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-backports main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-security main restricted
deb-src http://ports.ubuntu.com/ubuntu-ports/ lucid-security main restricted
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-security universe
deb-src http://ports.ubuntu.com/ubuntu-ports/ lucid-security universe
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-security multiverse
deb-src http://ports.ubuntu.com/ubuntu-ports/ lucid-security multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ lucid-proposed restricted main multiverse universe


1. apt-get update

- Configuring locales and keyboard

1. apt-get install locales
2. dpkg-reconfigure locales
3. apt-get install console-data
4. dpkg-reconfigure console-data

- Finishing touches

1. tasksel install standard
2. apt-get clean
3. passwd
4. apt-get install build-essential ncurses-dev git-core gitosis
5. mkswap /dev/ps3dd1
6. swapon /dev/ps3dd1

- Installing kernel

1. cd /usr/src
2. git clone git://git.gitbrew.org/ps3/ps3linux/linux-2.6.git
3. ln -sf linux-2.6 linux
4. cd linux
5. cp ps3_linux_config .config
6. make menuconfig
7. make
8. make install
9. make modules_install

If you compile your kernel on PS3 then make sure you activate swap because
compiling kernel needs much RAM. I used /dev/ps3dd1 as swap which
you have to create with fdisk first of course or some other program.

- Creating kboot.conf
1. ls /boot/
(After running ls /boot/, look for vmlinux... in this directory, and user it's fiel name in the next commmand.)
2. edit kboot.conf and replace what you see for > vmlinux-2.6.* from below (example. vmlinux-2.6.38-gf77c53d)

File /etc/kboot.conf
---------------------

Ubuntu=/boot/vmlinux-2.6.* root=/dev/ps3dd2
Ubuntu_hugepages=/boot/vmlinux-2.6.* root=/dev/ps3dd2 hugepages=1

- Creating /dev/ps3flash device (needed for ps3-utils)

File /etc/udev/rules.d/70-persistent-ps3flash.rules
----------------------------------------------------

KERNEL=="ps3vflashf", SYMLINK+="ps3flash"
Another Way to get Ubuntu on you PS3
-----------------------------------------------
...is to use an Installer-Disk.

1. Download these ISO
[http://cdimage.ubuntu.com/ports/releases/10.04/release/ubuntu-10.04-alternate-powerpc+ps3.iso Ubuntu.10.04.Alternate.PS3.iso]
These is the alternate-installation for PS3. Its a rudimentary installer. He is faster than the graphical one of 
the normal installtaion. 

2. Burn to disk 
it is needed, to burn these image. An installation from usb-pen is with these installation not possible.

3. Installation.
Put the CD in the drive and reboot to pettitboot. Choose the first normal installation.
Follow the instructions. If you get ask for the partition, my proposal is to use the whole linux-partition.
The assistant should choose a port of it for swap. After the installation you cloud chance the swap to ps3vram
The installation-process take a quite a while. (3-4h)
  
4. Post installation
it could be that you have to chance the fstab. (which described which /dev ubuntu mount to what you want)
From Petitboot go to Terminal. cd /tmp/petitboot/mnt/ps3dd1/etc/ and nano fstab.


Ubuntu should run like a weasel (a handicapped)

Post Installation

After you've set up Linux on your PS3... http://wiki.gitbrew.org/index.php/PS3:Tools // (google-cache)

Tools

Information about setting up PS3-specific tools found on git.gitbrew.org can be found at PS3:Tools

Wireless

Setting up wireless requires you to take down networking. You must have a direct connection to your PS3 to continue. More information.

  • git and build ps3hvc utils
  • Download glevand's wlan script for your PS3 type: FAT/NAND[4] SLIM/VFlash[5]. You want this in the same directory ps3hvc-utils is in.
  • Take down current driver
    • sudo rrmod ps3_gelic
  • Run enable_wlan_on_*.sh
    • chmod +x enable_wlan_on*.sh
    • ./enable_wlan_on*.sh
  • Bring up new driver
    • sudo modprobe ps3_gelic
    • sudo /etc/init.d/networking restart
  • Test wireless card (by seeing available networks)
    • sudo iwlist scan

Enabling Wireless with the latest Linux kernel

You don't need to use WLAN script with the latest Linux kernel anymore. Add the following boot parameter to your kboot entry:

ps3_gelic.disable_eurus_ctrl_iface=1

Attention: It will work on PS3 PHAT models only.


Enabling Sound

Sound HOWTO by c4pt and durandal

  • Check to see that the sound driver is installed
    • sudo lsmod | grep snd_ps3
      • if your output shows snd, snd_pcm, and snd_ps3, then continue to the next step, otherwise
      • sudo modprobe snd_ps3
        • if it installs, you're good to go, otherwise, you neen to compile a new kernel
  • Connect the ps3 sound device to /dev/sound0
    • sudo ln -s /dev/snd/pcmC0D0p /dev/sound0
  • Add yourself to the audio group
    • sudo usermod -G audio <username>
  • Verify that the user was added
    • sudo id <username>
    • If your username shows audio as a group, move on to the next step
  • Install either mpg123 or alsamixer to test the sound, using whatever install tools your distribution has
    • RHEL, SLES, OpenSUSE, YDL, fc: sudo yum install mpg123 alsamixer
    • Debian, Ubuntu: sudo apt-get install mpg123 alsamixer
  • Reboot the console
    • sudo reboot
  • Play an mp3 to test the sound with either
    • mpg123 <some_sound_file.mp3> OR
    • alsamixer <some_sound_file.mp3>


Cleaning up Errors

exim4

  • Error: IPv6 socket creation failed: No such file or directory
  • Solution: Edit "/etc/exim4/update-exim4.conf.conf" so that it has dc_local_interfaces='127.0.0.1' instead of dc_local_interfaces='127.0.0.1 ; ::'
  • Error: ALERT: exim paniclog /var/log/exim4/paniclog has non-zero size
  • Solution: rm -rf /var/log/exim4/paniclog

Kernel

  • Error: Make error 137 while compiling vmlinux.o
  • Solution: Activate/make a swap partition


plymouth

  • Error: You are receiving this error message as the new udevd in Ubuntu Lucid no longer supports mounting its own /dev mount point.
  • Solution:
    • Edit your fstab and add:
dev /dev tmpfs rw 0 0
    • Add noplymouth nosplash to your kernel options in /etc/kboot.conf. Example:
ubuntu=/boot/vmlinux root=/dev/ps3dd1 video=ps3fb:mode:133 noplymouth nosplash

Enabling 7th SPU with the latest Linux kernel

Add the following boot parameter to your kboot entry:

spu_base.enumerate_shared=1

To disable it at boot time again, set it to 0.

Attention: Enabling 7th SPU on Linux will make most of SS services unusable because they use the 7th SPU !!!

Screenshot of OpenCL running on 7spu


Alternate precompiled Debian kernels

Origin: https://github.com/DirtyJerz/PS3-Debian-Kernels

install: dpkg -i ./*.deb
modify kboot.conf as needed
that is all.




FreeBSD OtherOS++

FreeBSD can be run on PS3 Slim models from HDD with OtherOS++.

All the freebsd related files should be available here: http://gitbrew.org/~glevand/ps3/freebsd/

Cross-Compiling

You can skip this step and use my precompiled FreeBSD world and kernel: [1] [2] [[3]]

You need a running FreeBSD system to cross-compile your PS3 FreeBSD world and kernel, you don't need a PS3 for that, it may be a different architecture. Once this step is done and you have a running FreeBSD system on your PS3 , you can build FreeBSD world and kernel on PS3 itself.

# git clone git://git.gitbrew.org/ps3/ps3freebsd/freebsd.git
# cd freebsd
# make buildworld buildkernel installkernel installworld distribution TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3 DESTDIR=$HOME/ps3_world

When it's finished then you will have a complete FreeBSD world with kernel in directory $HOME/ps3_world.

Rebuilding Loader

If you want to recompile ONLY FreeBSD loader then after you finished compiling FreeBSD world and kernel, do this:

# cd freebsd
# make buildenv TARGET=powerpc TARGET_ARCH=powerpc64
# cd sys/boot
# make all install DESTDIR=$HOME/ps3_world

Rebuilding Kernel

If you want to recompile ONLY FreeBSD kernel then after you finished compiling FreeBSD world and kernel, do this:

# cd freebsd
# make buildkernel TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3
# make installkernel TARGET=powerpc TARGET_ARCH=powerpc64 KERNCONF=PS3 DESTDIR=$HOME/ps3_world

Installation

To install a FreeBSD world on your PS3, you will need a running Linux system first currently. Once i build a LiveCD for PS3 FreeBSD you won't need that anymore. I used Debian to install my FreeBSD on PS3.

First create UFS2 filesystem for your FreeBSD. I assume that there is already a free partition on the HDD of your PS3.

# apt-get install ufsutils
# mkfs.ufs /dev/ps3dd3

Then mount it on Debian and copy your PS3 FreeBSD world to this partition, like this:

# mount -t ufs -o ufstype=ufs2 /dev/ps3dd3 /mnt
# cd /mnt
# tar xvzf /root/ps3_freebsd_world.tar.gz
# cp /root/ps3_freebsd_kernel/kernel /mnt/boot/kernel/
# cp /root/ps3_freebsd_kernel/kernel.symbols /mnt/boot/kernel/
# cd
# umount /mnt

Booting

FreeBSD on PS3 is booted by the FreeBSD loader which can be executed by petitboot with kexec. The FreeBSD loader is built during cross-compiling of the FreeBSD world and kernel or you can use my precompiled version. It supports booting of FreeBSD from HDD. My precompiled version boots a FreeBSD kernel from ps3dd3. The HDD partition from which it boots a FreeBSD kernel is hardcoded, if you want to use another HDD partition then you have to change it in the loader and recompile it.

Store your FreeBSD loader on a Linux partition, i stored mine in Debian in /boot directory, and added a new kboot.conf entry on Linux, like this:

# cp /root/loader-1080x1920.ps3 /boot
# cat /etc/kboot.conf
...
...
...
freebsd_loader_hdd=/boot/loader-1080x1920.ps3
...
...
#

Now you can boot your PS3 FreeBSD. Boot petitboot first and choose FreeBSD loader in CUI.

Once, you have a running PS3 FreeBSD system, you can build FreeBSD world and kernel or compile ports on your PS3 itself.

One of the advantages of FreeBSD on PS3 is write access to the GameOS HDD region and the possibility to create valid GameOS HDD partitions.

Ports

Ports allow us to install many useful programs on your FreeBSD.

Extracting ports:

# cd /root
# fetch ftp://ftp7.freebsd.org/pub/FreeBSD/ports/ports-stable/ports.tar.gz
# cd /usr
# tar xvzf /root/ports.tar.gz

Useful programs you will need first:

  • wget
  • git
  • screen
  • sudo
  • elinks

Live CD

Compiling World

  • Change screen resolution in loader and kernel before compiling
  • Change frame buffer size in kernel if needed
# cd /usr
# git clone git://git.gitbrew.org/ps3/ps3freebsd/freebsd.git src
# cd src
# make buildworld buildkernel installkernel installworld distribution TARGET=powerpc TARGET_ARCH=powerpc64 \
       KERNCONF=PS3 DESTDIR=/root/ps3_world

Compiling Ports

# cd /root/ps3_world/usr
# fetch ftp://ftp7.freebsd.org/pub/FreeBSD/ports/ports-stable/ports.tar.gz
# tar xvzf ports.tar.gz
# mount -t devfs devfs /root/ps3_world/dev
# cp /etc/resolv.conf /root/ps3_world/etc/
# chroot /root/ps3_world /bin/csh
# cd /usr/ports
# cd shells/bash
# make install clean BATCH=yes

Configuring System

/boot/loader.conf

boot_cdrom="YES"

autoboot_delay="-1"

/etc/rc.conf

root_rw_mount="NO"

hostname="freebsd-livecd"

ifconfig_glc0="SYNCDHCP"

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

update_motd="NO"
syslogd_enable="NO"
newsyslog_enable="NO"
cron_enable="NO"
hostid_enable="NO"

sendmail_enable="NONE"
sendmail_submit_enable="NO"
sendmail_outbound_enable="NO"
sendmail_msp_queue_enable="NO"

cleanvar_enable="NO"
crashinfo_enable="NO"
virecover_enable="NO"

/etc/fstab

/dev/cd0        /       cd9660  ro      0       0

Changing Login Shell

# chroot ps3_world
# chsh

Creating ISO Image

  • Exit chroot
# umount /root/ps3_world/dev
# cd ps3_world
# rm -f etc/resolv.conf
# mkisofs -R -l -ldots -allow-lowercase -allow-multidot \
   -V 'PS3 FreeBSD LiveCD' -volset 'PS3 FreeBSD' -hide boot.catalog \
   -o ../freebsd_livecd.iso .

Booting Live CD with OtherOS++

Installing FreeBSD on HDD from Live CD

Links

FreeBSD Handbook: [4]

FreeBSD AvgLiveCD: [5]

FreeBSD LiveCD: [6]

Gitorious - FreeBSD Wiki: [7]

Setting Up A new FreeBSD System: [8]




PS3:FreeBSD Development

  • Get in touch with me if you want to help with FreeBSD development because there are only 2 developers currently working on FreeBSD PS3 support :(

TODO List

  • VUART support in kernel
  • System Manager and AV support in kernel
  • UDF support for BD movies
  • RSX driver
  • Use CAM framework for HDD driver like in Blu-Ray driver
  • FLASH/VFLASH drivers

Links

The Design and Implementation of the FreeBSD SCSI Subsystem: [9]

Writing a CAM SCSI controller driver: [10]

FreeBSD Kernel Reference: [11]

UDF 2.6: [12]

The VFS/VNODE interface in the FreeBSD kernel: [13]