[edit] Introduction

Ubiboot is a boot manager for N9(50) devices. Using the example configuration it is fairly easy to hexa-boot the device between Harmattan/Nitdroid/Nemo/Firefox/Ubuntu/Sailfish Operating Systems, and change kernels at will.

Ubiboot is mainly aimed at developers and advanced users, so be warned. The procedures in this guide require understanding of the structure of an *nix filesystem and knowledge to work on a shell prompt (i.e. Terminal/Command Line).

[edit] Benefits of Ubiboot N9

  1. You can have multiple boot Operating Systems, each with multiple optional kernels on the device.
  2. Selecting the boot kernel is quick and easy with the graphical touchscreen menus.
  3. You will not need to flash the device to install and test a new kernel, just copying the kernel and modules to the device is enough.
  4. You have integrated repair/maintanance mode on the device, where you can export all partitions for backup/restore to a PC automatically.
  5. You can telnet and ssh to the device in maintanance mode, to do any desired repair operations. You can transfer backup archives to / from the device via sftp

[edit] Prerequisites

To ensure that most of your efforts are focused on actual Ubiboot installation/setting up of a Hex Boot system, please make sure to fulfill the following prerequisites:

[edit] Flash the device (for a fresh start/clean state)

It is assumed that you have backed up your important files (messages, contacts, pictures, videos, music, etc.) before flashing the device.

TIP: The sequence of flashing commands below combines the usual flashing steps found in the N9 Flashing Wiki, plus actual flashing of the Open-Mode Kernel so that upon first boot, the device will already be in "Open-Mode". This is called Back-to-Back Closedmode/Openmode flashing. If you follow this style of flashing the device, you will no longer need to delete some folders (.accounts/, ./aegis, and ./activesync) for the device to store passwords correctly. The additional benefits of the Back-to-Back flashing is that you get rid of a lot of unstability in the device caused by some parts still being accessed with closed-mode aegis keys.

TIP: If you want to be rid of the "Scary Warranty Warning", which a device displays when booting in Open Mode you have to remove that Before entering open mode.

Flash your device with rootfs, omit the parameter "-R" (which means "reboot")

sudo flasher -F <yourmainfirmware.bin> -f


sudo flasher -F <yourmainfirmware.bin> -F <youremmc.bin> -f

or "Zeroize Method" of flashing, which "wipes" user data and EMMC. Note that this command flashes the eMMC twice and takes many hours to complete the process. You will see a notification/warning of eMMC "unnecessarily being flashed twice") in the Terminal when flashing via this method.

sudo flasher -f -F <yourmainfirmware.bin> --erase-user-data=secure -F <youremmc.bin> --erase-mmc=secure

Next, take care to directly flash the open mode kernel (do NOT boot up, nor pull USB cable, do not wait too long) with

sudo flasher -a <yourmainfirmware.bin> -k zImage_2.6.32.54-openmode_l2fix --flash-only=kernel -f -R

(All credits to jonni/rainisto)

--peterleinchen 16:27, 25 June 2013 (UTC)

[edit] When Not Starting From A Fresh Flash

  1. Open Terminal on the device.
  2. Type the following commands and press Enter after typing each command (NOTE: this will delete all configured Accounts):
disclaimer-cal remove View-openmode
rm -rf /home/user/.accounts/
rm -rf /home/user/.aegis/
rm -rf /home/user/.activesync/

Shut down the device, plug to a USB cable and to a computer, and proceed with flashing the Open-Mode kernel as mentioned above:

sudo flasher -a <yourmainfirmware.bin> -k zImage_2.6.32.54-openmode_l2fix --flash-only=kernel -f -R

Upon first boot, you may set up your Accounts (email, social media accounts, i.e. Facebook etc.) once again.


  1. In MS Windows, just omit the word “sudo” from the command.
  2. In MS Windows, the “zImage_2.6.32.54-openmode_l2fix” file needs to be in the same location as the Flasher Application, FIASCO, and eMMC images. Usually you would have installed the Flasher Application to C:\Program Files\Nokia\Flasher.
  3. For Linux users, usual “best practice” is to save the FIASCO, eMMC, and whatever Kernels at the main directory (/home/yourusername).
  4. "Device Lock Request" should be disabled when you are using Open-Mode.

