Manual Debian

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(that isn't for chroot alone...)
(Offician Debian port linked)
Line 293: Line 293:
 
This should make X a symlink to Xfbdev.
 
This should make X a symlink to Xfbdev.
  
 +
=Official Debian Port=
 +
 +
An official Debian port based on the FSO image is being created. First information can be found at http://wiki.debian.org/pkg-fso. Early adaptors are welcome.
  
 
[[Category:Distributions]]
 
[[Category:Distributions]]
 
[[Category:Software (non openmoko)]]
 
[[Category:Software (non openmoko)]]
 
[[category:Technical]]
 
[[category:Technical]]

Revision as of 05:06, 9 August 2008

Debian on neo1973

This page is to explain how to run Debian armel port on Openmoko devices. You can do this from scratch, or download a prebuilt file system. The former will take some time, perhaps 2 hours, depending on your internet connection

Contents

Prebuilt Filesystem

Download and extract to an ext2/ext3 formatted filesystem on your SD card:

wget http://rabenfrost.net/debian/debian-armel-xfce.tar.bz2

Note that the above is just a bit too big to fit on a 512MB SD card. A smaller image will soon be provided.

Access via SSH is much the same as under other images using USB Networking, with the user accounts below:

  • root password: openmoko
  • First user and password: openmoko

Note: If you upgrade your your debian and your touchscreen doesn't work any more, you most likely have to adjust /etc/udev/rules.d/50-udev.rules by applying the settings described later in this document for /etc/udev/udev.rules

(Optional) Install Known Good Kernel

This kernel was build by Marcel_M and has some important patches in it such as removed sd debug symbols and build-in ext3 support.

wget http://rabenfrost.net/celtune/uImage-2.6.24+svnr4194-r4165-r3-neo1973.bin
./dfu-util -d 0x1457:0x5119 -a kernel -R -D ./uImage-2.6.24+svnr4194-r4165-r3-neo1973.bin


(Optional) Recompiling Kernel to Add Drivers

(Based on http://lists.openmoko.org/pipermail/support/2008-August/001240.html)

Steps to build the kernel standalone with the "moredrivers" config (to get additional drivers, such as the usb tether drivers that were moved out as kernel modules, compiled directly into the kernel).

 ~ - git clone git://git.openmoko.org/git/kernel.git linux-2.6
 ~ - cd linux-2.6
 ~ - git checkout origin/stable
 ~ - edit ./build to point to your compiler path
 ~ - cp defconfig-2.6.24 .config
 ~ - ./build

That gets you a uImage.bin you can DFU or copy into your SD Card filesystem.

Configure booting from SD/SDHC

Do as proposed here: Booting_from_SD

Note that these instructions are in need a rewrite.

Build your own armel filesystem

(Option 1) debootstrap your rootfs on Debian or Ubuntu host

debootstrap --verbose --arch armel --foreign sid ./armel-chroot http://ftp.de.debian.org/debian/

(option 2) download ready to use armel rootfs

If you don't have debootstrap on your system you can download the results here:

wget http://rabenfrost.net/debian/armel-chroot-first-stage.tar.gz

Prepare SD card

ssh to your neo and format your sd card appropriately. I'm using an 8GB SDHC card here.

NOTE: it might be a good idea not to use ext3. This is because ext3 is a heavily journalising file system and on the                                     
freerunner (sd card) might cause premature death of the card. It is recommened you use ext2 or another similar file       
system. One also will need a vfat or ext2 (only vfat worked for me with the stock u-boot for the freerunner. On  
which to place the kernel to boot off. See the Booting_from_SD If you have not done so already.

fdisk /dev/mmcblk0
We will now create a 8 mb partition for our kernel and another one for the rootfs which will take up all the   
remaining space.
 Command (m for help): d
 Selected partition 1
 Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 p
 Partition number (1-4): 1
 First cylinder (1-983, default 1):
 Using default value 1
 Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M
 Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 p
 Partition number (1-4): 2
 First cylinder (18-983, default 18):
 Using default value 18
 Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):
 Using default value 983
 Command (m for help): w
 The partition table has been altered!
 Calling ioctl() to re-read partition table.
 Syncing disks.
mkfs.vfat /dev/mmcblk0p1

mkfs.ext3 /dev/mmcblk0p2
mount /dev/mmcblk0p2 /media/card

copy the armel chroot to your device by tar'ing it to circumvent symbolic link cycles (https://bugzilla.mindrot.org/show_bug.cgi?id=1059 <= WONTFIX)

tar -C ./armel-chroot/ -c . | ssh root@192.168.0.202 tar -C /media/card -xv

or if you downloaded the archive

cat armel-chroot-first-stage.tar.gz | ssh root@192.168.0.202 tar -C /media/card -xzvf -

Complete debootstrap Process

ssh to your device and execute the following commands (just copypaste everything below)

echo "nameserver 192.168.0.200" > /media/card/etc/resolv.conf
echo "fic-gta01" > /media/card/etc/hostname
echo "127.0.0.1 localhost.localdomain localhost fic-gta01" > /media/card/etc/hosts
echo -e "auto lo\n\
iface lo inet loopback\n\
auto usb0\n\
iface usb0 inet static\n\
    address 192.168.0.202\n\
    netmask 255.255.255.0\n\
    network 192.168.0.0\n\
    gateway 192.168.0.200\n\
    up echo nameserver 192.168.0.200 >/etc/resolv.conf" > /media/card/etc/network/interfaces
echo -e "rootfs  /                ext3    defaults,errors=remount-ro,noatime 0 1\n\
proc    /proc            proc    defaults                           0 0\n\
tmpfs   /etc/network/run tmpfs   defaults,noatime                   0 0\n\
tmpfs   /tmp             tmpfs   defaults,noatime                   0 0\n\
tmpfs   /var/lock        tmpfs   defaults,noatime                   0 0\n\
tmpfs   /var/run         tmpfs   defaults,noatime                   0 0\n\
tmpfs   /var/tmp         tmpfs   defaults,noatime                   0 0" > /media/card/etc/fstab

now chroot into your armel rootfs and finish the install

chroot /media/card
/debootstrap/debootstrap --second-stage

make sure your internal clock is set to the correct date because aptitude will complain if otherwise (does not work on the gta02 at the moment: "Cannot access the Hardware Clock via any known method.")

hwclock --set --date="MM/DD/YY hh:mm:ss"

install openssh so you can login remotely

echo "deb http://ftp.de.debian.org/debian sid main" > /etc/apt/sources.list
aptitude update
aptitude upgrade
aptitude install openssh-server

install and configure locales

aptitude install locales
dpkg-reconfigure locales

install udev to dynamically create /dev

aptitude install udev

set a root password

passwd

create a normal user

adduser <yournamehere>

Get X Running

Now reboot and start Debian. Login with ssh and start configuring xorg:

aptitude install xorg

configure /etc/X11/xorg.conf so that it looks like this:

Section "InputDevice"
       Identifier      "Configured Mouse"
       Driver          "mouse"
       Option          "Device" "/dev/input/mice"
EndSection
Section "Device"
       Identifier      "Configured Video Device"
       Driver          "fbdev"
EndSection
Section "Monitor"
       Identifier      "Configured Monitor"
EndSection
Section "Screen"
       Identifier      "Default Screen"
       Monitor         "Configured Monitor"
EndSection
Section "ServerLayout"
       Identifier      "Default Layout"
       Screen          "Default Screen"
       InputDevice     "Configured Mouse"
EndSection

Start X in the first vt:

startx -- vt1

Get touchscreen working

Install the tslib driver:

aptitude install xserver-xorg-input-tslib

and edit the InputDevice section in your xorg.conf

Section "InputDevice"
       Identifier "Configured Mouse"
       Driver "tslib"
       Option "CorePointer"
       Option "TslibDevice" "/dev/input/event1"
       Option "Protocol" "Auto"
EndSection

calibrate your touchscreen for gta01:

echo -67 36365 -2733100 -48253 -310 45219816 65536 > /etc/pointercal

calibration for the gta02

echo  -67 38667 -4954632 -51172 121 46965312 65536 > /etc/pointercal


Start X and enjoy!

startx -- vt1

Install GDM and xfce4

aptitude install gdm xfce4 xvkbd

Configure gdm so xkvbd will allow you to put in your username and password. simply add this to the end of /etc/gdm/Init/Default before exit 0 so that the three last lines look like this:

fi
sleep 20 && /usr/bin/xvkbd -xdm -compact -geometry 480x210+0+0 &
exit 0

Simply click on the focus button of xvkbd and then on the input box of GDM to input your user name and password there. On each boot gdm should start automatically now.

If you like you can also download a correctly sized Debian wallpaper I generated from the SVG source for 480x640:

wget http://rabenfrost.net/debian/debian-blueish-wallpaper-480x640.png -O /usr/share/images/desktop-base/desktop-background

Clean Up

aptitude clean

Load Additional Kernel Modules

These are for sound, bluetooth and USB. Use the modules archive that fits to your kernel.

wget http://rabenfrost.net/celtune/modules-2.6.24+svnr4194-r4165-r3-neo1973.tgz
tar -xf modules-2.6.24+svnr4194-r4165-r3-neo1973.tgz -C /
depmod -a
echo -e "hci_usb\n\
hidp\n\
ohci-hcd\n\
rfcomm\n\
snd-mixer-oss\n\
snd-pcm-oss\n\
snd-soc-neo1973-wm8753" > /etc/modules

Sonata on neo1973

Enable Sound

Now we turn our Debian into a jukebox!

aptitude install alsa-base
wget http://rabenfrost.net/celtune/alsa_state_files-working.tar.gz
tar -xf alsa_state_files-working.tar.gz -C /etc
alsactl -f /etc/alsa_state_files-working/stereoout.state restore
addgroup openmoko audio

I currently use mpd+sonata - let me know if you know another nice lightweight gtk player. Unfortunately RhythmBox is way too much for the Neo to handle - the MP3 playing stops after 20secs.

Using a keyboard

Using irssi on Debian together with the frogpad to IRC on #neo1973-germany nezza prepared a nice guide for this here: Frogpad

Chroot installation

If you just want to run random debian programs without completely booting to debian you can use the following minimal steps:

on desktop:

sudo debootstrap --arch armel --foreign sid sid
sudo tar cjf sid.tar.bz2 sid
nc -w3 -lp1234 < sid-arm.tar.bz2

on neo:

cd /media/card
nc 192.168.0.200 1234 | tar -x -j -f -
mount -t none -o bind /dev /media/card/sid/dev
mount -t none -o bind /proc /media/card/sid/proc
mount -t none -o bind /sys /media/card/sid/sys
mount -t none -o bind /tmp /media/card/sid/tmp
chroot /media/card/sid /deboostrap/deboostrap --second-stage
cp /etc/resolv.conf /media/card/sid
chroot /media/card/sid apt-get update
chroot /media/card/sid apt-get install mplayer
chroot /media/card/sid mplayer http://relay.slayradio.org:8000/


For X applications / xserver.

Just copy /usr/bin/Xglamo (./Xfbdev) to /usr/bin in debian. Then. add this to your .bashrc export TSLIB_TSDEVICE=/dev/input/event1

Then as root go ln -s /usr/lib/libts-0.0.so.0 /usr/lib/libts-1.0.so.0 Also, do the following: cd /usr/bin && mv X X.orig && ln -s Xfbdev X This should make X a symlink to Xfbdev.

Official Debian Port

An official Debian port based on the FSO image is being created. First information can be found at http://wiki.debian.org/pkg-fso. Early adaptors are welcome.

Personal tools
Debian on neo1973

This page is to explain how to run Debian armel port on Openmoko devices. You can do this from scratch, or download a prebuilt file system. The former will take some time, perhaps 2 hours, depending on your internet connection

Prebuilt Filesystem

Download and extract to an ext2/ext3 formatted filesystem on your SD card:

wget http://rabenfrost.net/debian/debian-armel-xfce.tar.bz2

Note that the above is just a bit too big to fit on a 512MB SD card. A smaller image will soon be provided.

Access via SSH is much the same as under other images using USB Networking, with the user accounts below:

  • root password: openmoko
  • First user and password: openmoko

Note: If you upgrade your your debian and your touchscreen doesn't work any more, you most likely have to adjust /etc/udev/rules.d/50-udev.rules by applying the settings described later in this document for /etc/udev/udev.rules

(Optional) Install Known Good Kernel

This kernel was build by Marcel_M and has some important patches in it such as removed sd debug symbols and build-in ext3 support.

wget http://rabenfrost.net/celtune/uImage-2.6.24+svnr4194-r4165-r3-neo1973.bin
./dfu-util -d 0x1457:0x5119 -a kernel -R -D ./uImage-2.6.24+svnr4194-r4165-r3-neo1973.bin


(Optional) Recompiling Kernel to Add Drivers

(Based on http://lists.openmoko.org/pipermail/support/2008-August/001240.html)

Steps to build the kernel standalone with the "moredrivers" config (to get additional drivers, such as the usb tether drivers that were moved out as kernel modules, compiled directly into the kernel).

 ~ - git clone git://git.openmoko.org/git/kernel.git linux-2.6
 ~ - cd linux-2.6
 ~ - git checkout origin/stable
 ~ - edit ./build to point to your compiler path
 ~ - cp defconfig-2.6.24 .config
 ~ - ./build

That gets you a uImage.bin you can DFU or copy into your SD Card filesystem.

Configure booting from SD/SDHC

Do as proposed here: Booting_from_SD

Note that these instructions are in need a rewrite.

Build your own armel filesystem

(Option 1) debootstrap your rootfs on Debian or Ubuntu host

debootstrap --verbose --arch armel --foreign sid ./armel-chroot http://ftp.de.debian.org/debian/

(option 2) download ready to use armel rootfs

If you don't have debootstrap on your system you can download the results here:

wget http://rabenfrost.net/debian/armel-chroot-first-stage.tar.gz

Prepare SD card

ssh to your neo and format your sd card appropriately. I'm using an 8GB SDHC card here.

NOTE: it might be a good idea not to use ext3. This is because ext3 is a heavily journalising file system and on the                                     
freerunner (sd card) might cause premature death of the card. It is recommened you use ext2 or another similar file       
system. One also will need a vfat or ext2 (only vfat worked for me with the stock u-boot for the freerunner. On  
which to place the kernel to boot off. See the Booting_from_SD If you have not done so already.

fdisk /dev/mmcblk0
We will now create a 8 mb partition for our kernel and another one for the rootfs which will take up all the   
remaining space.
 Command (m for help): d
 Selected partition 1
 Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 p
 Partition number (1-4): 1
 First cylinder (1-983, default 1):
 Using default value 1
 Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M
 Command (m for help): n
 Command action
    e   extended
    p   primary partition (1-4)
 p
 Partition number (1-4): 2
 First cylinder (18-983, default 18):
 Using default value 18
 Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):
 Using default value 983
 Command (m for help): w
 The partition table has been altered!
 Calling ioctl() to re-read partition table.
 Syncing disks.
mkfs.vfat /dev/mmcblk0p1

mkfs.ext3 /dev/mmcblk0p2
mount /dev/mmcblk0p2 /media/card

copy the armel chroot to your device by tar'ing it to circumvent symbolic link cycles (https://bugzilla.mindrot.org/show_bug.cgi?id=1059 <= WONTFIX)

tar -C ./armel-chroot/ -c . | ssh root@192.168.0.202 tar -C /media/card -xv

or if you downloaded the archive

cat armel-chroot-first-stage.tar.gz | ssh root@192.168.0.202 tar -C /media/card -xzvf -

Complete debootstrap Process

ssh to your device and execute the following commands (just copypaste everything below)

echo "nameserver 192.168.0.200" > /media/card/etc/resolv.conf
echo "fic-gta01" > /media/card/etc/hostname
echo "127.0.0.1 localhost.localdomain localhost fic-gta01" > /media/card/etc/hosts
echo -e "auto lo\n\
iface lo inet loopback\n\
auto usb0\n\
iface usb0 inet static\n\
    address 192.168.0.202\n\
    netmask 255.255.255.0\n\
    network 192.168.0.0\n\
    gateway 192.168.0.200\n\
    up echo nameserver 192.168.0.200 >/etc/resolv.conf" > /media/card/etc/network/interfaces
echo -e "rootfs  /                ext3    defaults,errors=remount-ro,noatime 0 1\n\
proc    /proc            proc    defaults                           0 0\n\
tmpfs   /etc/network/run tmpfs   defaults,noatime                   0 0\n\
tmpfs   /tmp             tmpfs   defaults,noatime                   0 0\n\
tmpfs   /var/lock        tmpfs   defaults,noatime                   0 0\n\
tmpfs   /var/run         tmpfs   defaults,noatime                   0 0\n\
tmpfs   /var/tmp         tmpfs   defaults,noatime                   0 0" > /media/card/etc/fstab

now chroot into your armel rootfs and finish the install

chroot /media/card
/debootstrap/debootstrap --second-stage

make sure your internal clock is set to the correct date because aptitude will complain if otherwise (does not work on the gta02 at the moment: "Cannot access the Hardware Clock via any known method.")

hwclock --set --date="MM/DD/YY hh:mm:ss"

install openssh so you can login remotely

echo "deb http://ftp.de.debian.org/debian sid main" > /etc/apt/sources.list
aptitude update
aptitude upgrade
aptitude install openssh-server

install and configure locales

aptitude install locales
dpkg-reconfigure locales

install udev to dynamically create /dev

aptitude install udev

set a root password

passwd

create a normal user

adduser <yournamehere>

Get X Running

Now reboot and start Debian. Login with ssh and start configuring xorg:

aptitude install xorg

configure /etc/X11/xorg.conf so that it looks like this:

Section "InputDevice"
       Identifier      "Configured Mouse"
       Driver          "mouse"
       Option          "Device" "/dev/input/mice"
EndSection
Section "Device"
       Identifier      "Configured Video Device"
       Driver          "fbdev"
EndSection
Section "Monitor"
       Identifier      "Configured Monitor"
EndSection
Section "Screen"
       Identifier      "Default Screen"
       Monitor         "Configured Monitor"
EndSection
Section "ServerLayout"
       Identifier      "Default Layout"
       Screen          "Default Screen"
       InputDevice     "Configured Mouse"
EndSection

Start X in the first vt:

startx -- vt1

Get touchscreen working

Install the tslib driver:

aptitude install xserver-xorg-input-tslib

and edit the InputDevice section in your xorg.conf

Section "InputDevice"
       Identifier "Configured Mouse"
       Driver "tslib"
       Option "CorePointer"
       Option "TslibDevice" "/dev/input/event1"
       Option "Protocol" "Auto"
EndSection

calibrate your touchscreen for gta01:

echo -67 36365 -2733100 -48253 -310 45219816 65536 > /etc/pointercal

calibration for the gta02

echo  -67 38667 -4954632 -51172 121 46965312 65536 > /etc/pointercal


Start X and enjoy!

startx -- vt1

Install GDM and xfce4

aptitude install gdm xfce4 xvkbd

Configure gdm so xkvbd will allow you to put in your username and password. simply add this to the end of /etc/gdm/Init/Default before exit 0 so that the three last lines look like this:

fi
sleep 20 && /usr/bin/xvkbd -xdm -compact -geometry 480x210+0+0 &
exit 0

Simply click on the focus button of xvkbd and then on the input box of GDM to input your user name and password there. On each boot gdm should start automatically now.

If you like you can also download a correctly sized Debian wallpaper I generated from the SVG source for 480x640:

wget http://rabenfrost.net/debian/debian-blueish-wallpaper-480x640.png -O /usr/share/images/desktop-base/desktop-background

Clean Up

aptitude clean

Load Additional Kernel Modules

These are for sound, bluetooth and USB. Use the modules archive that fits to your kernel.

wget http://rabenfrost.net/celtune/modules-2.6.24+svnr4194-r4165-r3-neo1973.tgz
tar -xf modules-2.6.24+svnr4194-r4165-r3-neo1973.tgz -C /
depmod -a
echo -e "hci_usb\n\
hidp\n\
ohci-hcd\n\
rfcomm\n\
snd-mixer-oss\n\
snd-pcm-oss\n\
snd-soc-neo1973-wm8753" > /etc/modules

Sonata on neo1973

Enable Sound

Now we turn our Debian into a jukebox!

aptitude install alsa-base
wget http://rabenfrost.net/celtune/alsa_state_files-working.tar.gz
tar -xf alsa_state_files-working.tar.gz -C /etc
alsactl -f /etc/alsa_state_files-working/stereoout.state restore
addgroup openmoko audio

I currently use mpd+sonata - let me know if you know another nice lightweight gtk player. Unfortunately RhythmBox is way too much for the Neo to handle - the MP3 playing stops after 20secs.

Using a keyboard

Using irssi on Debian together with the frogpad to IRC on #neo1973-germany nezza prepared a nice guide for this here: Frogpad

Chroot installation

If you just want to run random debian programs without completely booting to debian you can use the following minimal steps:

on desktop:

sudo debootstrap --arch armel --foreign sid sid
sudo tar cjf sid.tar.bz2 sid
nc -w3 -lp1234 < sid-arm.tar.bz2

on neo:

cd /media/card
nc 192.168.0.200 1234 | tar -x -j -f -
mount -t none -o bind /dev /media/card/sid/dev
mount -t none -o bind /proc /media/card/sid/proc
mount -t none -o bind /sys /media/card/sid/sys
mount -t none -o bind /tmp /media/card/sid/tmp
chroot /media/card/sid /deboostrap/deboostrap --second-stage
cp /etc/resolv.conf /media/card/sid
chroot /media/card/sid apt-get update
chroot /media/card/sid apt-get install mplayer
chroot /media/card/sid mplayer http://relay.slayradio.org:8000/


For X applications / xserver.

Just copy /usr/bin/Xglamo (./Xfbdev) to /usr/bin in debian. Then. add this to your .bashrc export TSLIB_TSDEVICE=/dev/input/event1

Then as root go ln -s /usr/lib/libts-0.0.so.0 /usr/lib/libts-1.0.so.0 Also, do the following: cd /usr/bin && mv X X.orig && ln -s Xfbdev X This should make X a symlink to Xfbdev.

Official Debian Port

An official Debian port based on the FSO image is being created. First information can be found at http://wiki.debian.org/pkg-fso. Early adaptors are welcome.