Debian Squeeze

From Joggler
Jump to navigation Jump to search

I assume that you have a working Debian Squeeze on your PC or inside a Virtual Machine (e.g. VirtualBox).

If you have an AMD64 Debian system, you need to either create a i386 chroot (google for schroot and linux32) or install an i386 Debian Squeeze in a Virtual Machine (that's probably easier).

Install scripts for lazy people

If you are fearless and lazy, you can try my new install scripts that will automatically do all of the step below. ;-)

These scripts are in alpha state!
Do not complain if they crash your system!
You have been warned!

http://www.flattermann.net/files/joggler/squeeze/prepare_squeeze_joggler.sh

http://www.flattermann.net/files/joggler/squeeze/squeeze_joggler_chroot_commands.sh

* Download the two scripts
* Make them executable "chmod a+x prepare_squeeze_joggler.sh squeeze_joggler_chroot_commands.sh"
* run "./prepare_squeeze_joggler.sh --usage" to see all options
* run "sudo ./prepare_squeeze_joggler.sh" with all options that you like
* wait while we are debootstrapping, downloading all packages, downloading/patching/compiling/installing the kernel
* Continue at #Prepare_the_USB_stick
* Have fun!

Create a work directory

sudo mkdir -p /opt/joggler

Bootstrap Debian Squeeze

Create an empty bootstrap directory:

sudo mkdir -p /opt/joggler/root
sudo debootstrap --arch=i386 squeeze /opt/joggler/root

If debootstrap is not recognised

apt-get install debootstrap

Chroot

To chroot into the debootstrap dir (your jogger root), do this:

sudo mount proc -t proc /opt/joggler/root/proc
sudo chroot /opt/joggler/root

Install necessary packages

