Booting the Neo FreeRunner from SD via U-Boot

From Openmoko

(Difference between revisions)
Jump to: navigation, search
(suggest ext2 file system on SD cards)
Line 1: Line 1:
 
Here are the steps described to boot your system from an SD card.
 
Here are the steps described to boot your system from an SD card.
  
=== Step 1: Build your kernel ===
+
=== Step 1: Change your kernel settings ===
  
 
Kernel building is supposed to be done through OpenEmbedded. If you use the MokoMakefile open up $OMDIR/openmoko/trunk/oe/packages/linux/linux-gta01/defconfig-2.6.21.6-fic-gta01. If you are building OM-2007.2 open $OEDIR/packages/linux/linux-gta01/defconfig-2.6.21.5-fic-gta01. (''Note that the kernel version may change in future versions.'')
 
Kernel building is supposed to be done through OpenEmbedded. If you use the MokoMakefile open up $OMDIR/openmoko/trunk/oe/packages/linux/linux-gta01/defconfig-2.6.21.6-fic-gta01. If you are building OM-2007.2 open $OEDIR/packages/linux/linux-gta01/defconfig-2.6.21.5-fic-gta01. (''Note that the kernel version may change in future versions.'')
Line 21: Line 21:
 
  CONFIG_EXT2_FS=y
 
  CONFIG_EXT2_FS=y
  
Thats it. Now rebuild the kernel.
+
If you're using MokoMakfile, you can clean out your last kernel build (forcing a new build) by running:
  
=== Step 2: Populate SD card ===
+
make clean-package-linux-gta01
  
Format partition 1 as ext3 (or better ext2 if enabled, see above). Mount your SD card somewhere and put your image on it:
 
  
mount /dev/sda1 /mnt/moko
+
=== Step 2: Building a tarfile distribution ===
tar -C /mnt/moko/ -xvzf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar.gz
+
 
+
Now we also want the kernel on there
+
 
+
cp uImage /mnt/moko/boot/
+
  
 
If you are building OM-2007.2 you need to add "tar" to the image types in your ''local.conf'':
 
If you are building OM-2007.2 you need to add "tar" to the image types in your ''local.conf'':
Line 38: Line 32:
 
  IMAGE_FSTYPES = "jffs2 tar"
 
  IMAGE_FSTYPES = "jffs2 tar"
  
After building a new image by issuing ''bitbake openmoko-devel-image'' there will be a ''OpenMoko-....tar'' in the deploy directory. Copy it on the SD card by doing
+
After building a new image by issuing ''bitbake openmoko-devel-image'' (or ''make openmoko-devel-image'' if you are using MokoMakefile) there will be a ''OpenMoko-....tar'' in the deploy directory.  
 +
 
 +
=== Step 3: Populate SD card ===
 +
 
 +
Format partition 1 as ext3 (or better ext2 if enabled, see above). Mount your SD card somewhere and put your image on it:
  
 
  mount /dev/sda1 /mnt/moko
 
  mount /dev/sda1 /mnt/moko
  tar -C /mnt/moko/ -xvf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar
+
  tar -C /mnt/moko/ -xvzf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar
  
In OM-2007.2 the last built kernel gets a special soft-link. Therefore you can copy it by doing:
+
Now we also want the kernel on there. In OM-2007.2 the last built kernel gets a special soft-link. Therefore you can copy it by doing:
 
  cp uImage-fic-gta01-latest.bin /mnt/moko/boot/uImage
 
  cp uImage-fic-gta01-latest.bin /mnt/moko/boot/uImage
  
Line 59: Line 57:
  
 
Power off your device, insert the SD card and boot into the boot menu. You should have an entry called "Boot from SD" which does exactly that. :-)
 
Power off your device, insert the SD card and boot into the boot menu. You should have an entry called "Boot from SD" which does exactly that. :-)
 +
 +
== Installing without removing your SD card ==
 +
 +
Being the lazy person that I am, at one point I tried copying an image over to the micro SD card while still in my phone. This didn't work so well, primarily due to [http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=677 bug 677].
 +
 +
Once that bug has been resolved, the process becomes relatively simple:
 +
 +
* Boot to your internal flash partition (not the SD card...)
 +
* Plug in your USB and set up [USB Networking].
 +
* Clean off your currently installed microSD card:
 +
ssh root@192.168.0.200 "rm -rf /media/card/*"
 +
cat openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar | ssh root@192.168.0.200 tar -C /media/card -xv
 +
scp uImage-fic-gta01-latest.bin root@192.168.0.200:/mnt/moko/boot/uImage
 +
 +
Again, this all works well in theory but fails miserably in practice due to [http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=677 bug 677].
 +
 +
Note that, despite problems <b>writing</b> to SD through the OpenMoko OS, running from SD seems to work remarkably well.
  
 
[[Category:Software]]
 
[[Category:Software]]
 
[[Category:Guides]]
 
[[Category:Guides]]

Revision as of 02:17, 26 August 2007

Here are the steps described to boot your system from an SD card.

Contents

Step 1: Change your kernel settings

Kernel building is supposed to be done through OpenEmbedded. If you use the MokoMakefile open up $OMDIR/openmoko/trunk/oe/packages/linux/linux-gta01/defconfig-2.6.21.6-fic-gta01. If you are building OM-2007.2 open $OEDIR/packages/linux/linux-gta01/defconfig-2.6.21.5-fic-gta01. (Note that the kernel version may change in future versions.)

Now find the line saying:

CONFIG_MMC_S3C=m

