[HowTo] Dual Boot Maemo 5 and Android 2.1 Eclair on N900

DJ_Steve and E-Yes of Maemo.org forums managed to install and dualboot Android 2.1 and Maemo 5 OS on their N900. I was able to do it myself on my Nokia N900 and I’m here to share you the steps I followed.

The following steps are basically similar to DJ_Steve’s instructions. I just managed to modify it to help those who are not familiar with UNIX. I want to tell you that I am not too familiar with the said language as well, but I successfully installed the Android OS on my N900.

First off, there are stuffs that you primarily need in order to go through the process.

1. Knowledge of how to flash your device


– This is very important for many reasons. (1) Should you “brick” your device, you should know how to “bring it back to life”; (2) Flashing the Kernel image provided by DJ_Steve is the same with how you flash firmware/eMMC to your device.

2. DJ_Steve’s Android RootFS: http://www.loadsofspace.net/NITDroid-0.0.3-1-Eclair-WiFi.tbz2

This is currently the available RootFS (Root Filesystem) compiled by DJ_Steve. This is the main OS that will be installed into the Linux Partition of your MicroSD card that we will create later.

3. DJ_Steve’s Kernel Image: http://www.loadsofspace.net/zImage-0.0.3

This is a custom kernel provided by DJ_Steve.

4. 1 MicroSD Card

I highly suggest that you format your MicroSD card first. In this way, you will not accidentally flash the Maemo eMMC later during the process of preparing the memory card.

5. Idea how to edit files and run commands via a terminal linux based PC/VM

This is another crucial requirement. This is going to be so easy if you are reading this tutorial via a Linux-based operating system like Ubuntu/Fedora. Otherwise, if you don’t have an installed Linux OS, I suggest that you grab yourself a VMWare Workstation and an Ubuntu Karmic Koala Image, and install it in your PC-running Windows via virtual machine. In that way, you won’t go through the process of repartitioning your hard drive and “physically” install the Linux OS in the new partition. A Linux-based operating system is required to proceed.


1. Install Extras-Devel repository by clicking this, and download and install Bootmenu-n900.

In this way, you  will be able to access installed OS on the available partitions, which we will prepare later by turning on your N900 while the physical keyboard is open.

2. Download DJ_Steve’s latest Android RootFS above using your linux virtual machine/linux os.

It is important that you do this via the Linux operating system and not via the Windows system because the RootFS will be uploaded into the Linux partition of the MicroSD card later.

3. On your Linux OS, mount your microsd via either n900s usb storage or direct via a card reader (probably faster to do latter) then find out the device node assigned to it on you linux system (dmesg will give you easily enough) then run the following (/dev/sdb is the node the microsd shows as on my system):

Mount your MicroSD card either in the Nokia N900’s storage (not recommended) or directly via the card reader (recommended method) then check out the device node of the card on your linux system.

Open ‘Terminal’ and type ‘dmesg’ to check the device node. You would notice that there would be /dev/sdc or related nodes that will appear on the terminal. My 16gb MicroSD card was identified as /dev/sdc. Carefully check the device node, and see to it that the one you identified is not the Phone Memory (if your MicroSD card is IN the Nokia N900).

If you formatted your MicroSD card a while back, it would simply appear as /dev/sdc (no /sdc1, /sdc2/, sdc3, etc). Assuming that this is the case, do the following steps.

[stextbox id=”custom” caption=”Code”]

fdisk /dev/sdc <press return>

o <press return>

n <press return>

p <press return>

1 <press return>

<press return>

+xM <press return> (x is the size of the partition in MB, a formality and not used by android so make it small say 100)

t <press return>

c <press return>

n <press return>

p <press return>

2 <press return>

<press enter>

<press enter>

w <press return>


This process will correct and prepare the partition for the next stage.

4. Create the filesystems in the 2 partitions you just created:

[stextbox id=”custom” caption=”Code”]sudo mkdosfs /dev/sdc1[/stextbox]