[edit] Download Needed Files

[edit] Ubiboot Files

Find the latest versions at http://www.swagman.org/juice/ubiboot/. Files are also mirrored at http://juiceme.cloud-7.de/ubiboot/

  1. preinits.tar: this is a compressed file, like Zip (Windows users: use 7zip application). We will extract this later on once this is copied to the device.
  2. zImage_2.6.32.54-openmode_l2fix: this is used for flashing your device to “Open-Mode” (Windows users: save this in the same location as your flasher application and files...usually C:\Program Files\Nokia\Flasher).
  3. zImage- from http://maemo.cloud-7.de/HARM/N9/1.3/openmode-kernel/: this is the “default” or “plain Open-Mode” kernel. Including this to your ubiboot-02 setup is optional.
  4. http://www.swagman.org/juice/ubiboot/ubiboot-02/ubiboot-02_0.3.5_301013.tar or http://juiceme.cloud-7.de/ubiboot/ubiboot-02/ubiboot-02_0.3.5_301013.tar: this is the latest ubiboot archive (v.0.3.5) that contains the files needed for ubiboot. TAR file is a compressed file, like ZIP. After downloading, extract the contents of this file (Windows users: use 7zip application). This compressed file contains 3 files and a checksum file.
    1. ubiboot.conf this is the configuration file that contains all the changeable options and tunables for your boot, including the list of bootable OS'es and kernels. You need to copy this into MyDocs/boot/ directory of your device.
    2. ubiboot-02.menus.cpio: this is the kernel extension file which contains the graphical menu system presented to user on boot. You need to copy this into MyDocs/boot/ directory of your device.
    3. zImage_2.6.32.54-ubiboot-02_301013: This is the ubiboot kernel that you need to flash to your device. (Windows users: save this in the same location as your flasher application and files, usually C:\Program Files\Nokia\Flasher).

You should create the boot folder inside MyDocs before copying the ubiboot.conf and ubiboot-02.menus.cpio to the device.

[edit] NITDroid Files

Find the latest versions at http://downloads.nitdroid.com/e-yes/n9/

  1. nitdroid_n9_jellybean_alpha5.tar.bz2: latest “Jelly Bean” version available as of this writing.
  2. apps2sd_fix_alpha5.tar.bz2: this fix allow apps to install into the SD Card.
  3. zImage: (recommended) this is the “new version” of zImage.pr13, which is tailored for use with ubiboot. IMPORTANT: Rename this to “zImage_e-yes_nitdroid+l2fix” (without the quotes).
  4. zImage.pr13: (not recommended) before Ubiboot was published, this was the latest zImage being used for dual-booting or multi-booting NITDroid.

[edit] Nemo Files

Find the latest versions at http://releases.nemomobile.org/snapshots/images/

  1. nemo-armv7hl-n950-0.20130620.0.1.tar.bz2: this contains the actual Nemo OS image as of this writing.
  2. moslo- this is the MOSLO file needed for flashing when installing Nemo. You may alternatively download this file via the "wget" Terminal Command in Linux, as outlined in the official Nemo Wiki:
wget -r -l1 -nd --no-parent -Amoslo-0.*.rpm http://releases.nemomobile.org/snapshots/repos/hw/ti/omap3/n950-n9/latest/armv7hl/armv7hl/

[edit] FirefoxOS Files

Find the latest version at http://romaxa.info/b2g/b2g_n9_droid_hal_fs.tar.gz

[edit] SailfishOS Files

Find the latest versions at http://n9.araya.su/images/mic_images/

[edit] Using command lines

If you have no idea what are those lines, then skip this chapter and do using the GUI as explained later

