Debian LiveCD: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
 
(113 intermediate revisions by 7 users not shown)
Line 1: Line 1:
[[Category:OtherOS]]
=Introduction=
=Introduction=


Line 5: Line 7:
=Creating Initial System with debootstrap=
=Creating Initial System with debootstrap=


<pre>
 
{{Keyboard|content=<syntaxhighlight lang="bash">
apt-get install debootstrap
apt-get install debootstrap


Line 11: Line 14:


debootstrap --arch powerpc squeeze /root/livecd http://ftp.us.debian.org/debian
debootstrap --arch powerpc squeeze /root/livecd http://ftp.us.debian.org/debian
</pre>
 
# 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=
=Linux 3 Kernel=


* We need a Linux 3 kernel with overlayfs support so we could create a tmpfs over our read-only base filesystem.
* We need a Linux 3 kernel with overlayfs support so we could create a tmpfs over our read-only base filesystem.
* At the moment overlayfs is not supported on Linux 3.5 so it leave us with Linux 3.4 which doesn't really matter because all my Linux3 drivers are supported on Linux 3.4 just fine.
* Furthermore, we want to compile PS3 HDD driver as module because in this case we can easily change HDD region flags.
* 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://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>

Latest revision as of 19:00, 2 December 2017


Introduction[edit | edit source]

  • 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[edit | edit source]

Type This
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

Creating Root Filesystem[edit | edit source]

Type This
cd /root/livecd
mksquashfs * ../root.sfs

Modifying Root Filesystem[edit | edit source]

Type This
cd /root
unsquashfs root.sfs
cd squashfs-root

# Make your changes

mksquashfs * ../root-changed.sfs

Linux 3 Kernel[edit | edit source]

  • 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:

Initramfs[edit | edit source]

See my GIT repo: http://gitorious.ps3dev.net/ps3linux/livecd

BusyBox[edit | edit source]

  • 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.
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 Image[edit | edit source]

Type This
# 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

Images[edit | edit source]

  • 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[edit | edit source]

  • 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.
Type This
$ 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
  • And create kboot.conf in the root directory of your USB drive with this content:
debianlive=/debianlive/vmlinux-3.6.4 initrd=/debianlive/initramfs.cpio.gz

CDROM[edit | edit source]

(files seem missing)

Type This
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

Links[edit | edit source]