Maemo on BeagleBoard
maemo 5 alpha Status
The maemo 5 alpha release is already much more than the pre-alpha2 release was. Now it is possible to get an understanding of what the Fremantle UI is roughly going to be like. Also the APIs needed for application development are included, so you can start creating your maemo 5 applications today.
This project now offers a similar environment that was available with the pre-alpha2 release. I thought I'd release the instructions already now, although there's much room for tweaking to make the image boot like a real device instead of an SDK environment.
The provided kernel is the maemo 5 alpha kernel 2.6.28 plus a sizeable patch that re-implements the OMAP display subsystem.
The boot-up is not entirely stable and often the first boot hangs
after printing out
You'll be able to login to the system via the serial console. After that the X-server and the Hildon desktop can be started manually as before.
Because the image creation requires installing some closed binaries released with the SDK a full rootfilesystem cannot be offered. Instead here are instructions on how to create a rootfilesystem in the Scratchbox 1 environment.
To install the maemo 5 alpha on your BeagleBoard, follow these instructions. The files referred to in the following text can be found in http://maemo-beagle.garage.maemo.org/files/maemo5-alpha/.
Follow the SDK install instructions from here http://maemo.org/development/sdks/maemo5_alpha_installation/
Accept the EULA and get access to the closed binary repository here: http://tablets-dev.nokia.com/eula/index.phpMMC partitions
Let's assume that you have created two partitions on the MMC you intend to use with the BeagleBoard. One partition for the uboot and another one for the rootfilesystem. Let's also assume those partitions are mounted to your host in directories /media/uboot and /media/rootfs respectively.Steps
A rootfilesystem creation script is available in the project's files (make_rootfs.sh). This script can be used to create a rootfilesystem from given packages. It will automatically pull all the package dependencies to the configuration.
The script has to be run inside Scratchbox and it will modify
the current target. It is recommended to create a new target
just for this purpose:
# create a new target named 'maemo-beagle' $ sb-conf st maemo-beagle -c cs2007q3-glibc2.5-arm7 \ -d cputransp:perl:debian-etch:doctools:svn:git -t qemu-arm-cvs-m # select the new target $ sb-conf se maemo-beagle # create a directory for building the rootfs [sbox-maemo-beagle: ~/ ] > mkdir rootfs; cd rootfs # download make_rootfs.sh, packages and sources.list files from # http://maemo-beagle.garage.maemo.org/files/maemo5-alpha/ to this # directoryNote: You will need to modify the sources.list file to include the closed binary repository.
# run the rootfs script [sbox-maemo-beagle: ~/rootfs ] > fakeroot ./make_rootfs.sh
If everything goes ok, you should have a tarball
You will need to add the
[sbox-FREMANTLE_ARMEL: ~] > cp /tmp/mkimage /usr/bin # get the kernel source from the sdk repository [sbox-FREMANTLE_ARMEL: ~] > mkdir build; cd build [sbox-FREMANTLE_ARMEL: ~] > apt-get source kernel [sbox-FREMANTLE_ARMEL: ~] > cd kernel-2.6.28 [sbox-FREMANTLE_ARMEL: ~] > cat /tmp/kernel-2.6.28-beaglepatch.diff | patch -p2 [sbox-FREMANTLE_ARMEL: ~] > cp /tmp/maemo-beagle-config .config [sbox-FREMANTLE_ARMEL: ~] > make oldconfig [sbox-FREMANTLE_ARMEL: ~] > make uImage # the uImage will be built to the $PWD/arch/arm/boot/ directory # copy it from there to your MMC's uboot partition [sbox-FREMANTLE_ARMEL: ~] > make modules [sbox-FREMANTLE_ARMEL: ~] > make modules_install # make a tarball of the modules [sbox-FREMANTLE_ARMEL: ~] > fakeroot tar cfz kernel-modules.tgz /lib/modulesPackages
To build packages, just build them normally in the Fremantle arm
target. You can add the maemo-beagle repository to your
The complete repository urls for maemo-beagle are:
# maemo-beagle alpha deb http://maemo-beagle.garage.maemo.org/repository/alpha ./ deb-src http://maemo-beagle.garage.maemo.org/repository/alpha ./ # the maemo 5 alpha repository deb http://repository.maemo.org maemo5.0alpha/sdk free non-free deb-src http://repository.maemo.org maemo5.0alpha/sdk free non-free deb http://repository.maemo.org maemo5.0alpha/tools free non-free deb-src http://repository.maemo.org maemo5.0alpha/tools free non-free # the maemo 5 alpha closed binary repository (MODIFY THIS LINE) deb http://repository.maemo.org/ maemo5.0alpha/<yourtagishere> nokia-binaries
Installing the rootfilesystem
Once you have created the rootfilesystem tarball, it is time to untar it to your MMC.
Note: It is important to untar the rootfilesystem with numeric owner info since otherwise tar will use the uid/gid of your host for certain system services like dbus.
# cd /media/rootfs # sudo tar -x --numeric-owner -f image-rootfs.tgz # sudo tar xfz kernel-modules.tgz To make the device bootable, a couple of patches are needed for the init scripts. In your rootfs root directory do: # cat /tmp/event-diff.patch | sudo patch -p0 # cat /tmp/init-diff.patch | sudo patch -p0 To make the mouse cursor visible, you should rename the transparent cursor directory: # sudo mv usr/share/icons/xcursor-transparent usr/share/icons/xcursor-transparent.bak
Hints and tips