chroot to the directory (see #Chroot above)

Change to /tmp

cd /tmp

Install the apt sources:

wget http://www.flattermann.net/files/joggler/squeeze/sources.list -O /etc/apt/sources.list

Install the repo keys:

wget http://www.debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-keyring_2008.10.16_all.deb
dpkg -i debian-multimedia-keyring_2008.10.16_all.deb
wget http://silicone.homelinux.org/repository/siliconerepositorykey.asc
apt-key add siliconerepositorykey.asc 

Update the apt database

aptitude update

Install the packages for the kernel compilation

aptitude -y install kernel-package

Install xserver 1.6 from unstable (ignore dependency errors for "xserver-xorg-*")

aptitude -y install -t unstable xorg xserver-xorg-input-evtouch xserver-xorg-input-mouse xserver-xorg-input-kbd xserver-xephyr

Keep the xserver at version 1.6:

aptitude hold xserver-common xserver-xephyr

Install lxde (ignore dependency error for "libfam0")

aptitude -y install lxde

Install helper packages

aptitude -y install less wicd initramfs-tools alsa-base ntp openssh-server

Set the timezone

dpkg-reconfigure tzdata

Install the vanilla kernel sources and the patches

chroot to the directory (see above)

cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.33.5.tar.bz2
tar xvjf linux-2.6.33.5.tar.bz2
ln -s linux-2.6.33.5 linux
mkdir patches
cd patches
wget http://adqmisc.googlecode.com/svn/trunk/joggler/joggler-sound-fix-v2.6.33-v3.patch
wget http://adqmisc.googlecode.com/svn/trunk/joggler/joggler-backlight-2.6.32-v1.patch
wget http://adqmisc.googlecode.com/svn/trunk/joggler/joggler-i2c-fix-2.6.32-v1.patch
wget http://stskeeps.subnetmask.net/joggler/linux-2.6.33.2-iegd.patch
wget http://www.flattermann.net/files/joggler/squeeze/joggler-2.6.33.5-with-iegd.config
cd ..
cd linux
patch -p1 < ../patches/joggler-backlight-2.6.32-v1.patch 
patch -p1 < ../patches/joggler-i2c-fix-2.6.32-v1.patch   
patch -p1 < ../patches/joggler-sound-fix-v2.6.33-v3.patch 
patch -p1 < ../patches/linux-2.6.33.2-iegd.patch 
cp ../patches/joggler-2.6.33.5-with-iegd.config .config

You should be ready to compile the kernel now

Compile and install the kernel

chroot to the directory (see above)

cd /usr/src/linux
make-kpkg --initrd kernel_image

This should create a kernel .deb in /usr/src:

ls -al /usr/src
-rw-r--r--  1 root root 7045852 29. Mai 19:53 linux-image-2.6.33.5_2.6.33.5-10.00.Custom_i386.deb

Install the kernel: (That will automatically create the /boot/initrd.img*)

dpkg -i /usr/src/linux-image-2.6.33.5_2.6.33.5-10.00.Custom_i386.deb

Keep the kernel at the current version:

aptitude hold linux-image-2.6.33.5

Install the additional files for IEGD/Xorg

chroot to the directory (see above)

cd /tmp
wget http://www.flattermann.net/files/joggler/squeeze/xorg.conf -O /etc/X11/xorg.conf
wget http://www.flattermann.net/files/joggler/squeeze/42-persistent-input.rules -O /etc/udev/rules.d/42-persistent-input.rules
wget http://jogglerwiki.info/images/3/33/Iegd-deploy.tar.bz2
tar xvjf Iegd-deploy.tar.bz2
cd iegd-deploy
./install-iegd.sh

Setup user account

chroot to the directory (see above)

adduser --add_extra_groups --gecos joggler joggler
adduser joggler haldaemon
adduser joggler powerdev
adduser joggler sudo

Setup a root password as well (or skip this step and use "sudo" later to execute programs as root)

passwd

Activate auto logon

chroot to the directory (see above)

wget http://www.flattermann.net/files/joggler/squeeze/gdm.conf -O /etc/gdm/gdm.conf

Configure Network

Follow the instructions mentioned in Fixing network issues to setup the MAC address and ensure that the wired network interface appears on the joggler.

Install r8168 ethernet driver

Some jogglers (AO2JOGON) contain the Realtek r8169 Ethernet chip, while others (AO2JOGXN) contain r8168. By default we use the r8169 driver, the following instructions describe how to install the r8168 driver:

First, patch the kernel to add the r8168 driver:

cd /usr/src/patches
wget http://www.flattermann.net/files/joggler/squeeze/linux-2.6.33.5-r8168.patch
cd /usr/src/linux
patch -p1 < ../patches/linux-2.6.33.5-r8168.patch

Second, add the r8168 driver to the kernel config:

echo "CONFIG_R8168=m" >> /usr/src/linux/.config

Third, blacklist the r8169 module:

echo "blacklist r8169" >> /etc/modprobe.d/local.conf

In the end, recompile the kernel and install it:

cd /usr/src/linux
make-kpkg --initrd kernel_image
aptitude -y purge linux-2.6.33.5
dpkg -i /usr/src/linux-image-2.6.33.5_2.6.33.5-10.00.Custom_i386.deb
aptitude hold linux-image-2.6.33.5

Note that it is no longer neccesary to downgrade the ethernet driver if using kernel 2.6.34

Prepare the USB stick

Create 2 partitions on the USB stick:

  • partition 1: ~50MB FAT32
  • partition 2: ext3

Unpack http://www.flattermann.net/files/joggler/squeeze/efi.tar.bz2 to partition 1.

Install / Update the Debian System

Now, you are ready to copy the contents of your /opt/joggler/root to partition 2.

I prefer the "rsync" method: (The trailing slashes are important!)

sudo rsync -av --del --exclude=/usr/src/* --exclude=/tmp/* --exclude=/proc/* /opt/joggler/root/ /media/<usbpart2>/

Call this command (from outside of your chroot) whenever you've changed something in your /opt/joggler/root directory.

Kernel upgrade

chroot to the directory (see above)

If you want to compile a new kernel, you should remove the old package first

aptitude purge linux-image-2.6.33.5

After that, follow the instructions from #Compile_and_install_the_kernel.

Additional Software

chroot to the directory (see above)

MythTV frontend

Install MythTV frontend, if you like:

aptitude install mythtv-frontend

I can recommend EasyStroke to control MythTV by gestures:

cd /tmp
wget http://sourceforge.net/projects/easystroke/files/easystroke/0.4.11/easystroke_0.4.11-karmic_i386.deb/download
wget http://mirrors.kernel.org/ubuntu/pool/main/b/boost1.38/libboost-serialization1.38.0_1.38.0-6ubuntu6.1_i386.deb
# Install .debs (you will have missing dependencies)
dpkg -i libboost-serialization1.38.0_1.38.0-6ubuntu6.1_i386.deb easystroke_0.4.11-karmic_i386.deb 
# Fix dependencies
aptitude upgrade

SqueezePlay

Install dependencies: (There are still some deps missing, please add them if you know what is missing...)

aptitude install libsdl1.2debian-alsa

Get the newest .deb from http://downloads.slimdevices.com/nightly/?ver=7.6 and install it

dpkg -i squeezeplay_7.6.*.deb

Get the SqueezePlay skin from here:

http://github.com/3guk/Joggler-Squeezeplayer

http://wiki.github.com/3guk/Joggler-Squeezeplayer/