Booting from a flash card

(Getting root access)
Line 1: Line 1:
{{Midgard article}}
{{Midgard article}}
-
= Why would we want to boot from MMC? =
+
== Why would we want to boot from a flash card? ==
-
* Because we'll have enough space to INSTALL as MANY applications as may fit in our (GB-size) MMC card.  
+
* For more space to install applications.
-
* Because we'll have an INTACT COPY of the original system. So that if something goes wrong, we'll be able to BACKUP the system without reflashing the device.
+
* An easy-to-user bootable backup.
-
* Because we'll still be able to mount our MMC on a Windows-based PC via USB.  
+
* To improve performance (note, this is dependent on the quality of your flash card).
-
* Because the whole system won't be based on a compressed and journalized filesystem (jffs2) so the result may be faster due to lower CPU usage (no (de)compression with each read/write operation) and faster SD/MMC speed (depends on card and may require custom kernel - 770, N800)
+
   
   
-
= Known working devices =
+
== Known working devices ==
This procedure has been tested on the following configurations:  
This procedure has been tested on the following configurations:  
Line 63: Line 62:
  insmod /mnt/initfs/lib/modules/(uname -r)/mbcache.ko
  insmod /mnt/initfs/lib/modules/(uname -r)/mbcache.ko
  insmod /mnt/initfs/lib/modules/(uname -r)/ext2.ko
  insmod /mnt/initfs/lib/modules/(uname -r)/ext2.ko
 +
 +
== Clone to the card ==
 +
 +
Now it's time to clone your install over to partition 2 of the internal card. The script works in stages to allow better control and error detection:
 +
* 0 - Create ext2 filesystem on partition 2 of the Internal memory card
 +
* 1 - Mount partition 2 as /opt
 +
* 2 - Mount rootfs as /floppy
 +
* 3 - Perform cloning process
 +
* 4 - Commit filesystem updates and unmount /floppy and /opt
 +
 +
So, '''as root''', run:
 +
 +
cd /home/user/local/bin
 +
./nupgrade.sh 0
 +
./nupgrade.sh 1
 +
./nupgrade.sh 2
 +
./nupgrade.sh 3
 +
./nupgrade.sh 4
 +
reboot
 +
== Removing the menu ==
== Removing the menu ==

Revision as of 20:10, 4 July 2008

Image:Ambox_content.png
This is an article from the old midgard wiki that hasn't yet been fully updated for this wiki, please update it.
Please see the talk page for discussion.


Contents

Why would we want to boot from a flash card?

  • For more space to install applications.
  • An easy-to-user bootable backup.
  • To improve performance (note, this is dependent on the quality of your flash card).

Known working devices

This procedure has been tested on the following configurations:

Hardware Software
Nokia N770 ITOS 2006 3.2006.49-2
Nokia N800 ITOS 2007 2.2006.51-6 1
Nokia N800 ITOS 2007 4.2007.26-8

The first time I tried this on my N800 it led to continuous reboots 30-90 seconds after booting. Trying it a second time on a clean install (directly after flashing and erasing everything already on the device) worked fine.

This procedure should work with any device listed at http://fanoush.wz.cz/maemo/#initfs

It is supposed that without any previous knowledge you should be able to accomplish the whole procedure. Ask for help in case something goes wrong. I'll be happy to help you at the following e-mail address: sebastian.maemo{AT}gmail.com

Gain root access

First of all you need to be able to gain root access.

Partition your card

Follow the instructions to partition your card.

Install bootmenu

Connect your device to the charger, as running out of battery power during the flashing process could damage the device.

First, we need to install wget, so open Xterm and, as root, run:

apt-get install wget

Then run:

mkdir /home/user/local/bin
cd /home/user/local/bin
wget http://www.nmacleod.com/nokia/bin/nupgrade.sh
wget http://www.nmacleod.com/nokia/bin/tar
chmod +x nupgrade.sh tar

Now we need to download and install fanoush's initfs flasher, so, as root, run:

wget http://fanoush.wz.cz/maemo/initfs_flasher.tgz
tar zxvf initfs_flasher.tgz
cd initfs_flasher/
./initfs_flash

Follow the onscreen instructions. You can answer yes to all of these questions if you don't understand what they mean.

Now we need to load the kernel modules for ext2, so, as root, run:

insmod /mnt/initfs/lib/modules/(uname -r)/mbcache.ko
insmod /mnt/initfs/lib/modules/(uname -r)/ext2.ko

Clone to the card

Now it's time to clone your install over to partition 2 of the internal card. The script works in stages to allow better control and error detection:

  • 0 - Create ext2 filesystem on partition 2 of the Internal memory card
  • 1 - Mount partition 2 as /opt
  • 2 - Mount rootfs as /floppy
  • 3 - Perform cloning process
  • 4 - Commit filesystem updates and unmount /floppy and /opt

So, as root, run:

cd /home/user/local/bin
./nupgrade.sh 0
./nupgrade.sh 1
./nupgrade.sh 2
./nupgrade.sh 3
./nupgrade.sh 4
reboot


Removing the menu

If you decide you do not wish to see the menu on each boot or you do not wish to boot from mmc anymore and go back to using internal flash only, type this (as root):

# chroot /mnt/initfs cal-tool --set-root-device flash

To remove the (harmless) 'Press menu key ..." message early on boot you need to restore your initfs backup (if you decided to create one)

# cd /home/user/MyDocs/.documents/initfs_flasher/
# ./initfs_flash initfs.orig.jffs2

or you can reflash whole firmware (Windows) or restore just initfs part (Linux). Both initfs restoration steps are a bit risky and can cause data loss if something goes wrong so it may be good idea to simply live with the message until you decide to upgrade to next firmware or want to reflash whole device anyway. It does not slow down device booting or do any other harm.