6 PROGNAME=$(basename $0)
10 echo "Create an SD card that boots on an i.MX28 EVK board."
12 echo "Note: all data on the the card will be completely deleted!"
14 echo "Superuser permissions may be required to write to the device."
16 echo "Usage: ${PROGNAME} <sd_block_device>"
18 echo " <sd_block_device> The device to be written to"
20 echo "Example: ${PROGNAME} /dev/mmcblk0"
29 if [ $(id -u) -ne 0 ]; then
30 echo "${PROGNAME} must be run as root"
36 # The partition name prefix depends on the device name:
37 # - /dev/sde -> /dev/sde1
38 # - /dev/mmcblk0 -> /dev/mmcblk0p1
39 if echo ${DEV}|grep -q mmcblk ; then
49 # Unmount the partitions if mounted
50 umount ${PART1} || true
51 umount ${PART2} || true
52 umount ${PART3} || true
54 # First, clear the card
55 dd if=/dev/zero of=${DEV} bs=1M count=20
60 # SD layout for i.MX28 boot:
61 # - Special partition type 53 at sector 2048, containing an SD-SB-encapsulated u-boot
62 # - FAT partition containing zImage
63 # - ext2/3 partition formatted as ext2 or ext3, containing the root filesystem.
64 sfdisk --force -u S ${DEV} <<EOF
72 # Copy the bootloader at offset 2048
73 # (We need to skip the partition table in the .sd, too.)
74 dd if=output/images/u-boot.sd of=${DEV}1 bs=1M
76 # Prepare a temp dir for mounting partitions
79 # FAT partition: kernel
81 mount ${PART2} ${TMPDIR}
82 cp output/images/*Image ${TMPDIR}/
83 cp output/images/*.dtb ${TMPDIR}/ || true
87 # ext2 partition: root filesystem
89 mount ${PART3} ${TMPDIR}
90 tar -C ${TMPDIR}/ -xf output/images/rootfs.tar