HowTo: Nemo on the Nokia N9

| January 15, 2012 | 14 Replies

I’ve brought you information on MeeGo 1.3 CE aka Nemo for the N950, and told you there was talk about it on the N9. Well, a few weeks ago, I found a guide on how to install it to the N9. With this method, the N9 installs Nemo, without removing the Meego-Harmattan OS. It is the closest thing to dual booting at the moment, and I believe it won’t get much better, as we don’t have MicroSD slots.

Here is a video of Nemo running on the N9

What this tutorial does, is mounts the partitions of your device, that way, user content, base OS, and the drive for Nemo will be separate. This will allow for the flasher to flash the Nemo kernel in a different section to the Harmattan one. Since Nemo is still pre-alpha, there are several key telephony issues. With this, Harmattan will boot by default every time. To boot Nemo, a tethered method is used.

The files you will need can be found here and here.

WARNING: This method will most likely void any warranty. Since you are tinkering with some key boot elements of the N9, simple mistakes can be harmful and may cause your device to get bricked. Although this has been tested, there is no guarantee it will work. Everything you do from here-in is at your own risk.

NB: These instructions are based of using a Linux system. If you are running windows, I am not sure if it will work. Theoretically, as long as all components are present, it should. Again, no guarantee.

You will also need to have parted fatresize e2fsprogs tar qemu-user-static util-linux installed. You can get this by using apt-get install parted fatresize e2fsprogs tar qemu-user-static util-linux on your linux machine.

Using the first link, download;

  • vmlinuz-
  • initrd.img-rescue-
  • kernel-adaptation-n950-bootloader-
  • init
  • nemo-handset-armv7hl-n950-testing-0.20111120.1.CE.2011-11-24.1.tar.bz2

In the second link, download the Harmattan flasher.

Here is the breakdown of steps.

== Nemo Installation ==

1. Unplug the usb cable from your phone.
 2. Turn your phone off.
 3. Load the N950 MeeGo kernel and N950 MeeGo rescue initrd using flasher:
  $ sudo flasher --load -k vmlinuz- -n initrd.img-rescue- --boot
 4. Insert the usb cable.
 5. Wait about minute until a new USB mass storage decice appears on the host.
    You should now have three partitions: /dev/sdX1 with is MyDocs, /dev/sdX2
    which is MeeGo 1.2 Harmattan rootfs, and /dev/sdX3 which is the MeeGo 1.2
    Harmattan home directory.
 6. Please verify that the three partions above are the same as on my phone,
    as the following steps WILL brick your phone if they aren't...
 7. Start parted and verify that it finds all three partitions:
  $ sudo parted /dev/sdX
  (parted) unit s
  (parted) print
 8. On my phone, parted didn't recognize the second partition. If you have the
    same problem, recreate it between (end of "1" + 1) and (start of "3" - 1):
  (parted) mkpart
  Partition type?  primary/extended? primary
  File system type?  [ext2]? ext4
  Start? 112672768s
  End? 121061375s
 9. Resize the MyDocs partition to leave at least 2 GiB for Nemo Mobile. For
    good performance the new partition should start on a whole multiple of
    8 MiB, or 16384 sectors, which means that the MyDocs partition should end
    on sector (N * 16384 - 1):
  (parted) resize 1 1024s 95895551s
10. Create a new partition between (end of "1" + 1) and (start of "2" - 1):
  (parted) print
  (parted) mkpart
  Partition type?  primary/extended? primary
  File system type?  [ext2]? ext4
  Start? 95895552s
  End? 112672767s
11. Quit parted:
  (parted) quit
12. Create a new file system on the new partition:
  $ sudo mkfs.ext4 /dev/sdX4 -E discard -G 32 -L nemo-rootfs -O ^huge_file
  $ sudo tune2fs -E mount_opts=journal_checksum -o user_xattr,acl,discard /dev/sdX4
13. Mount the newly created filesystem:
  $ mkdir rootfs
  $ sudo mount -t ext4 /dev/sdX4 rootfs
14. Unpack the Nemo Mobile N950 image:
  $ sudo tar --numeric-owner -xf nemo-handset-armv7hl-n950-testing-0.20111120.1.CE.2011-11-24.1.tar.bz2 -C rootfs
15. Prepare the rootfs for use as a chroot:
  $ sudo cp /usr/bin/qemu-arm-static rootfs/usr/bin/
  $ sudo cp /etc/resolv.conf rootfs/etc/
  $ sudo mount -t proc proc rootfs/proc
  $ sudo mount -t sysfs sysfs rootfs/sys
  $ sudo mount --bind /dev rootfs/dev
16. Install the MeeGo kernel package inside the chroot:
  $ cp kernel-adaptation-n950-bootloader- rootfs/tmp/
  $ sudo chroot rootfs rpm --install --nodeps /tmp/kernel-adaptation-n950-bootloader-
  $ rm rootfs/tmp/kernel-adaptation-n950-bootloader-
17. Unmount the rootfs:
  $ sudo umount rootfs/{dev,sys,proc}
  $ sudo umount rootfs
  $ rmdir rootfs
18. Unplug the usb cable from your phone.

 == Initrd Creation ==

 1. Copy the rescue initrd to a tmpfs:
  $ mkdir initrd.rescue initrd
  $ sudo mount -t cramfs -o loop initrd.img-rescue- initrd.rescue
  $ sudo mount -t tmpfs -o size=4m,mode=0775 tmpfs initrd
  $ sudo cp -a initrd.rescue/* initrd
  $ sudo umount initrd.rescue
  $ rmdir initrd.rescue
 2. Replace the rescure init script with Nemo Mobile N9 initrd init script:
  $ sudo cp init initrd/sbin/init
 3. Optionally remove the kernel modules from the initrd, as we don't need them:
  $ sudo rm -r initrd/lib/modules/
 4. Create the initrd image:
  $ sudo mkfs.cramfs -b 4096 -n meego-initrd initrd initrd.img-nemo-
 5. Unmount the tmpfs:
  $ sudo umount initrd
  $ rmdir initrd

== Device Booting ==

 1. Unplug the usb cable from your phone.
 2. Turn your phone off.
 3. Load the N950 MeeGo kernel and Nemo Mobile N9 initrd using flasher:
  $ sudo flasher --load -k vmlinuz- -n initrd.img-nemo- --boot
 4. Insert the usb cable.
 5. Wait several minutes while Nemo Mobile boots.


Category: How to:, MeeGo, Nokia, Nseries, Video

About the Author ()

Hi! My name is Michael. I currently live in Sydney, working on all things Digital Marketing. I have a real passion for the latest technology and I'm a real Nokia buff! My aim is to keep those of you, like myself, updated with the latest in what's going on in the Nokia World. Get in touch on Twitter via @MFaroTusino, or even simply drop me an email at mike.mnb[at] or tips[at]