[Buildroot] [PATCH 1/1] Solid-Run HummingBoard i2eX defconfig and bootable microSD Bash script
Jonathan Ben-Avraham
yba at tkos.co.il
Thu May 28 13:36:10 UTC 2015
Signed-off-by: Jonathan Ben-Avraham <yba at tkos.co.il>
---
board/solid-run/hummingboard-i2eX/make_sd_card.sh | 207 ++++++++++++++++++++++
configs/hummingboard_i2eX_defconfig | 24 +++
2 files changed, 231 insertions(+)
create mode 100755 board/solid-run/hummingboard-i2eX/make_sd_card.sh
create mode 100644 configs/hummingboard_i2eX_defconfig
diff --git a/board/solid-run/hummingboard-i2eX/make_sd_card.sh b/board/solid-run/hummingboard-i2eX/make_sd_card.sh
new file mode 100755
index 0000000..55c0f17
--- /dev/null
+++ b/board/solid-run/hummingboard-i2eX/make_sd_card.sh
@@ -0,0 +1,207 @@
+#!/bin/bash -eu
+# @(#) Create a bootable SD card from Buildroot tree for the HummingBoard i2eX
+#
+# Copyright (c) 2015 Tk Open Systems Ltd. all rights reserved
+# License granted for public use under the terms of the "Attribution-ShareAlike
+# 4.0 International" license, See full text at
+# https://creativecommons.org/licenses/by-sa/4.0/legalcode
+# Maintainer: yba at tkos.co.il
+
+USAGE="${0} <SD card device (e.g. 'sdb')> <Buildroot output dir (e.g '/home/yba/buildroot/output')>"
+ERROR=0
+
+if [ -z "${1+x}" ]
+then
+ if [ -z "${DEVICE+x}" ]
+ then
+ echo "${0} ERROR: No DEVICE env var or device specification in first parameter"
+ ERROR=$((${ERROR}+1))
+ fi
+ if [ -z "${BUILDROOT_OUTPUT_DIR+x}" ]
+ then
+ echo "${0} ERROR: No BUILDROOT_OUTPUT_DIR env var or device specification in second parameter"
+ ERROR=$((${ERROR}+1))
+ fi
+else
+ DEVICE=${1}
+ if [ -z "${2+x}" ]
+ then
+ if [ -z "${BUILDROOT_OUTPUT_DIR+x}" ]
+ then
+ echo "${0} ERROR: No BUILDROOT_OUTPUT_DIR env var or device specification in second parameter"
+ ERROR=$((${ERROR}+1))
+ fi
+ else
+ BUILDROOT_OUTPUT_DIR=${2}
+ fi
+fi
+[ 0 -lt ${ERROR} ] && { echo ${USAGE}; exit 1; }
+ERROR=0
+
+if [ -z "${4+x}" ]
+then
+ if [ -z "${ROOTFS_PARTITION_SIZE+x}" ]
+ then
+ ROOTFS_PARTITION_SIZE=128
+ fi
+else
+ ROOTFS_PARTITION_SIZE=${4}
+fi
+
+
+# rootfs partition starting at 1MB with size of ROOTFS_PARTITION_SIZE
+ROOTFS_PARTITION="n\np\n1\n2048\n+16M\nn\np\n2\n\n+${ROOTFS_PARTITION_SIZE}M\na\n\nw\n"
+#ROOTFS_PARTITION="n\np\n1\n2048\n+${ROOTFS_PARTITION_SIZE}M\na\n\nw\n"
+
+# Not so cool - I will have to maintain this script every time Rabeeh pushes
+# new code
+KERNEL_DIR=${BUILDROOT_OUTPUT_DIR}/build/linux-ea83bda1b403d745c67fbf6ea307d05ca138577f
+UBOOT_DIR=${BUILDROOT_OUTPUT_DIR}/build/uboot-e817fa3165a607b581433a6abfe37e095a5d1dc9
+
+# Handle Ubuntu fdisk silliness
+if echo $(uname -a) | grep -q Ubuntu
+then
+ FDISK="fdisk -c -u"
+else
+ FDISK="fdisk -u=sectors"
+fi
+
+
+if [ 0 -ne ${EUID} ]
+then
+ echo "${0} ERROR: You need to run this script as root or using 'sudo'."
+ exit 1
+fi
+
+if [ -z "${DEVICE}" ]
+then
+ echo "${0} ERROR: You need to specify the SD device as the first"
+ echo "command line parameter to this script. Example 'sdb'. Be "
+ echo "careful not to do something stupid like specifying your system"
+ echo "hard drive device."
+ ERROR=$((${ERROR}+1))
+else
+ if [ ! -b /dev/${DEVICE} ]
+ then
+ echo "${0} ERROR: /dev/${DEVICE} is not a block device file"
+ ERROR=$((${ERROR}+1))
+ fi
+fi
+
+if [ -f /etc/multipath.conf ]
+then
+ if grep -q blacklist //etc/multipath.conf && ! grep -q ${DEVICE} /etc/multipath.conf
+ then
+ echo
+ echo "==> WARNING: You probably want to blacklist ${DEVICE} in /etc/multipath.conf"
+ echo "==> Otherwise the kernel will not be notified of partition changes"
+ echo
+ sleep 5
+ fi
+fi
+
+if [ -z "${BUILDROOT_OUTPUT_DIR}" ]
+then
+ echo "${0} ERROR: You need to specify the Buildroot output directory as"
+ echo "the third command line parameter to this script"
+ ERROR=$((${ERROR}+1))
+else
+ if [ ! -d "${BUILDROOT_OUTPUT_DIR}" ]
+ then
+ echo "${0} ERROR: The [${BUILDROOT_OUTPUT_DIR}] directory does not"
+ echo "exist."
+ ERROR=$((${ERROR}+1))
+ fi
+fi
+
+if [ ! -d ${KERNEL_DIR} ]
+then
+ echo "${0} INTERNAL ERROR: The kernel dir ${KERNEL_DIR} does not exist."
+ echo "The kernel version has probably been changed."
+ ERROR=$((${ERROR}+1))
+fi
+
+if [ ! -d ${UBOOT_DIR} ]
+then
+ echo "${0} INTERNAL ERROR: The U-Boot dir ${UBOOT_DIR} does not exist."
+ echo "The kernel version has probably been changed."
+ ERROR=$((${ERROR}+1))
+fi
+
+if [ ! -f ${BUILDROOT_OUTPUT_DIR}/images/rootfs.tar ]
+then
+ echo "${0} ERROR: The rootfs image file "
+ echo "[${BUILDROOT_OUTPUT_DIR}/images/rootfs.tar]"
+ echo "was not found."
+ echo "Check that the third parameter is the fully qualified directory."
+ ERROR=$((${ERROR}+1))
+fi
+
+
+BINS="fdisk mkfs.ext4 mount umount dd mktemp partprobe"
+for BIN in ${BINS}
+do
+ if ! which ${BIN} >/dev/null
+ then
+ echo "${0} ERROR: Required executable ${BIN} is not in PATH"
+ ERROR=$((${ERROR}+1))
+ fi
+done
+
+MOUNT_POINT=$(mktemp -d /tmp/hummingboard.XXXX)
+if [ ! -d "${MOUNT_POINT}" ]
+then
+ echo "${0} ERROR: Can't create mount point"
+ exit 1
+fi
+
+[ 0 -lt ${ERROR} ] && exit 1
+
+# Zap any partition table on the SD
+dd if=/dev/zero of=/dev/${DEVICE} bs=1024 count=8
+
+printf ${ROOTFS_PARTITION} | ${FDISK} /dev/${DEVICE} || partprobe /dev/${DEVICE}
+sleep 2
+
+if [ ! -b /dev/${DEVICE}2 ]
+then
+ echo "${0} ERROR: /dev/${DEVICE}2 partition not recognized"
+ exit 1
+fi
+
+# Hat tip to hste and jas for this recipe
+if ! mkfs.ext4 -F -O ^has_journal -E stride=2,stripe-width=1024 -b 4096 /dev/${DEVICE}2
+then
+ echo "${0} ERROR: Failed to create ext4 filesystem on /dev/${DEVICE}2"
+ exit 1
+fi
+
+if ! mount /dev/${DEVICE}2 ${MOUNT_POINT}
+then
+ echo "${0} ERROR: Cannot mount /dev/${DEVICE}2 on ${MOUNT_POINT}"
+ exit 1
+fi
+
+tar xvf ${BUILDROOT_OUTPUT_DIR}/images/rootfs.tar -C ${MOUNT_POINT}
+umount ${MOUNT_POINT}
+
+if ! mkfs.ext4 -F -O ^has_journal -E stride=2,stripe-width=1024 -b 4096 /dev/${DEVICE}1
+then
+ echo "${0} ERROR: Failed to create ext4 filesystem on /dev/${DEVICE}1"
+ exit 1
+fi
+
+if ! mount /dev/${DEVICE}1 ${MOUNT_POINT}
+then
+ echo "${0} ERROR: Cannot mount /dev/${DEVICE}1 on ${MOUNT_POINT}"
+ exit 1
+fi
+
+cp ${BUILDROOT_OUTPUT_DIR}/images/zImage ${MOUNT_POINT}
+cp ${BUILDROOT_OUTPUT_DIR}/images/imx6q-hummingboard.dtb ${MOUNT_POINT}
+umount ${MOUNT_POINT}
+
+dd if=${BUILDROOT_OUTPUT_DIR}/images/SPL of=/dev/${DEVICE} bs=1K seek=1
+dd if=${UBOOT_DIR}/u-boot.img of=/dev/${DEVICE} bs=1K seek=42
+sync
+rmdir ${MOUNT_POINT}
diff --git a/configs/hummingboard_i2eX_defconfig b/configs/hummingboard_i2eX_defconfig
new file mode 100644
index 0000000..0463bae
--- /dev/null
+++ b/configs/hummingboard_i2eX_defconfig
@@ -0,0 +1,24 @@
+BR2_arm=y
+BR2_cortex_a9=y
+BR2_ARM_EABIHF=y
+BR2_ARM_FPU_VFPV3=y
+BR2_TOOLCHAIN_EXTERNAL=y
+BR2_TARGET_GENERIC_HOSTNAME="HummingBoard"
+BR2_TARGET_GENERIC_ISSUE="Welcome to HummingBoard i2eX"
+BR2_LINUX_KERNEL=y
+BR2_LINUX_KERNEL_CUSTOM_GIT=y
+BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/SolidRun/linux-imx6-3.14.git"
+BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="ea83bda1b403d745c67fbf6ea307d05ca138577f"
+BR2_LINUX_KERNEL_DEFCONFIG="imx_v7_cbi_hb"
+BR2_LINUX_KERNEL_ZIMAGE=y
+BR2_LINUX_KERNEL_DTS_SUPPORT=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="imx6q-hummingboard"
+BR2_LINUX_KERNEL_INSTALL_TARGET=y
+BR2_TARGET_UBOOT=y
+BR2_TARGET_UBOOT_BOARDNAME="mx6_cubox-i"
+BR2_TARGET_UBOOT_CUSTOM_GIT=y
+BR2_TARGET_UBOOT_CUSTOM_REPO_URL="https://github.com/SolidRun/u-boot-imx6.git"
+BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION="e817fa3165a607b581433a6abfe37e095a5d1dc9"
+BR2_TARGET_UBOOT_SPL=y
+BR2_TARGET_UBOOT_SPL_NAME="SPL"
+BR2_PACKAGE_HOST_UBOOT_TOOLS=y
--
2.1.4
More information about the buildroot
mailing list