you need to install wget (ie: from RzR shared repo)

   sudo flasher-3.12 -a ${bin_file} -k "zImage_2.6.32.54-openmode_l2fix" --flash-only=kernel -f -R
   ssh user@tel # devel-su # /sbin/halt
  ssh user@tel 
   mkdir -p  '/home/user/MyDocs/boot'
   wget http://www.swagman.org/juice/ubiboot/ubiboot-02/ubiboot-02_040613.tar | tar xf -C '/home/user/MyDocs/boot' -
 md5sum /home/user/MyDocs/boot/*
 #5176490dc2184bb5869824c29b1be244  /home/user/MyDocs/boot/ubiboot-02.menus.cpio
 #a1fcf98f77fbd38ef5ad456aee7cc235  /home/user/MyDocs/boot/ubiboot.conf

   devel-su # gain root
 cd /boot
   wget -c http://www.swagman.org/juice/ubiboot/other/zImage_2.6.32.54-openmode_l2fix
   wget -c http://maemo.cloud-7.de/HARM/N9/1.3/openmode-kernel/zImage-
   wget -c http://www.swagman.org/juice/ubiboot/ubiboot-02/zImage_2.6.32.54-ubiboot-02_040613
   wget -c http://downloads.nitdroid.com/e-yes/n9/ubiboot/zImage -O 'zImage_e-yes_nitdroid+l2fix'
   wget -c http://downloads.nitdroid.com/e-yes/n9/zImage.pr13

 md5sum /boot/* | sort
 # 22114bd3cbaa88ee8c49c022f53080a1  /boot/zImage_e-yes_nitdroid+l2fix
 # 35da7f3dc5218be835487d6ec6b9b71e  /boot/zImage-
 # 3f354a2b48a0b571ca32d6082391108a  /boot/zImage.pr13
 # a4d9c7ad4a7721b1aac3130d530644a4  /boot/zImage_2.6.32.54-ubiboot-02_040613
 # b64bc24b96faf6763f5e403eb5c7f528  /boot/zImage_2.6.32.54-openmode_l2fix
 wget -O- http://www.swagman.org/juice/ubiboot/other/preinits.tar  | tar xfv - -C /
 md5sum /sbin/preinit_harmattan /sbin/preinit_nitdroid 
 # 659af796bb8e33977abbfdabd92c11b0  /sbin/preinit_harmattan
 # 2e28b1905ebdc3feb1062a4cb940e25c  /sbin/preinit_nitdroid
  1. devel-su
 mv  /home/nitdroid /home/nitdroid.tmp
 mkdir -p /home/nitdroid
 wget -O- http://downloads.nitdroid.com/e-yes/n9/nitdroid_n9_jellybean_alpha5.tar.bz2  | tar xfj - -C /home/nitdroid 
 echo $?
 wget -O- http://downloads.nitdroid.com/e-yes/n9/apps2sd_fix_alpha5.tar.bz2  | tar xfj - -C /home/nitdroid 
 echo $?

Later :

   # http://releases.nemomobile.org/snapshots/images/0.20130411.1.NEMO.2013-04-26.1/nemo-armv7hl-n950/nemo-armv7hl-n950-0.20130411.1.NEMO.2013-04-26.1.tar.bz2
   # wget -c http://releases.nemomobile.org/releases/0.20130620.0.1/images/nemo-armv7hl-n950/nemo-armv7hl-n950-0.20130620.0.1.tar.bz2
   # wget -c http://releases.nemomobile.org/snapshots/repos/hw/ti/omap3/n950-n9/latest/armv7hl/armv7hl/moslo-

[edit] Prepare the Device

[edit] Enable Developer Mode and Installation of non-store sources

  1. Enable “Allow installations from non-store sources (Settings → Applications → Installations).
  2. Enable “Developer Mode” (Setitngs → Security → Developer mode)...your device will restart. Upon restart, you will now see Terminal being available for use.

[edit] Install and Prepare Filebox and Filebox Root

  1. Install Filebox from Nokia Store on your device.
  2. Install N9 Quick Tweak. Upon installation, run N9 Quick Tweak and enable “Root Filebox” (as of the latest version, this is under Tweak H.
  3. You should now have Filebox Root. Open Filebox Root and navigate to “MyDocs” (usually at first use of Filebox, you are already at “MyDocs”) and create a new folder called “boot” (without the quotes).
  4. In the “Settings” (the gear icon at the lower-right), enable the following:
    • Show root filesystem
    • Show hidden filesystem
    • Show thumbnails

[edit] Moving files using Filebox Root

This section guides you on where to move/copy the files that were downloaded in the Download Needed Files section above.

Place/move/copy the following files inside the newly-created “boot” folder under “MyDocs”:


Next is to move the "zImage..." files.

  1. Go up three (3) levels by pressing the “up” arrow (found at the lower-left of Filebox Root) . You should be at the “root” folder (you can confirm this when you see that the blue banner at the top of Filebox Root shows only a forward-slash “/”).
  2. Find the “/boot” folder...we are looking for the "/boot" under root directory, not the “/home/user/MyDocs/boot” folder (i.e. that we created inside “MyDocs”) and go inside that folder.
  3. Paste the three (or four) "zImage..." files:
zImage- (Optional)

REVIEW/RECAP: These are the locations where the "needed files" are to be moved/pasted/located.

/home/user/MyDocs should contain:


/home/user/MyDocs/boot should contain:


/boot should contain:

zImage (which by now, has been renamed to “zImage_e-yes_nitdroid+l2fix”, without the quotes)
zImage- (Optional)

[edit] Extract preinits.tar, the NITDroid and the FirefoxOS files

NOTE: Terminal should still be open at this point.

Type the following commands in the Terminal and press Enter after typing each command (NOTE: do not change the order of the commands):

devel-su (default password is "rootme", without quotes)
mkdir /home/nitdroid (creates the “nitdroid” directory under the /home directory)
cd /home/user/MyDocs (navigates to the directory where the NITDroid image is located)
tar -xvf preinits.tar -C / (extracts preinits to /sbin directory of the device)
tar xjvf nitdroid_n9_jellybean_alpha5.tar.bz2 -C /home/nitdroid (extracts the NITDroid image to /home/nitdroid)
tar xjvf apps2sd_fix_alpha5.tar.bz2 -C /home/nitdroid (extracts the Apps2SD fix to /home/nitdroid)
mkdir /home/firefox_os (creates the “firefox_os” directory under the /home directory)
tar xvzf b2g_n9_droid_hal_fs.tar.gz -C /home/firefox_os (extracts the FirefoxOS image to /home/firefox_os)

[edit] Install Nemo Mobile OS

At this point, it is highly recommended that you are using a Linux-based Operating System (Ubuntu will work fine). It is still okay to continue using MS Windows, however in order to use the "maintenance mode" feature of Ubiboot, such as viewing the contents of partitions via a File Manager you will need to install a 3rd party application that allows you to view the contents of Linux-based Filesystems. Note that for installing Nemo, this guide focuses on using Linux to ensure conformity of a default, fool-proof procedure of a quadru-boot system with Harmattan, NITDroid, FirefoxOS, and Nemo.

In Linux, enter the following commands as per the Nemo Wiki Page:

wget -r -l1 -nd --no-parent -Amoslo-0.*.rpm http://releases.nemomobile.org/snapshots/repos/hw/ti/omap3/n950-n9/latest/armv7hl/armv7hl/
rpm2cpio moslo-*.armv7hl.rpm | cpio -vidu
sudo flasher -k usr/share/moslo/zImage-moslo -n usr/share/moslo/initrd-moslo -l -b

Alternative: for the "wget" command above, you may download the MOSLO directly as I have mentioned in the “Download Needed Files” section above. Then you may proceed with the second and third commands.

MS Windows users: you can install 7-Zip and use that to go inside the moslo- file. Keep going one directory deeper until you find two files:

  • initrd-moslo
  • zImage-moslo

Next, extract those files and place them in the same directory as the Flasher application. Once done, the command will be now modified as follows:

flasher.exe -k zImage-moslo -n initrd-moslo -l -b

  1. The Terminal will give you a message that it is waiting for a suitable USB device. Make sure your device is turned off and plug it to your computer via the USB cable. The flashing procedure should finish in a few seconds.
  2. Keep the device plugged. What happens next is that the N9 is being repartitioned for Nemo (on the device, you will see some green text/writing on the screen; just wait for it to finish) , you'll see the led blinking for 10min or so.
  3. You will also notice that the File Manager of your Linux Distribution will open and will show a folder named “Alt_OS”. This is the newly-created partition.
  4. Next, we will extract the Nemo image into the newly-created partition. Enter this command in the Terminal (for Linux only):
sudo tar --numeric-owner -xf nemo-handset-armv7hl-n950-*.tar.bz2 -C /media/Alt_OS/

Now, unplug the device from the USB Cable. The screen should tell you to "push Volume Up" to boot into Harmattan, or "push Volume Down" to boot into Nemo.


  1. Sometimes, the name of the partition is Alt_OS_, with a single underline/underscores after “S” instead of the default Alt_OS (without underscore). Sometimes it has two (2) underlines/underscores. In my case, it had three (3) underlines/underscores.
  2. Sometimes, the path of the Alt_OS partition is /media/yourusername/Alt_OS.
  3. To be sure, before extracting the Nemo image, you may want to check the correct name by entering the Linux command of “lsblk” (without the quotes).
  4. As a matter of “best practice” it is recommended to have a File Manager open and navigating to "Alt_OS" during the extraction command to verify that the files are being extracted to the correct location.
  5. By experience, booting the device at this stage will result to either a reboot loop or the device not turning on at all. Sometimes, upon unplugging of the USB cable as mentioned above and selecting "Volume Down" to boot into Nemo, nothing happens (device is unresponsive and stays black). It is highly recommend not to turn on the device until you complete the setup/process from this point onward.

[edit] Flash the Device with Ubiboot-02

NOTE: for this step, the device should be turned off.

Flash the ubiboot-02 Kernel with the command below. Replace <yourmainfirmware.bin> with the filename of your N9 FIASCO image if you have renamed it differently.

sudo flasher -a <yourmainfirmware.bin> -k zImage_2.6.32.54-ubiboot-02_301013 --flash-only=kernel -f -R

Once the device reboots, keep the USB cable plugged in to enter “maintenance mode”. You will notice that the File Manager of your Linux Distribution will open and will mount/show all the partitions:

Nokia N9 (this is the “MyDocs” directory)
rootfs (this is the “/” directory or partition of the Nokia N9's Harmattan OS)
another partition with a long series of alpha-numeric (this is the /home/nitdroid directory/partition)
Alt_OS (this is the Nemo directory/partition)

Double-check that the files we have moved earlier are in their correct places. Once confirmed, you can "eject" all the partitions from your File Manager. Unplug the USB Cable and the device will restart. When it restarts, you should now see the Ubiboot menu.

Congratulations, you now have Ubiboot completely set up with a Triple-Boot configuration of Harmattan, NITDroid, and Nemo!

[edit] Known Issues

This section attempts to document some user-reported issues and solutions with respect to Ubiboot usage, installation, etc.

[edit] Charging

Ubiboot handles rtc and usb events to boot up device from power off state:

a) to Ubiboot telnet console (when connected to PC USB), device will not be charged.

b) to configured default kernel (harmattan) to charge (when connected to wall charger).

c) to configured default kernel (harmattan) to trigger alarm.

"Case a" works flawlessly.

"Case b" sometimes does not work, but reboots and then starts up Ubiboot console/screen (not charging).

"Case c" needs some precondition. Make sure you have shutdown your device from Harmattan. Otherwise the alarm may not be triggered in NITDroid or will not be triggered in Nemo.

[edit] Alarm Clocks

http://talk.maemo.org/showpost.php?p=1355247&postcount=374 http://talk.maemo.org/showpost.php?p=1355278&postcount=377

The default behavior of the device, particularly with the default OS (Harmattan), is that clock alarms can be triggered even when the device is turned off. The posts above suggest that you need to ensure that the "last OS booted" should be Harmattan prior to turning the device off, because between Harmattan, NITDroid, and Nemo, the alarm clock system behavior of Harmattan is most stable. Based on the above posts linked, alarms of NITDroid and Nemo (when the device is turned off) don't behave as good as Harmattan does.

[edit] References

  1. Official thread at talk.maemo.org
  2. Official download site of Ubiboot
  3. Official download site of NITDroid
  4. Official Wiki Page of Nemo

[edit] Tutorials

  1. PDF and Document
  2. YouTube (to follow/in progress)