Mamona
Table of Contents
Work in Progress
The objective of Mamona Project is to offer a completely open source alternative/experimental SDK package and flash image generation process for the Maemo Platform based in sandbox techniques.
If you want to know more about Mamona you should read it: Mamona.odp. This was made and presented at Bossa conference by EPx (Elvis Pfutzenreuter)
If you have any doubt please read this FAQ or contact directly the Mamona Developers.
Try Mamona
Mamona is yet in its first beta version, but you can already Try It?.
At this first public version all that you can do is try the debootstrap script installation and the chroot running all over qemu.
For us this first version is very important because it was a proof of concept that we can use OpenEmbedded to easily build .deb packages and setup it in our repository.
Unfortunately for a common user it is not useful yet, but you can try to install and see how easy and modular it is.
OpenEmbedded
Mamona uses OpenEmbedded (OE - http://www.openembedded.org/) that is a great build system.
There are at least 4 good reasons to use openembedded:
Using OE, we build the .deb packages that we add to our mamona repository where you can easily download and install using a debootstrap script.
The Mamona Project Trac
Objectives
The objective of Mamona Project is to offer an alternative/experimental SDK package and flash image generation process for the Maemo Platform based in sandbox techniques.
Project details
Open Embedded Evaluation
Start Date: 15/03/07
End Date: 28/03/07
We changed Mamona to use OpenEmbedded (OE - http://www.openembedded.org/) that is a great build system.
There are at least 4 good reasons to use OpenEmbedded:
- OE uses bitbake to build the packages. BitBake is a simple tool derived from Portage for the execution of tasks(a bbclass file). Since these bbclass files can be coded in shell script or python it is a powerfull tool to easily build packages and test them before include in our main repository.
- It is very easy to code a package description used by a bbclass to build the package and OE already has a lot of package descriptions.
- Community interaction - OE has a great and active community.
- Completely Open Source.
Our plan is to use OE as a build system to build .deb packages and then setup a repository with these packages. Then, using a debootstrap script, the final user will be able to easily install the Mamona.
Build System (OE)
Configuration Files
Start Date: 01/01/07
End Date: 29/06/07
We need to provide some configurations files to have a real distribution being generated by OE:
- build/conf/local.conf: A local file that describe all configuration necessary by bitbake build the files correctly to our distribution, like directories, distribution, machine and the tasks that will be executed.
- org.oe.dev/conf/distro/mamona.conf: This file describe all main options of Mamona distribution like name, target options and preferred versions of softwares that will be packaged.
- org.oe.dev/conf/machines/nokia770.conf: This file already exists and it was provided by OE team. This file contains the specifics of nokia770 device.
- org.oe.dev/conf/machines/nokia800.conf: This file already exists and it was provided by OE team. This file contains the specifics of nokia800 device.
Packages
or.oe.dev/packages/
task-mamona-base
Start Date: 15/02/07
End Date: 29/06/07
- Create a list of all candidate packages
- Define wich packages will be part of the Mamona Base
- Building and inclusion of the package in the repository
| apt | 0.6.46.2-r1 | libstdc++6 (>= 4.1.1), libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| base-files | 3.0.14-r64 | |
| base-passwd | 3.5.9-r2 | libc6 (>= 2.5) |
| bash | 3.2-r1 | ncurses (>= 5.4), libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| binutils | 2.17.50.0.5-r1 | libgcc1 (>= 4.1.1), libc6 (>= 2.5) |
| binutils-symlinks | 2.17.50.0.5-r1 | binutils |
| busybox | 1.2.1-r11 | update-rc.d, libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| bzip2 | 1.0.2-r1 | libc6 (>= 2.5) |
| coreutils | 5.3.0-r1 | libgcc1 (>= 4.1.1), libc6 (>= 2.5) |
| dpkg | 1.13.22-r4 | libc6 (>= 2.5), libz1 (>= 1.2.3), bzip2 (>= 1.0.2) |
| e2fsprogs | 1.38-r8 | e2fsprogs-blkid, e2fsprogs-uuidgen, e2fsprogs-badblocks, libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| e2fsprogs-badblocks | 1.38-r8 | libgcc1 (>= 4.1.1), libc6 (>= 2.5) |
| e2fsprogs-blkid | 1.38-r8 | libc6 (>= 2.5) |
| e2fsprogs-uuidgen | 1.38-r8 | libc6 (>= 2.5) |
| file | 4.20-r0 | libz1 (>= 1.2.3), libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| gawk | 3.1.4-r3 | gawk-common, libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| gawk-common | 3.1.4-r3 | libc6 (>= 2.5) |
| libc6 | 2.5-r5 | |
| libgcc1 | 4.1.1-r12 | libc6 (>= 2.5) |
| libperl5 | 5.8.7-r22 | libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| libstdc++6 | 4.1.1-r12 | libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| libvolume-id0 | 092-r16 | update-rc.d, libc6 (>= 2.5) |
| libz1 | 1.2.3-r2 | libc6 (>= 2.5) |
| ncurses | 5.4-r8 | libc6 (>= 2.5) |
| perl | 5.8.7-r22 | libperl5 (>= 5.8.7), libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| perl-module-base | 5.8.7-r22 | perl-module-strict, perl-module-vars, perl |
| perl-module-carp | 5.8.7-r22 | perl-module-exporter, perl |
| perl-module-exporter | 5.8.7-r22 | perl |
| perl-module-strict | 5.8.7-r22 | perl |
| perl-module-vars | 5.8.7-r22 | perl-module-strict, perl-module-warnings-register, perl |
| perl-module-warnings | 5.8.7-r22 | perl-module-carp, perl |
| perl-module-warnings-register | 5.8.7-r22 | perl-module-warnings, perl |
| procps | 3.2.7-r5 | libgcc1 (>= 4.1.1), libc6 (>= 2.5), ncurses (>= 5.4) |
| sed | 4.1.2-r1 | libc6 (>= 2.5) |
| sysvinit | 2.86-r34 | sysvinit-inittab, libc6 (>= 2.5) |
| sysvinit-inittab | 2.86-r34 | |
| tar | 1.13.93-r1 | libc6 (>= 2.5), libgcc1 (>= 4.1.1) |
| udev | 092-r16 | update-rc.d, libc6 (>= 2.5), libvolume-id0 (>= 092) |
| update-alternatives-dpkg | 1.13.22-r0 | perl, dpkg |
| update-rc.d | 0.7-r0 | |
| util-linux | 2.12r-r10 | util-linux-umount, util-linux-swaponoff, util-linux-losetup, ncurses (>= 5.4), libc6 (>= 2.5), libgcc1 (>= 4.1.1), libz1 (>= 1.2.3) |
| util-linux-losetup | 2.12r-r10 | libc6 (>= 2.5) |
| util-linux-swaponoff | 2.12r-r10 | libc6 (>= 2.5) |
| util-linux-umount | 2.12r-r10 | libc6 (>= 2.5) |
task-mamona-all
Start Date: 02/07/07
End Date: 31/12/07
After we got our mamona base we will build all other packages to have a full and stable repository of mamona.
classes
A class is a bbclass that was already mentioned before. A class can be coded in shell script and python.
Debian support on OE
The debian support on OE already exists but it is not stable yet.
package_deb.bbclass: This file is responsible for .deb packages generation. We need to improve this file to generate good and stable .deb packages.
Tests
There are some bbclasses files that checks for sanity of a package, but we need more. We want to code a test to test like 'katie' from debian. It takes a clean debootstrap of a base system and try to install the just built package verifying, this way, if all dependencies are correctly satisfied.
Repository
Start Date: 01/03/07
End Date: 03/03/07
We are using the reprepro tool to manage this repository. The reprepro needs a configuration file that we have already coded. It is already in our svn.
qemu
Start Date: 01/03/07
End Date: 12/03/07
Actually these dates refers to the initial setup to have a stable qemu supporting ARM EABI, but this is a constant work because we need to following the qemu development and apply some community's patches.
Our team has already found a bug in qemu arm implementation and fixed it submitting patch to qemu team that was well accepted.
Unfortunately, because legal restrictions qemu does not support armv6 yet. The codesorucery has already implemented this EABI version 6 support but they cannot publish it because ARM industry legal restrictions.
Deployment
There are 3 ways of deployment:
- Debootstrap: a debootstrap script where the user can easily execute the debootstrap command getting a stable mamona completely installed in his computer.
- SBox rootstrap: a rootstrap to use mamona with sbox.
- Fiasco Image: A Image to flash the device.
Alternatives to proprietary software
Since mamona intends to be complete open source, we need to (at least) try to figure out how to run mamona on device without use any proprietary software.
Documentation
Development Process
Developer's Manual
All OpenEmbedded and Bitbake documentation can be found at: http://www.openembedded.org/wiki/MainPage
MamonaSetup?: A Mamona's developer must follow this instructions to setup the environment to start to build packages using OE
