Create a Bootable MicroSD Card, Overo and Verdex Pro COMs will boot directly from a properly prepared microSD card. This step-by-step procedure explains how to partition and format a bootable microSD card using a Linux development computer. For instructions on writing a new image to flash memory of your Gumstix COM, see these instructions instead. These instructions supersede older instructions. If you still need the old instructions, you can find them here.

Ads by Google


Note: The following instructions are intended for experienced Gumstix users. Beginners are recommended to use Linaro or Sakoman's daily GNOME builds

Supported MMC/SD Cards

Gumstix DuoVero COMs and Overo COMs "support MMC/SD cards compliant with the Multimedia Card System Specification v4.2 from the MMCA Technical Committee and the SD I/O Card Specification v2.0 from the SD Association. Includes high-capacity (size >2GB) cards: HC-SD and HC MMC", as per the Texas Instruments OMAP specification. (added Feb 6 2012)


First, insert your microSd card into the development machine's flash card slot. You may need to use a microSD to SD card adapter or a USB card reader. Use the mount or df commands to determine the device name of SD card. Names such as /dev/mmcblk0p1 or /dev/sde1 are typical; /dev/sda is usually your computer's hard drive so be sure not to use this. A 2GB SD available at /dev/mmcblk0 is used as an example for this procedure; you'll need to adjust the commands to match your card. Unmount any mounted partitions of the attached device e.g.
$ sudo umount /dev/mmcblk0p1

Partitions versus Drives

In Linux, a physical block device such as a hard drive or an SD card appears in the '/dev' directory e.g. /dev/hda/dev/sr0, or /dev/mmcblk1. This device file refers to the **whole** physical device. A single physical device can contain multiple individual partitions each with their own file system. These partitions also appear in the '/dev' directory under the same name but include a suffix e.g. /dev/mmcblk1p0 (partition #0 of physical device 'mmcblk1), /dev/sdf1 (partition #1 of physical device 'sdf'). Linux makes the file systems on these partitions available by 'mounting' them to a directory in the existing file system. For removable devices, such 'mount points' are traditionally found in the '/mnt' or '/media' directories.

Ads by Google

Calculate Card Size

A special geometry is required to make best use of the underlying SD card memory and for data to be accessible by the DuoVero or Overo boot ROM. Calculate the required number of 'cylinders' for your particular card. Find the card size in first line of the response to this command:
$ sudo fdisk -l /dev/mmcblk0
Disk /dev/mmcblk0: 2016 MB, 2016411648 bytes

Ads by Google

Divide the card size in bytes by 255 heads, 63 sectors and 512 bytes per sector and round down to the nearest integer. E.g. 2016411648/255/63/512 = 245.15 --> 245 cylinders.

Partition the Card

Gumstix COMs require at least two partitions: a FAT partition containing files needed to boot and a Linux partition on which the root file system for the operating system is stored. To start, we clean up any existing partition data e.g.
$ sudo dd if=/dev/zero of=/dev/mmcblk0 bs=1024 count=1024
The sfdisk tools can perform the required partitioning e.g.
$ sudo sfdisk --force -D -uS -H 255 -S 63 -C 245 /dev/mmcblk0
where the value of the -C parameter is the number of cylinders calculated in previous step. At the sfdisk, type 128,130944,0x0C,* and then press  to set up a 64MB bootable FAT partition. Next, type 131072,,,- and press  three more times to create the Linux partition and complete the partition table. When prompted to write this new partition table, type y to accept. An example session looks like this:
Checking that no-one is using this disk right now ...
Input in the following format; absent fields get a default value.
Usually you only need to specify  and  (and perhaps ).
/dev/mmcblk0p1 :128,130944,0x0C,*
/dev/mmcblk0p1   *       128    131071     130944   c  W95 FAT32 (LBA)
/dev/mmcblk0p2 :131072,,,-
/dev/mmcblk0p2        131072   3938303    3807232  83  Linux
/dev/mmcblk0p3 :
/dev/mmcblk0p3             0         -          0   0  Empty
/dev/mmcblk0p4 :
/dev/mmcblk0p4             0         -          0   0  Empty
New situation:
Units = sectors of 512 bytes, counting from 0
  Device Boot    Start       End   #sectors  Id  System
/dev/mmcblk0p1   *       128    131071     130944   c  W95 FAT32 (LBA)
/dev/mmcblk0p2        131072   3938303    3807232  83  Linux
/dev/mmcblk0p3             0         -          0   0  Empty
/dev/mmcblk0p4             0         -          0   0  Empty
Warning: partition 1 does not end at a cylinder boundary
Do you want to write this to disk? [ynq] y
Successfully wrote the new partition table

Formatting the New Partitions

Format the first partition as a FAT file system (the -n parameter gives it a label of boot).
$ sudo mkfs.vfat -F 32 /dev/mmcblk0p1 -n boot
Note: If your computer is missing the mkfs.vfat program, try installing the dosfsutils package and try again. E.g.
$ sudo apt-get install dosfsutils
Format the second partition for Linux (the -L parameter gives it a label of rootfs):
$ sudo mke2fs -j -L rootfs /dev/mmcblk0p2 

Ads by Google

Now, mount these partitions.
$ sudo mkdir /media/{boot,rootfs}
$ sudo mount -t vfat /dev/mmcblk0p1 /media/boot
$ sudo mount -t ext3 /dev/mmcblk0p2 /media/rootfs

Installing the Boot Files

The final step is to copy over the software that will run on your Gumstix COM. A matched set of the following files is required:
  • a root file system e.g. rootfs.tar.bz2
  • a kernel binary image e.g. uImage
  • a u-boot bootloader binary image e.g. u-boot.bin
  • a x-loader binary image e.g. MLO (Overo only) Use mlo-updated if using a STORM COM
Prebuilt image can be downloaded or found in the tmp/deploy directory of the OpenEmbedded build system.
Copy the binary files directly to the first partition: Note: Overo only. The x-loader binary must be copied first.
$ sudo cp MLO /media/boot/MLO overo only
For both Overo and verdex pro.
$ sudo cp u-boot.bin /media/boot/u-boot.bin
$ sudo cp uImage /media/boot/uImage
Expand the root file system archive on to the second partition:
$ sudo tar xaf roofs.tar.bz2 -C /media/rootfs
$ sync
Now, unmount these partitions and your card is ready to use:
$ sudo umount /media/boot
$ sudo umount /media/rootfs

U-boot Environment Refresh

Ads by Google
U-boot comes with a default set of environment variables that can change as new versions are released. If you are updating u-boot, clear your current set of u-boot environment variables the first time you boot with the new version. Do this by breaking into u-boot and typing the following commands. (Overo COMs with NAND flash only).
# nand erase 240000 20000
# reset
To make additional changes to the environment, break into u-boot again, make the changes and type 'saveenv' to save. This also eliminates the "*** Warning - bad CRC or NAND, using default environment".
Add a saveenv prior to the bootm command to save this setup for future boots.

Ads by Google

No comments:

Post a Comment

Thank You , For Immediate Assistance Plz Put Email Copy to