Creating a bootable microSD card

From RidgeRun Developer Wiki


The Overo board will boot directly from a properly prepared microSD card. This section will outline how to partition and format a bootable microSD card. In order to create a bootable microSD compatible with the OMAP3 boot ROM, the SDK automatically format the SD and save the necessary images in the correct partitions.

This example will show the steps for setting up a 2GB microSD card.

Verify your SD CARD is working

First insert your card into your development machine's flash card slot. You may need to use a microSD to SD card adaptor to fit your slot. You can use 'mount' or 'df' to see where the card mounts on your machine.

$ df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1            234521212  35058568 187549648  16% /
none                   1009920       372   1009548   1% /dev
none                   1014140      1940   1012200   1% /dev/shm
none                   1014140       124   1014016   1% /var/run
none                   1014140         0   1014140   0% /var/lock
none                   1014140         0   1014140   0% /lib/init/rw
                    
/dev/sdd1                39497      4916     34582  13% /media/boot
/dev/sdd2              1857948     93928   1669640   6% /media/rootfs

Set the correct options installer

The option (/dev/sdd) SD device could vary , and its depends on each PC and SD card. The option (/dev/ttyUSB0) Serial port for target communication allow the pc to have a console running on the target. The options Create and format the SD partitions (FAT and Ext3) , allow the SDK format the SD card and create two partitions A FAT partition: I'll have the bootloader , xloader and kernel images

A linux partition (Ext3) to 
  [*]   Create and format the SD partitions (FAT and Ext3)                           
                    Bootloader destination (Flash)  --->                                         
                    Kernel destination (SD)  --->                                                
                    File System destination (SD)  --->     

There are three files required on the first (FAT) partition to boot your Overo:

MLO:

The boot-loader loader - this small program is loaded into the OMAP3 processor's static RAM. It does some minimal configuration of system memory and io pins and then loads the second file.

u-boot.bin

The boot loader image At a minimum an embedded bootloader provides the following features:

  • Initializing the hardware, especially the memory controller.
  • Providing boot parameters for the Linux kernel.
  • Starting the Linux kernel

uImage:

The linux kernel

You can build these yourself and download pre-built images. or use the SDK installer. It is important that these three files have precisely these names. , but the SDK installer automatically set those names.

Prefilling SD card with 0xFF

You may want to fill the SD card with 0xFF first so that an image made by copying the entire SD card compresses better.

SD_DEV=/dev/sdd
tr "\000" "\377" < /dev/zero | sudo dd bs=16M of=${SD_DEV}

Running the SDK installer

The SD card must be on on the SD Card Reader Be sure u-boot is running on port /dev/ttyUSB0 and none process (like minicom) is using it

on the terminal run the following command

make install

The SDK installer will automatically set all the environment on the u-boot and save the images to the SD Card this is the log derived from the installation

$ make install
------------------------------------------------------------------------------------------------------
  Ridgerun Linux SDK
  Board configuration: Gumstix Overo Board
 
  Installation system of uboot images over TFTP for host 1500
  Please be sure u-boot is running on port /dev/ttyUSB0 and none process (like minicom) is using it
  u-boot port /dev/ttyUSB0

  Performing handshake with u-boot...done.

  Trying to identify NAND block size... detected 0x20000

  Creating SD partitions on the device /dev/sdd... 
    a) Boot partition for Bootloader and kernel
    b) Root File System partition

    Unmounting the existent partitons...
    sudo umount /dev/sdd'1'
    sudo umount /dev/sdd'2'

    Creating the partitions...
    sudo fdisk /dev/sdd < .sd

    Formating partitions...
    sudo mkfs.vfat -F 32 /dev/sdd'1' -n boot
    sudo mkfs.ext3 /dev/sdd'2' -L rootfs
    sudo fsck.ext3 /dev/sdd'2'
e2fsck 1.41.11 (14-Mar-2010)
fsck.ext3: Superblock invalid, trying backup blocks...
fsck.ext3: Bad magic number in super-block while trying to open /dev/sdd

The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

    The partition table is:

Disk /dev/sdd: 1977 MB, 1977614336 bytes
255 heads, 63 sectors/track, 240 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6308582a

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1   *           1           5       40131    c  W95 FAT32 (LBA)
/dev/sdd2               6         240     1887637+  83  Linux

  Verifying if kernel needs to be installed...
  Flashing Kernel image to SD...

  Mounting boot partition...
    sudo mount /dev/sdd'1' images/boot

  Copying the kernel into the SD...
    cp $(DEVDIR)/images/kernel.uImage $(DEVDIR)/images/boot/

  Unmounting the boot partition...
    sudo umount $(DEVDIR)images/boot

  Saving new kernel load address...
    Uboot <= setenv kernelloadaddr 0x82000000

  Verifying if file system needs to be installed...
  Flashing File System to SD...

  Unmounting rootfs partition...
    sudo umount /dev/sdd'2'

  Formating rootfs partition...
    sudo mkfs.ext3 /dev/sdd'2' -L rootfs
  Mounting rootfs partition...
    sudo mount -t ext3 /dev/sdd'2' images/rootfs

  Copying the File System into the SD...
    cd fs/fs && find . | sudo cpio -pdum images/rootfs/

201312 blocks
  Unmounting the rootfs partition...
    sudo umount /dev/sdd'2'

    sudo fsck.ext3 /dev/sdd'2'
e2fsck 1.41.11 (14-Mar-2010)
e2fsck: need terminal for interactive repairs

  Verifying if kernel command line needs to be installed...
  Kernel command line doesn't need to be installed

  Verifying if the boot command needs to be installed...
    Uboot <= setenv bootcmd 'mmc init ; fatload mmc 0 \${kernelloadaddr} kernel.uImage ; bootm \${kernelloadaddr}'
    Uboot <= setenv autostart yes
    Uboot <= saveenv

Reboot the board with the SD

After all the process , reboot the target with the SD an the check the installation works properly