and change it to:

CONFIG_MMC_S3C=y

If you want to use an ext2 file system on the SD, also find the line saying:

CONFIG_EXT2_FS=m

and change it to:

CONFIG_EXT2_FS=y

If you're using MokoMakfile, you can clean out your last kernel build (forcing a new build) by running:

make clean-package-linux-gta01


Step 2: Building a tarfile distribution

If you are building OM-2007.2 you need to add "tar" to the image types in your local.conf:

IMAGE_FSTYPES = "jffs2 tar"

After building a new image by issuing bitbake openmoko-devel-image (or make openmoko-devel-image if you are using MokoMakefile) there will be a OpenMoko-....tar in the deploy directory.

Step 3: Populate SD card

Format partition 1 as ext3 (or better ext2 if enabled, see above). Mount your SD card somewhere and put your image on it:

mount /dev/sda1 /mnt/moko
tar -C /mnt/moko/ -xvzf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar

Now we also want the kernel on there. In OM-2007.2 the last built kernel gets a special soft-link. Therefore you can copy it by doing:

cp uImage-fic-gta01-latest.bin /mnt/moko/boot/uImage

Step 3: Add uboot boot entry

On my Phase-1 Neo the boot menu entry existed already. If yours is missing it follow those instructions: Start uboot in bootmenu mode (= hold AUX while powering on) and add the following entry via serial console: (See Bootloader section on how to access an bootloader).

GTA01Bv4 # setenv menu_4 Boot from SD: setenv bootargs root=/dev/mmcblk0p1 rootdelay=5 console=ttySAC0,115200 console=tty0 loglevel=8 \${mtdparts}\; mmcinit\; ext2load mmc 0 0x32000000 /boot/\${sd_image_name}\; bootm 0x32000000
GTA01Bv4 # setenv sd_image_name uImage
GTA01Bv4 # saveenv

You can now easily boot a different kernel by changing the variable sd_image_name to the new name.

Step 4: Boot into the new system

Power off your device, insert the SD card and boot into the boot menu. You should have an entry called "Boot from SD" which does exactly that. :-)

Installing without removing your SD card

Being the lazy person that I am, at one point I tried copying an image over to the micro SD card while still in my phone. This didn't work so well, primarily due to bug 677.

Once that bug has been resolved, the process becomes relatively simple:

  • Boot to your internal flash partition (not the SD card...)
  • Plug in your USB and set up [USB Networking].
  • Clean off your currently installed microSD card:
ssh root@192.168.0.200 "rm -rf /media/card/*"
cat openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar | ssh root@192.168.0.200 tar -C /media/card -xv
scp uImage-fic-gta01-latest.bin root@192.168.0.200:/mnt/moko/boot/uImage

Again, this all works well in theory but fails miserably in practice due to bug 677.

Note that, despite problems writing to SD through the OpenMoko OS, running from SD seems to work remarkably well.

Personal tools

Here are the steps described to boot your system from an SD card.

Step 1: Build your kernel

Kernel building is supposed to be done through OpenEmbedded. If you use the MokoMakefile open up $OMDIR/openmoko/trunk/oe/packages/linux/linux-gta01/defconfig-2.6.21.6-fic-gta01. If you are building OM-2007.2 open $OEDIR/packages/linux/linux-gta01/defconfig-2.6.21.5-fic-gta01. (Note that the kernel version may change in future versions.)

Now find the line saying:

CONFIG_MMC_S3C=m

and change it to:

CONFIG_MMC_S3C=y

If you want to use an ext2 file system on the SD, also find the line saying:

CONFIG_EXT2_FS=m

and change it to:

CONFIG_EXT2_FS=y

Thats it. Now rebuild the kernel.

Step 2: Populate SD card

Format partition 1 as ext3 (or better ext2 if enabled, see above). Mount your SD card somewhere and put your image on it:

mount /dev/sda1 /mnt/moko
tar -C /mnt/moko/ -xvzf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar.gz

Now we also want the kernel on there

cp uImage /mnt/moko/boot/

If you are building OM-2007.2 you need to add "tar" to the image types in your local.conf:

IMAGE_FSTYPES = "jffs2 tar"

After building a new image by issuing bitbake openmoko-devel-image there will be a OpenMoko-....tar in the deploy directory. Copy it on the SD card by doing

mount /dev/sda1 /mnt/moko
tar -C /mnt/moko/ -xvf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar

In OM-2007.2 the last built kernel gets a special soft-link. Therefore you can copy it by doing:

cp uImage-fic-gta01-latest.bin /mnt/moko/boot/uImage

Step 3: Add uboot boot entry

On my Phase-1 Neo the boot menu entry existed already. If yours is missing it follow those instructions: Start uboot in bootmenu mode (= hold AUX while powering on) and add the following entry via serial console: (See Bootloader section on how to access an bootloader).

GTA01Bv4 # setenv menu_4 Boot from SD: setenv bootargs root=/dev/mmcblk0p1 rootdelay=5 console=ttySAC0,115200 console=tty0 loglevel=8 \${mtdparts}\; mmcinit\; ext2load mmc 0 0x32000000 /boot/\${sd_image_name}\; bootm 0x32000000
GTA01Bv4 # setenv sd_image_name uImage
GTA01Bv4 # saveenv

You can now easily boot a different kernel by changing the variable sd_image_name to the new name.

Step 4: Boot into the new system

Power off your device, insert the SD card and boot into the boot menu. You should have an entry called "Boot from SD" which does exactly that. :-)