Manual Debian
From Openmoko
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
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. umount /media/card mkfs.vfat /dev/mmcblk0p1 mkfs.ext3 /dev/mmcblk0p1 mount /dev/mmcblk0p1 /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
Edit /etc/udev/udev.rules as the tslib device is hard-coded for now. search for the input devices section and make the first line look like this:
# input devices KERNEL=="event1", NAME="event0"
and edit the InputDevice section in your xorg.conf
Section "InputDevice" Identifier "Configured Mouse" Driver "tslib" Option "CorePointer" Option "Device" "/dev/input/event1" Option "Protocol" "Auto" EndSection
calibrate your touchscreen for gta01:
echo -67 36365 -2733100 -48253 -310 45219816 65536 > /etc/pointercal
calibration currently does not work for the gta02.
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
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
nezza prepared a nice guide for this here: Frogpad