configs/imx28evk: Generate the standard sdcard.img

Generate the standard sdcard.img format that can be directly copied
to the SD card.

Remove the custom create-boot-sd.sh script and update the readme.txt
file accordingly.

Signed-off-by: Fabio Estevam <fabio.estevam@nxp.com>
[Thomas: further tweaks to readme.txt.]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
This commit is contained in:
Fabio Estevam 2016-10-31 12:11:58 -02:00 committed by Thomas Petazzoni
parent fcb554d39d
commit 898538efef
5 changed files with 56 additions and 101 deletions

View File

@ -1,97 +0,0 @@
#!/bin/sh
set -u
set -e
PROGNAME=$(basename $0)
usage()
{
echo "Create an SD card that boots on an i.MX28 EVK board."
echo
echo "Note: all data on the the card will be completely deleted!"
echo "Use with care!"
echo "Superuser permissions may be required to write to the device."
echo
echo "Usage: ${PROGNAME} <sd_block_device>"
echo "Arguments:"
echo " <sd_block_device> The device to be written to"
echo
echo "Example: ${PROGNAME} /dev/mmcblk0"
echo
}
if [ $# -ne 1 ]; then
usage
exit 1
fi
if [ $(id -u) -ne 0 ]; then
echo "${PROGNAME} must be run as root"
exit 1
fi
DEV=${1}
# The partition name prefix depends on the device name:
# - /dev/sde -> /dev/sde1
# - /dev/mmcblk0 -> /dev/mmcblk0p1
if echo ${DEV}|grep -q mmcblk ; then
PART="p"
else
PART=""
fi
PART1=${DEV}${PART}1
PART2=${DEV}${PART}2
PART3=${DEV}${PART}3
# Unmount the partitions if mounted
umount ${PART1} || true
umount ${PART2} || true
umount ${PART3} || true
# First, clear the card
dd if=/dev/zero of=${DEV} bs=1M count=20
sync
# Partition the card.
# SD layout for i.MX28 boot:
# - Special partition type 53 at sector 2048, containing an SD-SB-encapsulated u-boot
# - FAT partition containing zImage
# - ext2/3 partition formatted as ext2 or ext3, containing the root filesystem.
sfdisk --force -u S ${DEV} <<EOF
2048,2000,53
4048,16000,b
20048,,L
EOF
sync
# Copy the bootloader at offset 2048
# (We need to skip the partition table in the .sd, too.)
dd if=output/images/u-boot.sd of=${PART1} bs=1M
# Prepare a temp dir for mounting partitions
TMPDIR=$(mktemp -d)
# FAT partition: kernel
mkfs.vfat ${PART2}
mount ${PART2} ${TMPDIR}
cp output/images/*Image ${TMPDIR}/
cp output/images/*.dtb ${TMPDIR}/ || true
sync
umount ${TMPDIR}
# ext2 partition: root filesystem
mkfs.ext2 ${PART3}
mount ${PART3} ${TMPDIR}
tar -C ${TMPDIR}/ -xf output/images/rootfs.tar
sync
umount ${TMPDIR}
# Cleanup
rmdir ${TMPDIR}
sync
echo Done

View File

@ -0,0 +1,29 @@
image kernel.vfat {
vfat {
files = {
"zImage", "imx28-evk.dtb"
}
}
size = 16M
}
image sdcard.img {
hdimage {
}
partition boot {
partition-type = 0x53
image = "u-boot.sd"
offset = 1M
size = 16M
}
partition kernel {
partition-type = 0xC
image = "kernel.vfat"
}
partition rootfs {
partition-type = 0x83
image = "rootfs.ext2"
}
}

View File

@ -0,0 +1,14 @@
#!/usr/bin/env bash
BOARD_DIR="$(dirname $0)"
GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
rm -rf "${GENIMAGE_TMP}"
genimage \
--rootpath "${TARGET_DIR}" \
--tmppath "${GENIMAGE_TMP}" \
--inputpath "${BINARIES_DIR}" \
--outputpath "${BINARIES_DIR}" \
--config "${GENIMAGE_CFG}"

View File

@ -32,12 +32,11 @@ To determine the device associated to the SD card have a look in the
cat /proc/partitions
Run the following script as root on your SD card. This will partition the card
and copy the bootloader, kernel and root filesystem as needed.
Then, run the following command as root:
*** WARNING! The script will destroy all the card content. Use with care! ***
*** WARNING! The command will destroy all the card content. Use with care! ***
./board/freescale/imx28evk/create-boot-sd.sh <your-sd-device>
sudo dd if=output/images/sdcard.img of=/dev/<your-microsd-device>
Boot the i.MX28 EVK board
=========================

View File

@ -22,3 +22,13 @@ BR2_TARGET_UBOOT_BOARDNAME="mx28evk"
BR2_TARGET_UBOOT_CUSTOM_VERSION=y
BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE="2016.09.01"
BR2_TARGET_UBOOT_FORMAT_SD=y
# Filesystem
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT4=y
# To generate SD Image
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y
BR2_ROOTFS_POST_IMAGE_SCRIPT="board/freescale/imx28evk/post-image.sh"