Make your own Debian LiveCD by Glevand (via ps3devwiki.com/wiki/Debian_LiveCD)
Sometimes we need to boot Linux without HDD e.g. if you want to experiment with HDD encryption, enable/disable it without causing damage to your data. For such cases we need a LiveCD which doesn't mount HDD at boot.
Creating Initial System with debootstrap
Code:
apt-get install debootstrap
mkdir livecd
debootstrap --arch powerpc squeeze /root/livecd http://ftp.us.debian.org/debian
# Grab a beer and reverse some PS3 stuff in the meantime :)
# Enter chroot environment
mount -t proc none /root/livecd/proc
mount --rbind /dev /root/livecd/dev
LANG=C chroot /root/livecd /bin/bash
export TERM=xterm-color
echo "debian" > /etc/hostname
dpkg-reconfigure tzdata
# Configure network interfaces
cat /etc/network/interfaces
---
auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-ssid ssid
wpa-psk psk
-EOF-
# Configure APT
cat /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
-EOF-
aptitude update
aptitude install locales
dpkg-reconfigure locales
aptitude install console-data
dpkg-reconfigure console-data
tasksel install standard
aptitude install binutils gcc make git vim openssh-server sudo wireless-tools wpasupplicant libssl-dev libncurse5-dev
aptitude install gcc-spu g++-spu newlib-spu spu-tools
aptitude install parted kpartx cryptsetup libreadline-dev libaio-dev libdevmapper-dev libudev-dev
# Make SSH server start at boot so we could ssh to our LiveCD
update-rc.d ssh defaults
aptitude clean
rm -f /etc/udev/rules.d/70-persistent-net.rules
# exit chroot environment
exit
# Unmount dev and proc
umount /root/livecd/dev/shm
umount /root/livecd/dev/pts
umount /root/livecd/dev
umount /root/livecd/proc Creating Root Filesystem
Code:
cd /root/livecd
mksquashfs * ../root.sfs
Modifying Root Filesystem
Code:
cd /root
unsquashfs root.sfs
cd squashfs-root
# Make your changes
mksquashfs * ../root-changed.sfs
Linux 3 Kernel
We need a Linux 3 kernel with overlayfs support so we could create a tmpfs over our read-only base filesystem.
Furthermore, we want to compile PS3 HDD driver as module because in this case we can easily change HDD region flags.
See my GIT repos:
- gitorious.ps3dev.net/ps3linux/kernel-configs
- gitorious.ps3dev.net/ps3linux/kernel-patches-34
- gitorious.ps3dev.net/ps3linux/kernel-patches-35
- gitorious.ps3dev.net/ps3linux/livecd
- We need a couple of user-space applications to mount filesystems, load kernel modules and so on.
- And make sure you compile BusyBox without any library dependencies.
- I compiled my BusyBox executable on PS3 Linux but you could cross-compile it too but then you need a complete PowerPC toolchain with libc.
Code:
http://busybox.net/downloads/busybox-1.20.1.tar.bz2
tar xvjf busybox-1.20.1.tar.bz2
cd busybox-1.20.1
make menuconfig
make
Creating the Image
Code:
# Populate initramfs
mkdir initramfs
cd initramfs
mkdir -p bin dev etc lib/modules/3.5.3 mnt proc sbin sys usr/bin usr/sbin
cp ~/busybox-1.20.1/busybox bin/
cd bin
ln -sf busybox sh
cd ..
echo 'sda.* 0:6 0660' >> etc/mdev.conf
echo 'sr[0-9] 0:6 0660 @ln -sf $MDEV cdrom' >> etc/mdev.conf
cat >etc/modules <<EOF
> fat
> vfat
> isofs
> crc-ccitt
> crc-itu-t
> lzo_compress
> udf
> squashfs
> overlayfs
> ps3_gelic
> ps3stor_lib
> sg
> ps3rom
> usb-common
> usbcore
> ehci-hcd
> ohci-hcd
> usb-storage
> EOF
for mod in fat vfat isofs crc-ccitt crc-itu-t lzo_compress udf squashfs overlayfs \
ps3_gelic ps3stor_lib sg ps3rom usb-common usbcore ehci-hcd ohci-hcd usb-storage; do
path=`find /home/glevand/linux-3.5.3-build/lib/modules/3.5.3 -name $mod.ko`
cp $path lib/modules/3.5.3/
done
# Create initramfs
find . | cpio -H newc -o > ../initramfs.cpio
cd ..
cat initramfs.cpio | gzip > initramfs.cpio.gz
# Make changes to initramfs
gunzip initramfs.cpio.gz
mkdir initramfs
cd initramfs
cpio -i -d -H newc --no-absolute-filenames < ../initramfs.cpio Images
- vmlinux-3.5.3.xz: http://www.multiupload.nl/0R2TP29KZC (MD5 2da491cd3a213cab41797216ef0a2332)
- root.sfs: http://www.multiupload.nl/ANFAPX646J (MD5 e402b631c8317166367f28785c65ba6c)
- Tools available on the root filesystem: gcc, spu-gcc, spuisofs, spuldrfs, ps3vuart-tools, ps3sed and all my other PS3 Linux drivers. Everything you need to compile and test various PS3 stuff.
- In case someone still hasn't figured it out yet, password for root is root and password for glevand is glevand

- I enabled DHCP on Ethernet.
- You could use WLAN too but for that you have to modify the root filesystem and configure your SSID and PSK in /etc/network/interfaces.
USB
- Your USB drive should be formatted with FAT32 filesystem.
- initramfs-usb.cpio.gz: http://www.multiupload.nl/OW560Y66Y2 (MD5 c8ae892b68dfd7078415a4a52c440f39)
- Create debianlive directory on your USB drive.
- Put vmlinux-3.5.3 (extract xz archive), initramfs.cpio.gz and root.sfs into this directory.
Code:
$ ls -l /mnt/usb/debianlive/
total 257696
-rwxr-xr-x 1 root root 6746154 Aug 18 17:44 initramfs.cpio.gz
-rwxr-xr-x 1 root root 249835520 Aug 18 17:15 root.sfs
-rwxr-xr-x 1 root root 7288832 Aug 18 17:31 vmlinux-3.5.3
$ ls -l /mnt/usb/
-rwxr-xr-x 1 root root 188 Aug 18 17:30 kboot.conf
And create kboot.conf in the root directory of your USB drive with this content:
Code:
debianlive=/debianlive/vmlinux-3.5.3 initrd=/debianlive/initramfs.cpio.gz
CDROM
Code:
mkdir -p iso/debianlive
cp root.sfs initramfs.cpio.gz vmlinux-3.5.3 iso/debianlive
echo "debianlive=/debianlive/vmlinux-3.5.3 initrd=/debianlive/initramfs.cpio.gz" > iso/kboot.conf
cd iso
mkisofs -R -J -l -o ../debianlive.iso .
cd ..
sudo cdrecord -v dev=/dev/sr0 blank=fast
sudo cdrecord -v dev=/dev/sr0 debianlive.iso