summaryrefslogtreecommitdiff
path: root/recipes-images/images/files/colibri-vf/format_sd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-images/images/files/colibri-vf/format_sd.sh')
-rwxr-xr-xrecipes-images/images/files/colibri-vf/format_sd.sh115
1 files changed, 115 insertions, 0 deletions
diff --git a/recipes-images/images/files/colibri-vf/format_sd.sh b/recipes-images/images/files/colibri-vf/format_sd.sh
new file mode 100755
index 0000000..79cc985
--- /dev/null
+++ b/recipes-images/images/files/colibri-vf/format_sd.sh
@@ -0,0 +1,115 @@
+#! /bin/sh
+# Format a SD card to be used for flashing a Colibri VFxx module
+# Then calls update.sh to add needed files
+
+# sometimes we need the binary echo, not the shell builtin
+ECHO=`which echo`
+
+Usage()
+{
+ echo ""
+ echo "Formats and fills a SD card with files for flashing the internal NAND of a"
+ echo "Colibri VFxx. Optionally creates a rootfs partition to allow booting and taking"
+ echo "kernel and rootfs from SD card."
+ echo "ALL DATA ON THE DEVICE GIVEN WITH -d WILL BE DELETED!!"
+ echo
+ echo "Requires a running U-Boot on the target. Either one already flashed on the NAND"
+ echo "or strapping the board to boot from SD card and booting U-Boot from the card"
+ echo "(only possible on older samples without blown boot fuses)."
+ echo ""
+ echo "-h : Prints this message"
+ echo ""
+ echo "-d FILE : device file of the SD card"
+ echo "-f : additionally copy the rootfs into the second partition"
+ echo "-s : optimise file system for 128MB NAND, increases usable space"
+ echo " on VF50 module a little, but on VF61 uses also only 128MB"
+ echo ""
+ echo "Example \"./format_sd.sh -d /dev/mmcblk0\" prepares the SD card /dev/mmcblk0"
+ echo ""
+}
+
+#initialise options
+DEV="/dev/null"
+CFGBLOCK_ONLY=0
+DEBUG_ONLY=0
+KERNEL_ONLY=0
+UBOOT_ONLY=0
+CP_ROOTFS=0
+
+while getopts "hd:fs" Option ; do
+ case $Option in
+ h) Usage
+ # Exit if only usage (-h) was specified.
+ if [[ $# -eq 1 ]] ; then
+ exit 10
+ fi
+ exit 0
+ ;;
+ d) DEV=$OPTARG
+ ;;
+ f) CP_ROOTFS=1
+ ;;
+ s) UPDATE_OPTS="-s"
+ esac
+done
+
+DEVNAME=`basename $DEV`
+DEVNAMESTART=`echo $DEVNAME | cut -c 1-3`
+
+# sanity checks to try and not touch one of the users hard drives or other issues
+if [ ! -b $DEV ] ; then
+ echo $DEV "is not a block device, "
+ echo "please specify the device file representing your SD card"
+ exit 1
+fi
+if [ "$DEVNAMESTART" = "sda" ] ; then
+ echo $DEV "seems to be your primary hard disk,"
+ echo "please specify the device file representing your SD card"
+ exit 1
+fi
+if [ ! -d /sys/block/$DEVNAME ] ; then
+ echo "/sys/block/$DEVNAME"
+ echo $DEV "seems to not be a disk, please specify the device file"
+ echo "representing your SD card (without any trailing number)"
+ exit 1
+fi
+IS_USB_MMC=`ls -l /sys/block/$DEVNAME | grep -c "usb\|mmc"`
+if [ $IS_USB_MMC -eq 0 ] ; then
+ echo $DEV "seems not to be connected over USB or MMC, please specify the device file"
+ echo "representing your SD card (without any trailing number)"
+ exit 1
+fi
+
+if [ "$DEVNAMESTART" = "mmc" ] ; then
+ PART_PREFIX="p"
+else
+ PART_PREFIX=""
+fi
+# make sure the partitions are unmounted
+sudo umount ${DEV}${PART_PREFIX}?
+
+# partition and format the vfat partition
+sudo parted -s $DEV mklabel msdos mkpart primary fat32 1MB 512MB mkpart primary ext3 512MB 100%
+sudo umount ${DEV}${PART_PREFIX}1
+sudo mkfs.fat -n UPDATE ${DEV}${PART_PREFIX}1
+
+# dd U-Boot onto the SD card
+sudo dd if=colibri-vf_bin/u-boot.imx of=${DEV} bs=512 seek=2
+
+sudo mkdir -p mntpoint1
+sudo mount -t vfat ${DEV}${PART_PREFIX}1 mntpoint1 -o umask=0
+
+# now copy U-Boot, kernel and ubi-img to the KERNEL partition
+DEST=`readlink -e mntpoint1`
+./update.sh -o "$DEST" $UPDATE_OPTS
+
+#copy the rootfs
+if [ "$CP_ROOTFS" -eq 1 ] ; then
+ sudo umount ${DEV}${PART_PREFIX}2
+ sudo mkfs.ext3 -L RFS ${DEV}${PART_PREFIX}2 && sync
+ sudo mkdir -p mntpoint2
+ sudo mount -t ext3 ${DEV}${PART_PREFIX}2 mntpoint2
+ sudo cp -pPr rootfs/* mntpoint2/
+fi
+
+sudo umount ${DEV}${PART_PREFIX}?