This code is to create a filesystem on the first partition recognizable by Windows.

[stextbox id=”custom” caption=”Code”]sudo mke2fs -j /dev/sdc2 -m0[/stextbox]

This code is to create a filesystem on the second partition recognizable by Linux. This is where we shall install the Android RootFs later.

5. The next thing you need to do now is to mount the second partition.

[stextbox id=”custom” caption=”Code”]sudo mount /dev/sdc2 /mnt[/stextbox]

This worked flawlessly on my computer but should you encounter several problems, here are the things that you should do:

[stextbox id=”info”]

If it tells you that you don’t have permission to mount because you are not the owner of /mnt, add ‘-o’ after the /mnt. It should appear like ‘sudo mount /dev/sdc2 /mnt -o’.

If you can’t find any /mnt on your Linux filesystem, just ‘sudo mkdir /mnt’ to create an /mnt folder in the root directory of the filesystem.


6. Remember where you placed DJ_Steve’s Android RootFs and extract it by doing the following commands.

[stextbox id=”custom” caption=”Code”]

cd /mnt

sudo tar xjvvpf ../NITDroid-0.0.3-1-Eclair-WiFi.tbz2


Extraction of the Android filesystem in the mounted partition will take sometime. Afterwhich, unmount the partition by entering the command below:

[stextbox id=”custom” caption=”Code”]sudo umount /mnt[/stextbox]

7. Power off your N900 (if you did all the partitioning process while the MicroSD card is in the N900). Otherwise, insert the MicroSD into your N900 and then power down the device.

8. At this point, you many now turn off the virtual machine running a Linux OS, and return to Windows.

This is optional as you can also do this via the Linux OS (VM or Partition). What is important here is you would be able to flash the kernel provided by DJ_Steve.

9. Boot your n900 into ‘flash’ mode (hold ‘u’ on keyboard as you connect usb cable)

10. Assuming that the ‘zImage’ file is placed where ‘flasher-3.5’ is placed, run the following command to flash the kernel into your device.

[stextbox id=”custom” caption=”Code”]flasher-3.5 –set-rd-flags=no-ext-wd,no-lifeguard-reset –enable-rd-mode -f -k zImage-0.0.3[/stextbox] -R

Once you hit return/enter, the device should reboot and return you back to Maemo.


The next steps are crucial in being able to boot Android using Bootmenu-n900, which may be downloaded through Extras-Devel repository. Assuming that you have already installed Bootmenu, SSH to your N900’s filesystem and go to /etc/bootmenu.d/. Create a file named ‘android.ext.item’ in the bootmenu.d folder and edit the content of the file.

‘android.ext.item’ should have the content similar to this:

ITEM_NAME=”Android (external SD, partition 2)”
ITEM_MODULES=”mbcache jbd ext3 fat vfat”

You may also do this via your N900 Xterminal. Just follow this method .

Here’s DJ_Steve’s video tutorial so you can follow what he and I did to successfully put Android in your phone.

Part 1:


Part 2:


Now that everything’s all set, power down your N900, slide out its keyboard and power on the device back again. At this point, you will notice that the boomenu will execute and will allow you to select 2 choices of OS – one for Maemo and other one for Android.

For those of who are interested on the progress of this project, you may also look at NitDroid V2 forum discussions here. Don’t forget to support DJ_Steve, by click this. Currently, the compiled Android OS for N900 isn’t complete as it doesn’t have any phone features, sound, bluetooth and accelerometer.

If you have any questions, feel free to drop your comments below. If you know how to simplify the steps, please write it down on the comments section as well.

Giancarlo Viterbo
Giancarlo Viterbo is a Filipino Technology Journalist, blogger and Editor of GadgetPilipinas.net, He is also a Geek, Dad and a Husband. He knows a lot about washing the dishes, doing some errands and following instructions from his boss on his day job. Follow him on twitter: @gianviterbo and @gadgetpilipinas.
Giancarlo Viterbo

Latest posts by Giancarlo Viterbo (see all)