#! /bin/sh # mkCubieCard.sh v0.1: # 2013, Carlo Caione # heavely based on : # mkA10card.sh v0.1 # 2012, Jason Plum # loosely based on : # mkcard.sh v0.5 # (c) Copyright 2009 Graeme Gregory # Licensed under terms of GPLv2 # # Parts of the procudure base on the work of Denys Dmytriyenko # http://wiki.omap.com/index.php/MMC_Boot_Format IMAGES_DIR=$1 SPL_IMG=$IMAGES_DIR/sunxi-spl.bin UBOOT_IMG=$IMAGES_DIR/u-boot.bin UIMAGE=$IMAGES_DIR/uImage BIN_BOARD_FILE=$IMAGES_DIR/script.bin ROOTFS=$IMAGES_DIR/rootfs.tar BOOT_CMD_H=$IMAGES_DIR/boot.scr export LC_ALL=C if [ $# -ne 2 ]; then echo "Usage: $0 " exit 1; fi if [ $EUID -ne 0 ]; then echo "This script must be run as root" 1>&2 exit 1 fi if [ ! -f $SPL_IMG ] || [ ! -f $UBOOT_IMG ] || [ ! -f $UIMAGE ] || [ ! -f $BIN_BOARD_FILE ] || [ ! -f $ROOTFS ] || [ ! -f $BOOT_CMD_H ]; then echo "File(s) missing." exit 1 fi DRIVE=$2 P1=`mktemp -d` P2=`mktemp -d` dd if=/dev/zero of=$DRIVE bs=1M count=3 SIZE=`fdisk -l $DRIVE | grep Disk | grep bytes | awk '{print $5}'` echo DISK SIZE - $SIZE bytes # ~2048, 16MB, FAT, bootable # ~rest of drive, Ext4 { echo 32,512,0x0C,* echo 544,,,- } | sfdisk -D $DRIVE sleep 1 if [ -b ${DRIVE}1 ]; then D1=${DRIVE}1 umount ${DRIVE}1 mkfs.vfat -n "boot" ${DRIVE}1 else if [ -b ${DRIVE}p1 ]; then D1=${DRIVE}p1 umount ${DRIVE}p1 mkfs.vfat -n "boot" ${DRIVE}p1 else echo "Cant find boot partition in /dev" exit 1 fi fi if [ -b ${DRIVE}2 ]; then D2=${DRIVE}2 umount ${DRIVE}2 mkfs.ext4 -L "Cubie" ${DRIVE}2 else if [ -b ${DRIVE}p2 ]; then D2=${DRIVE}p2 umount ${DRIVE}p2 mkfs.ext4 -L "Cubie" ${DRIVE}p2 else echo "Cant find rootfs partition in /dev" exit 1 fi fi mount $D1 $P1 mount $D2 $P2 # write uImage cp $UIMAGE $P1 # write board file cp $BIN_BOARD_FILE $P1 # write u-boot script cp $BOOT_CMD_H $P1 # write rootfs tar -C $P2 -xvf $ROOTFS sync umount $D1 umount $D2 rm -fr $P1 rm -fr $P2 # write SPL dd if=$SPL_IMG of=$DRIVE bs=1024 seek=8 # write mele u-boot dd if=$UBOOT_IMG of=$DRIVE bs=1024 seek=32