package/snappy: add .hash file
[buildroot-gz.git] / board / freescale / imx28evk / create-boot-sd.sh
blob5e050cbadad94c65adb3a3b1af25a3f2ad39449b
1 #!/bin/sh
3 set -u
4 set -e
6 PROGNAME=$(basename $0)
8 usage()
10 echo "Create an SD card that boots on an i.MX28 EVK board."
11 echo
12 echo "Note: all data on the the card will be completely deleted!"
13 echo "Use with care!"
14 echo "Superuser permissions may be required to write to the device."
15 echo
16 echo "Usage: ${PROGNAME} <sd_block_device>"
17 echo "Arguments:"
18 echo " <sd_block_device> The device to be written to"
19 echo
20 echo "Example: ${PROGNAME} /dev/mmcblk0"
21 echo
24 if [ $# -ne 1 ]; then
25 usage
26 exit 1
29 if [ $(id -u) -ne 0 ]; then
30 echo "${PROGNAME} must be run as root"
31 exit 1
34 DEV=${1}
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
40 PART="p"
41 else
42 PART=""
45 PART1=${DEV}${PART}1
46 PART2=${DEV}${PART}2
47 PART3=${DEV}${PART}3
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
57 sync
59 # Partition the card.
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
65 2048,2000,53
66 4048,16000,b
67 20048,,L
68 EOF
70 sync
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
77 TMPDIR=$(mktemp -d)
79 # FAT partition: kernel
80 mkfs.vfat ${PART2}
81 mount ${PART2} ${TMPDIR}
82 cp output/images/*Image ${TMPDIR}/
83 cp output/images/*.dtb ${TMPDIR}/ || true
84 sync
85 umount ${TMPDIR}
87 # ext2 partition: root filesystem
88 mkfs.ext2 ${PART3}
89 mount ${PART3} ${TMPDIR}
90 tar -C ${TMPDIR}/ -xf output/images/rootfs.tar
91 sync
92 umount ${TMPDIR}
94 # Cleanup
95 rmdir ${TMPDIR}
96 sync
97 echo Done