Professional Documents
Culture Documents
https://wiki.ubuntu.com/ARM/n900
TODO
• get kernel in the archives
• look into flash-kernel package
<persia> It's the pile of scripts that hook into kernel postinst and
put the kernel somewhere useful to boot.
<persia> Interesting bits are ./flash-kernel and ./debian/flash-
kernel-installer.postinst
Getting started
• Download latest kubuntu-mobile image http://cdimage.ubuntu.com/kubuntu-
mobile/daily-preinstalled/current/
• fsck.ext3 the first partition (the one with the image on it)
• mount the first microsd partition where you want
• Enter it as chroot (you'll need to install qemu-arm-static and copy it from
/usr/sbin to the partition)
• Set a nameserver (e.g. echo "nameserver 8.8.8.8" >> /etc/resolv.conf)
• Add a new user to the system and ensure the user is member of the admin
and sudo groups
• You should install openssh-server very much
UBoot
• Enable the maemo.org extras-devel repository in n900,
see http://wiki.maemo.org/Extras-devel
• Install the 'uboot-pr13' package with apt-get install or from 'System' section
• Verify it's installed by restarting your N900. A penguin should show up at
startup and U-boot will be mentioned, let it time out and boot into Maemo.
• Place a uImage on the 3rd partition, when uboot times out it will look there
for the uImage and if found look for the OS on partition 1 (i.e. exactly our
setup).
• To boot to maemo execute 'run noloboot' in the uboot prompt
New uImage
• To create a new uImage you will need the target kernel's vmlinuz file
(usually to be found in /boot)
• Please note that you will have to use a full qualified file name for vmlinuz if
you have more than one in the PWD
Flasher Boot
This method is based on the Meego instructions
from http://meego.com/devices/handset/installing-meego-nokia-n900 and starts the
Meego kernel.
• cp /mnt/boot/* /where/you/mounted/boot/
• cp /mnt/lib/modules/2.6.35.3-10.3-n900 /where/you/mounted/lib/modules/
• Additionally you want to replace your usb networking init with nokia-usb-
networking from meego, as theirs is actually working
After Boot
• for usb control you should make sure that the interface is up on mobile
(modprobe g_nokia && ifconfig usb0 192.168.2.16 up) and
followhttp://wiki.meego.com/ARM/N900/Tips_and_Tricks/N900_USB_Networki
ng mind that there is instructions are silly and that you need to make sure
your udev does not contain cdc_ether but cdc_eem, after that you should be
able to connect to the n900 (given that your own usb0 is also up, which
should be handled by nm)
auto usb0
iface usb0 inet static
address 192.168.2.16
netmask 255.255.255.0
gateway 192.168.2.14
up route del default
up route add default gw 192.168.2.14
• Note: using .16 is key, otherwise you will get SSH key clashes with maemo
• Since we are using .16 you will need to ensure the iptables route on your
host machine also includes .16 (the meego setup only routes .15)
Performance Tweaks
• rm /usr/bin/nepomuk*; rm /usr/bin/akonadi*
• Remove everything from /usr/share/autostart other than plasma-mobile
• Switch widget style from Oxygen to Plastique
• Switch off desktop effects
• Deactivate man-db updates:
debconf-set-selections <<EOF
man-db man-db/auto-update boolean false
EOF
btrfs
Meego uses btrfs, and since we are using a SD card it makes sense that you convert
your ext3 to btrfs.
Our kernel
• Builds for natty: http://people.ubuntu.com/~apachelogger/mobile/kernel/
Scripts
Setup
For your convenience here is a script. Note that you need to change the 2 first
consts to match your mount path and your git checkout path. The script will copy
the most essential bits into your chroot, install ssh, shoot some pointless packages
in the head, set rendering to raster, deactivate some fat autostart apps and leave
you with creating a user named user (i.e. you just need to set the pw).
MPATH="/media/disk-2"
GITPATH="/home/me/src/git/meego/"
export LANG=C
cp $GITPATH/n900_udev-rules-nokia-n900/*rules $MPATH/etc/udev/rules.d/
cp $GITPATH/n900_nokia-n900-configs/nokia-n900-input-rules.conf
$MPATH/etc/X11/xorg.conf
# comment line?
cp $GITPATH/n900_nokia-n900-configs/*.init $MPATH/etc/init.d/
# should be different path...
mkdir -p $MPATH/lib/kbd/keymaps/arm/qwerty
cp $GITPATH/n900_nokia-n900-configs/nokia-n900-keys.map
$MPATH/lib/kbd/keymaps/arm/qwerty/
echo 'setxkbmap -rules evdev -model nokiarx51 -option
grp:ctrl_shift_toggle -layout us -variant ",qwerty"' >
$MPATH/etc/rc.local
echo 'exit 0' >> $MPATH/etc/rc.local
mkdir -p $MPATH/usr/share/autostart-bak
for f in ; do
mv $MPATH/usr/share/autostart/$f $MPATH/usr/share/autostart-bak/
done
chmod -x $MPATH/usr/bin/akonadi*
chmod -x $MPATH/usr/bin/*akonadi
chmod -x $MPATH/usr/bin/nepo*
chmod -x $MPATH/usr/bin/virtuoso*
CHROOT
This script mounts your mobile install with dev, proc and sys mounted (necessary to
upgrade via chroot). Just call it with the partition device as argument (e.g. ./script.sh
/dev/sdc1)
exit 0
Testing
GLES
Install packages from https://wiki.ubuntu.com/ARM/OMAP/Graphics then you can try
the demo binaries as described on the same page. Note that Qt and probably also
KDELibs and Plasma Mobile need rebuilding for GLES support.
Fixes
/var/lib/dkms/powervr-
omap3/3.01.00.07/build/services4/3rdparty/bufferclass_ti/bc_cat.c:491:
5: error: implicit declaration of function 'omap_rev_lt_3_0'
• DKMS building with our kernel requires 0155.1-omap3-modified-Add-macros-
for-comparing-si-revision.patch which is a reduced version of 0155-omap3-
Add-macros-for-comparing-si-revision.patch from AM35x-OMAP35x-PSP-SDK-
03.00.01.06
GSM
Should be working with ofono,
see http://wiki.maemo.org/User:Jebba/Ofono and http://wiki.maemo.org/User:Jebba/
Fedora