Booting from a flash card
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, and should take about 10 minutes to complete:
- 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
Your device will reboot when done, and you can select the partition you want to boot from from the bootmenu.
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.