#!/bin/bash C_NC='\033[0m' C_LRED='\033[1;31m' EMMC_DEV_PATH="/dev/mmcblk3" SD_DEV_PATH="/dev/mmcblk2" PART1=p1 PART2=p2 PART3=p3 PART4=p4 FNAME_UBOOT="u-boot.imx" FNAME_LOGO="init.bmp" FNAME_DTB="imx6s-prime-oven.dtb" FNAME_KERNEL="uImage" FNAME_FSCPIO="ramdisk-prime_oven.uboot" FNAME_RFS="rootfs.tar" FNAME_APP="application.tar" SD_MOUNT_PATH_P1="/tmp/mmcblk2p1" EMMC_MOUNT_PATH_P1="/tmp/mmcblk3p1" EMMC_MOUNT_PATH_P2="/tmp/mmcblk3p2" EMMC_MOUNT_PATH_P3="/tmp/mmcblk3p3" EMMC_MOUNT_PATH_P4="/tmp/mmcblk3p4" function Init_Unmount() { echo "" echo -e "${C_LRED}### UnMount - Init_Unmount() ### ${C_NC}" echo "" umount ${EMMC_DEV_PATH}${PART1} umount ${EMMC_DEV_PATH}${PART2} umount ${EMMC_DEV_PATH}${PART3} umount ${EMMC_DEV_PATH}${PART4} umount ${SD_DEV_PATH}${PART1} umount ${SD_DEV_PATH}${PART2} } function create_partition() { echo "" echo -e "${C_LRED}### Fdisk Create Partition - create_partition() ###${C_NC}" echo "" fdisk ${EMMC_DEV_PATH} << EOF o n p 1 4096 8191 n p 2 8192 16383 n p 3 16384 32767 n p 32768 p w EOF } function run_format() { echo "" echo -e "${C_LRED}### Format eMMC - run_format() ###${C_NC}" echo "" mkfs.ext3 -F ${EMMC_DEV_PATH}${PART1} -L BOOT0 mkfs.ext4 -j -F ${EMMC_DEV_PATH}${PART2} -L SYSTEM mkfs.ext4 -j -F ${EMMC_DEV_PATH}${PART3} -L FALINUX mkfs.ext4 -j -F ${EMMC_DEV_PATH}${PART4} -L PRIME } function run_mount() { echo "" echo -e "${C_LRED}### Mount SD/eMMC - run_mount() ###${C_NC}" echo "" if [ ! -d ${SD_MOUNT_PATH_P1} ]; then mkdir ${SD_MOUNT_PATH_P1} fi if [ ! -d ${EMMC_MOUNT_PATH_P1} ]; then mkdir ${EMMC_MOUNT_PATH_P1} fi if [ ! -d ${EMMC_MOUNT_PATH_P2} ]; then mkdir ${EMMC_MOUNT_PATH_P2} fi if [ ! -d ${EMMC_MOUNT_PATH_P3} ]; then mkdir ${EMMC_MOUNT_PATH_P3} fi if [ ! -d ${EMMC_MOUNT_PATH_P4} ]; then mkdir ${EMMC_MOUNT_PATH_P4} fi mount -t ext4 ${SD_DEV_PATH}${PART1} ${SD_MOUNT_PATH_P1} mount -t ext3 ${EMMC_DEV_PATH}${PART1} ${EMMC_MOUNT_PATH_P1} mount -t ext4 ${EMMC_DEV_PATH}${PART2} ${EMMC_MOUNT_PATH_P2} mount -t ext4 ${EMMC_DEV_PATH}${PART3} ${EMMC_MOUNT_PATH_P3} mount -t ext4 ${EMMC_DEV_PATH}${PART4} ${EMMC_MOUNT_PATH_P4} } function run_copy_image() { echo "" echo -e "${C_LRED}### Write SD Boot Image - run_copy_image() ###${C_NC}" echo "" if [ ! -d ${EMMC_MOUNT_PATH_P1}/boot ]; then mkdir ${EMMC_MOUNT_PATH_P1}/boot fi cp -v ${SD_MOUNT_PATH_P1}/boot/${FNAME_UBOOT} ${EMMC_MOUNT_PATH_P1}/boot/ cp -v ${SD_MOUNT_PATH_P1}/boot/${FNAME_LOGO} ${EMMC_MOUNT_PATH_P1}/boot/ cp -v ${SD_MOUNT_PATH_P1}/boot/${FNAME_DTB} ${EMMC_MOUNT_PATH_P1}/boot/ cp -v ${SD_MOUNT_PATH_P1}/boot/${FNAME_KERNEL} ${EMMC_MOUNT_PATH_P1}/boot/ cp -v ${SD_MOUNT_PATH_P1}/boot/${FNAME_FSCPIO} ${EMMC_MOUNT_PATH_P1}/boot/ run_copy_rootfs sleep 1 sync } function run_copy_rootfs() { echo "" echo -e "${C_LRED}### Make MMC Filesystem ###${C_NC}" echo "" tar -xf ${SD_MOUNT_PATH_P1}/boot/${FNAME_RFS} -C ${EMMC_MOUNT_PATH_P2} cp /etc/ssh/ssh_host_ed25519_key ${EMMC_MOUNT_PATH_P2}/etc/ssh/ tar -xf ${SD_MOUNT_PATH_P1}/boot/${FNAME_APP} -C ${EMMC_MOUNT_PATH_P3} tar -xf ${SD_MOUNT_PATH_P1}/boot/${FNAME_APP} -C ${EMMC_MOUNT_PATH_P4} } function run_raw_write() { echo "" echo -e "${C_LRED}### Write SD Boot Image to RAW - run_raw_write() ###${C_NC}" echo "" dd if=${SD_MOUNT_PATH_P1}/boot/${FNAME_UBOOT} of=${EMMC_DEV_PATH} bs=512 seek=2 dd if=${SD_MOUNT_PATH_P1}/boot/${FNAME_LOGO} of=${EMMC_DEV_PATH} bs=512 seek=2048 dd if=${SD_MOUNT_PATH_P1}/boot/${FNAME_DTB} of=${EMMC_DEV_PATH} bs=512 seek=11264 dd if=${SD_MOUNT_PATH_P1}/boot/${FNAME_KERNEL} of=${EMMC_DEV_PATH} bs=512 seek=12288 dd if=${SD_MOUNT_PATH_P1}/boot/${FNAME_FSCPIO} of=${EMMC_DEV_PATH} bs=512 seek=28672 sleep 1 sync } function run_umount() { echo "" echo -e "${C_LRED}### UnMount - run_umount() ###${C_NC}" echo "" umount ${SD_MOUNT_PATH_P1} umount ${EMMC_MOUNT_PATH_P1} umount ${EMMC_MOUNT_PATH_P2} umount ${EMMC_MOUNT_PATH_P3} umount ${EMMC_MOUNT_PATH_P4} } function main() { echo "" echo -e "${C_LRED}#### Start - main() ####${C_NC}" echo "" Init_Unmount create_partition run_format run_mount run_copy_image run_raw_write run_umount } main