Editing Debian LiveCD

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
[[Category:OtherOS]]
=Introduction=
=Introduction=


* 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.
* 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=
{{Keyboard|content=<syntaxhighlight lang="bash">
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 libncurses5-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
</syntaxhighlight>}}
=Creating Root Filesystem=
{{Keyboard|content=<syntaxhighlight lang="bash">
cd /root/livecd
mksquashfs * ../root.sfs
</syntaxhighlight>}}
=Modifying Root Filesystem=
{{Keyboard|content=<syntaxhighlight lang="bash">
cd /root
unsquashfs root.sfs
cd squashfs-root
# Make your changes
mksquashfs * ../root-changed.sfs
</syntaxhighlight>}}
=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:
* http://gitorious.ps3dev.net/ps3linux/kernel-configs
* http://gitorious.ps3dev.net/ps3linux/kernel-patches-34
* http://gitorious.ps3dev.net/ps3linux/kernel-patches-35
* http://gitorious.ps3dev.net/ps3linux/kernel-patches-36
* http://gitorious.ps3dev.net/ps3linux/livecd
=Initramfs=
See my GIT repo: http://gitorious.ps3dev.net/ps3linux/livecd
==BusyBox==
* 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.
<pre>
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
</pre>
==Creating Image==
{{Keyboard|content=<syntaxhighlight lang="bash">
# Populate initramfs
mkdir initramfs
cd initramfs
mkdir -p bin dev etc lib/modules/3.6.4 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.6.4-build/lib/modules/3.6.4 -name $mod.ko`
    cp $path lib/modules/3.6.4/
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
</syntaxhighlight>}}
=Images=
* vmlinux-3.6.4.xz: http://www.multiupload.nl/D0PYT6HGC0 (MD5 4b5fdb2995fde82e0f6817a7a86fca2c)
* root.sfs: http://www.multiupload.nl/MWDSBR4OJZ (MD5 3ee12e2d351e0bbe1cd7818be23d8973)
* 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/Y084SCQBL3 (MD5 f94b6aec2e5fbbb26f7d466165071469)
* Create '''debianlive''' directory on your USB drive.
* Put vmlinux-3.6.4 (extract xz archive), initramfs.cpio.gz and root.sfs into this directory.
{{Keyboard|content=<syntaxhighlight lang="bash">
$ 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.6.4
$ ls -l /mnt/usb/
-rwxr-xr-x  1 root root      188 Aug 18 17:30 kboot.conf
</syntaxhighlight>}}
* And create kboot.conf in the root directory of your USB drive with this content:
<pre>
debianlive=/debianlive/vmlinux-3.6.4 initrd=/debianlive/initramfs.cpio.gz
</pre>
==CDROM==
(files seem missing)
* initramfs-cdrom.cpio.gz: http://www.multiupload.nl/SA9YK1HFK0 (MD5 f71f8667dc52540136f90a95d7111efc)
* debianlive.iso: http://www.multiupload.nl/TW41UIVAGV (MD5 eeba4fa3428c5d687bada3fd975ea9dd)
* https://www.sendspace.com/file/2negnt (added missing link to debianlive)
* https://mega.nz/#!k1sTXI4a!ANmRDBVYmEdaToauoePNSKvoDl7GXGw0ORNN9ZM0Tfo
* https://www.sendspace.com/file/f8wnpe
* http://uploaded.net/file/vdxmzopu
* https://disk.yandex.com/d/t7o60xrWTVlYqA
<!-- https://www.sendspace.com/file/a3bsty -->
{{Keyboard|content=<syntaxhighlight lang="bash">
mkdir -p iso/debianlive
cp root.sfs initramfs.cpio.gz vmlinux-3.6.4 iso/debianlive
echo "debianlive=/debianlive/vmlinux-3.6.4 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
</syntaxhighlight>}}


=Links=
=Links=
* http://securityfocus.eu/?p=149
{{Linux}}<noinclude>[[Category:Main]]</noinclude>
Please note that all contributions to PS3 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS3 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)