The omapl138 requires a AIS U-Boot image format to be flashed to the SD card. Add a custom script to create SD card for the device.
Signed-off-by: Jacob Stiffler <[email protected]> Signed-off-by: Aparna M <[email protected]> --- create-sdcard-omapl138.sh | 1131 +++++++++++++++++++++++++++++++++++++ 1 file changed, 1131 insertions(+) create mode 100644 create-sdcard-omapl138.sh diff --git a/create-sdcard-omapl138.sh b/create-sdcard-omapl138.sh new file mode 100644 index 0000000..b039b8c --- /dev/null +++ b/create-sdcard-omapl138.sh @@ -0,0 +1,1131 @@ +#!/bin/bash +# Authors: +# LT Thomas <[email protected]> +# Chase Maupin +# Franklin Cooper Jr. +# +# create-sdcard.sh v0.3 + +# This distribution contains contributions or derivatives under copyright +# as follows: +# +# Copyright (c) 2010, Texas Instruments Incorporated +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# - Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# - Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# - Neither the name of Texas Instruments nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE +# OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Force locale language to be set to English. This avoids issues when doing +# text and string processing. +export LANG=C + +# Determine the absolute path to the executable +# EXE will have the PWD removed so we can concatenate with the PWD safely +PWD=`pwd` +EXE=`echo $0 | sed s=$PWD==` +EXEPATH="$PWD"/"$EXE" +clear +cat << EOM + +################################################################################ + +This script will create a bootable SD card from custom or pre-built binaries. + +The script must be run with root permissions and from the bin directory of +the SDK + +Example: + $ sudo ./create-sdcard.sh + +Formatting can be skipped if the SD card is already formatted and +partitioned properly. + +################################################################################ + +EOM + +AMIROOT=`whoami | awk {'print $1'}` +if [ "$AMIROOT" != "root" ] ; then + + echo " **** Error *** must run script with sudo" + echo "" + exit +fi + +THEPWD=$EXEPATH +PARSEPATH=`echo $THEPWD | grep -o '.*ti-sdk.*.[0-9]/'` + +if [ "$PARSEPATH" != "" ] ; then +PATHVALID=1 +else +PATHVALID=0 +fi + +#Precentage function +untar_progress () +{ + TARBALL=$1; + DIRECTPATH=$2; + BLOCKING_FACTOR=$(($(xz --robot --list ${TARBALL} | grep 'totals' | awk '{print $5}') / 51200 + 1)); + tar --blocking-factor=${BLOCKING_FACTOR} --checkpoint=1 --checkpoint-action='ttyout=Written %u% \r' -Jxf ${TARBALL} -C ${DIRECTPATH} +} + +#copy/paste programs +cp_progress () +{ + CURRENTSIZE=0 + while [ $CURRENTSIZE -lt $TOTALSIZE ] + do + TOTALSIZE=$1; + TOHERE=$2; + CURRENTSIZE=`sudo du -c $TOHERE | grep total | awk {'print $1'}` + echo -e -n "$CURRENTSIZE / $TOTALSIZE copied \r" + sleep 1 + done +} + +check_for_sdcards() +{ + # find the avaible SD cards + ROOTDRIVE=`mount | grep 'on / ' | awk {'print $1'} | cut -c6-8` + PARTITION_TEST=`cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>\|\<mmcblk.\>' | grep -n ''` + if [ "$PARTITION_TEST" = "" ]; then + echo -e "Please insert a SD card to continue\n" + while [ "$PARTITION_TEST" = "" ]; do + read -p "Type 'y' to re-detect the SD card or 'n' to exit the script: " REPLY + if [ "$REPLY" = 'n' ]; then + exit 1 + fi + ROOTDRIVE=`mount | grep 'on / ' | awk {'print $1'} | cut -c6-8` + PARTITION_TEST=`cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>\|\<mmcblk.\>' | grep -n ''` + done + fi +} + +populate_3_partitions() { + ENTERCORRECTLY="0" + while [ $ENTERCORRECTLY -ne 1 ] + do + read -e -p 'Enter path where SD card tarballs were downloaded : ' TARBALLPATH + + echo "" + ENTERCORRECTLY=1 + if [ -d $TARBALLPATH ] + then + echo "Directory exists" + echo "" + echo "This directory contains:" + ls $TARBALLPATH + echo "" + read -p 'Is this correct? [y/n] : ' ISRIGHTPATH + case $ISRIGHTPATH in + "y" | "Y") ;; + "n" | "N" ) ENTERCORRECTLY=0;continue;; + *) echo "Please enter y or n";ENTERCORRECTLY=0;continue;; + esac + else + echo "Invalid path make sure to include complete path" + ENTERCORRECTLY=0 + continue + fi + # Check that tarballs were found + if [ ! -e "$TARBALLPATH""/boot_partition.tar.xz" ] + then + echo "Could not find boot_partition.tar.xz as expected. Please" + echo "point to the directory containing the boot_partition.tar.xz" + ENTERCORRECTLY=0 + continue + fi + + if [ ! -e "$TARBALLPATH""/rootfs_partition.tar.xz" ] + then + echo "Could not find rootfs_partition.tar.xz as expected. Please" + echo "point to the directory containing the rootfs_partition.tar.xz" + ENTERCORRECTLY=0 + continue + fi + + if [ ! -e "$TARBALLPATH""/start_here_partition.tar.xz" ] + then + echo "Could not find start_here_partition.tar.xz as expected. Please" + echo "point to the directory containing the start_here_partition.tar.xz" + ENTERCORRECTLY=0 + continue + fi + done + + # Make temporary directories and untar mount the partitions + mkdir $PWD/boot + mkdir $PWD/rootfs + mkdir $PWD/start_here + mkdir $PWD/tmp + + mount -t vfat ${DRIVE}${P}1 boot + mount -t ext3 ${DRIVE}${P}2 rootfs + mount -t ext3 ${DRIVE}${P}3 start_here + + # Remove any existing content in case the partitions were not + # recreated + sudo rm -rf boot/* + sudo rm -rf rootfs/* + sudo rm -rf start_here/* + + # Extract the tarball contents. +cat << EOM + +################################################################################ + Extracting boot partition tarball + +################################################################################ +EOM + untar_progress $TARBALLPATH/boot_partition.tar.xz tmp/ + if [ -e "./tmp/MLO" ] + then + cp ./tmp/MLO boot/ + fi + cp -rf ./tmp/* boot/ + +cat << EOM + +################################################################################ + Extracting rootfs partition tarball + +################################################################################ +EOM + untar_progress $TARBALLPATH/rootfs_partition.tar.xz rootfs/ + +cat << EOM + +################################################################################ + Extracting start_here partition to temp directory + +################################################################################ +EOM + rm -rf tmp/* + untar_progress $TARBALLPATH/start_here_partition.tar.xz tmp/ + +cat << EOM + +################################################################################ + Copying Contents to START_HERE + +################################################################################ +EOM + + TOTALSIZE=`sudo du -c tmp/* | grep total | awk {'print $1'}` + cp -rf tmp/* start_here/ & + cp_progress $TOTALSIZE start_here/ + sync;sync + # Fix up the START_HERE partitoin permissions + chown nobody -R start_here + chgrp nogroup -R start_here + + umount boot rootfs start_here + sync;sync + + # Clean up the temp directories + rm -rf boot rootfs start_here tmp +} + + +# find the avaible SD cards +ROOTDRIVE=`mount | grep 'on / ' | awk {'print $1'} | cut -c6-9` +if [ "$ROOTDRIVE" = "root" ]; then + ROOTDRIVE=`readlink /dev/root | cut -c1-3` +else + ROOTDRIVE=`echo $ROOTDRIVE | cut -c1-3` +fi + +PARTITION_TEST=`cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>\|\<mmcblk.\>' | grep -n ''` + +# Check for available mounts +check_for_sdcards + +echo -e "\nAvailable Drives to write images to: \n" +echo "# major minor size name " +cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>\|\<mmcblk.\>' | grep -n '' +echo " " + +DEVICEDRIVENUMBER= +while true; +do + read -p 'Enter Device Number or 'n' to exit: ' DEVICEDRIVENUMBER + echo " " + if [ "$DEVICEDRIVENUMBER" = 'n' ]; then + exit 1 + fi + + if [ "$DEVICEDRIVENUMBER" = "" ]; then + # Check to see if there are any changes + check_for_sdcards + echo -e "These are the Drives available to write images to:" + echo "# major minor size name " + cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>\|\<mmcblk.\>' | grep -n '' + echo " " + continue + fi + + DEVICEDRIVENAME=`cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>\|\<mmcblk.\>' | grep -n '' | grep "${DEVICEDRIVENUMBER}:" | awk '{print $5}'` + if [ -n "$DEVICEDRIVENAME" ] + then + DRIVE=/dev/$DEVICEDRIVENAME + DEVICESIZE=`cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>\|\<mmcblk.\>' | grep -n '' | grep "${DEVICEDRIVENUMBER}:" | awk '{print $4}'` + break + else + echo -e "Invalid selection!" + # Check to see if there are any changes + check_for_sdcards + echo -e "These are the only Drives available to write images to: \n" + echo "# major minor size name " + cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>\|\<mmcblk.\>' | grep -n '' + echo " " + fi +done + +echo "$DEVICEDRIVENAME was selected" +#Check the size of disk to make sure its under 16GB +if [ $DEVICESIZE -gt 17000000 ] ; then +cat << EOM + +################################################################################ + + **********WARNING********** + + Selected Device is greater then 16GB + Continuing past this point will erase data from device + Double check that this is the correct SD Card + +################################################################################ + +EOM + ENTERCORRECTLY=0 + while [ $ENTERCORRECTLY -ne 1 ] + do + read -p 'Would you like to continue [y/n] : ' SIZECHECK + echo "" + echo " " + ENTERCORRECTLY=1 + case $SIZECHECK in + "y") ;; + "n") exit;; + *) echo "Please enter y or n";ENTERCORRECTLY=0;; + esac + echo "" + done + +fi +echo "" + +DRIVE=/dev/$DEVICEDRIVENAME +NUM_OF_DRIVES=`df | grep -c $DEVICEDRIVENAME` + +# This if statement will determine if we have a mounted sdX or mmcblkX device. +# If it is mmcblkX, then we need to set an extra char in the partition names, 'p', +# to account for /dev/mmcblkXpY labled partitions. +if [[ ${DEVICEDRIVENAME} =~ ^sd. ]]; then + echo "$DRIVE is an sdx device" + P='' +else + echo "$DRIVE is an mmcblkx device" + P='p' +fi + +if [ "$NUM_OF_DRIVES" != "0" ]; then + echo "Unmounting the $DEVICEDRIVENAME drives" + for ((c=1; c<="$NUM_OF_DRIVES"; c++ )) + do + unmounted=`df | grep '\<'$DEVICEDRIVENAME$P$c'\>' | awk '{print $1}'` + if [ -n "$unmounted" ] + then + echo " unmounted ${DRIVE}$P$c" + sudo umount -f ${DRIVE}$P$c + fi + + done +fi + +# Refresh this variable as the device may not be mounted at script instantiation time +# This will always return one more then needed +NUM_OF_PARTS=`cat /proc/partitions | grep -v $ROOTDRIVE | grep -c $DEVICEDRIVENAME` +for ((c=1; c<"$NUM_OF_PARTS"; c++ )) +do + SIZE=`cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<'$DEVICEDRIVENAME$P$c'\>' | awk '{print $3}'` + echo "Current size of $DEVICEDRIVENAME$P$c $SIZE bytes" +done + +# check to see if the device is already partitioned +for (( c=1; c<5; c++ )) +do + eval "SIZE$c=`cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<'$DEVICEDRIVENAME$P$c'\>' | awk '{print $3}'`" +done + +PARTITION="0" +if [ -n "$SIZE1" -a -n "$SIZE2" ] ; then + if [ "$SIZE1" -gt "72000" -a "$SIZE2" -gt "700000" ] + then + PARTITION=1 + + if [ -z "$SIZE3" -a -z "$SIZE4" ] + then + #Detected 2 partitions + PARTS=2 + + elif [ "$SIZE3" -gt "1000" -a -z "$SIZE4" ] + then + #Detected 3 partitions + PARTS=3 + + else + echo "SD Card is not correctly partitioned" + PARTITION=0 + fi + fi +else + echo "SD Card is not correctly partitioned" + PARTITION=0 + PARTS=0 +fi + + +#Partition is found +if [ "$PARTITION" -eq "1" ] +then +cat << EOM + +################################################################################ + + Detected device has $PARTS partitions already + + Re-partitioning will allow the choice of 2 or 3 partitions + +################################################################################ + +EOM + + ENTERCORRECTLY=0 + while [ $ENTERCORRECTLY -ne 1 ] + do + read -p 'Would you like to re-partition the drive anyways [y/n] : ' CASEPARTITION + echo "" + echo " " + ENTERCORRECTLY=1 + case $CASEPARTITION in + "y") echo "Now partitioning $DEVICEDRIVENAME ...";PARTITION=0;; + "n") echo "Skipping partitioning";; + *) echo "Please enter y or n";ENTERCORRECTLY=0;; + esac + echo "" + done + +fi + +#Partition is not found, choose to partition 2 or 3 segments +if [ "$PARTITION" -eq "0" ] +then +cat << EOM + +################################################################################ + + Select 2 partitions if only need boot and rootfs (most users). + Select 3 partitions if need SDK & other content on SD card. This is + usually used by device manufacturers with access to partition tarballs. + + ****WARNING**** continuing will erase all data on $DEVICEDRIVENAME + +################################################################################ + +EOM + ENTERCORRECTLY=0 + while [ $ENTERCORRECTLY -ne 1 ] + do + + read -p 'Number of partitions needed [2/3] : ' CASEPARTITIONNUMBER + echo "" + echo " " + ENTERCORRECTLY=1 + case $CASEPARTITIONNUMBER in + "2") echo "Now partitioning $DEVICEDRIVENAME with 2 partitions...";PARTITION=2;; + "3") echo "Now partitioning $DEVICEDRIVENAME with 3 partitions...";PARTITION=3;; + "n") exit;; + *) echo "Please enter 2 or 3";ENTERCORRECTLY=0;; + esac + echo " " + done +fi + + + +#Section for partitioning the drive + +#create 3 partitions +if [ "$PARTITION" -eq "3" ] +then + +# set the PARTS value as well +PARTS=3 + +cat << EOM + +################################################################################ + + Now making 3 partitions + +################################################################################ + +EOM + +dd if=/dev/zero of=$DRIVE bs=1024 count=1024 + +SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'` + +echo DISK SIZE - $SIZE bytes + +parted -s $DRIVE mklabel msdos +parted -s $DRIVE unit cyl mkpart primary fat32 -- 0 9 +parted -s $DRIVE set 1 boot on +parted -s $DRIVE unit cyl mkpart primary ext2 -- 9 310 +parted -s $DRIVE unit cyl mkpart primary ext2 -- 310 -2 + + +cat << EOM + +################################################################################ + + Partitioning Boot + +################################################################################ +EOM + mkfs.vfat -F 32 -n "boot" ${DRIVE}${P}1 +cat << EOM + +################################################################################ + + Partitioning Rootfs + +################################################################################ +EOM + mkfs.ext3 -L "rootfs" ${DRIVE}${P}2 +cat << EOM + +################################################################################ + + Partitioning START_HERE + +################################################################################ +EOM + mkfs.ext3 -L "START_HERE" ${DRIVE}${P}3 + sync + sync + +#create only 2 partitions +elif [ "$PARTITION" -eq "2" ] +then + +# Set the PARTS value as well +PARTS=2 +cat << EOM + +################################################################################ + + Now making 2 partitions + +################################################################################ + +EOM +dd if=/dev/zero of=$DRIVE bs=1024 count=1024 + +SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'` + +echo DISK SIZE - $SIZE bytes + +parted -s $DRIVE mklabel msdos +parted -s $DRIVE unit cyl mkpart primary fat32 -- 0 9 +parted -s $DRIVE set 1 boot on +parted -s $DRIVE unit cyl mkpart primary ext2 -- 9 -2 + +cat << EOM + +################################################################################ + + Partitioning Boot + +################################################################################ +EOM + mkfs.vfat -F 32 -n "boot" ${DRIVE}${P}1 +cat << EOM + +################################################################################ + + Partitioning rootfs + +################################################################################ +EOM + mkfs.ext3 -L "rootfs" ${DRIVE}${P}2 + sync + sync + INSTALLSTARTHERE=n +fi + + + +#Break between partitioning and installing file system +cat << EOM + + +################################################################################ + + Partitioning is now done + Continue to install filesystem or select 'n' to safe exit + + **Warning** Continuing will erase files any files in the partitions + +################################################################################ + + +EOM +ENTERCORRECTLY=0 +while [ $ENTERCORRECTLY -ne 1 ] +do + read -p 'Would you like to continue? [y/n] : ' EXITQ + echo "" + echo " " + ENTERCORRECTLY=1 + case $EXITQ in + "y") ;; + "n") exit;; + *) echo "Please enter y or n";ENTERCORRECTLY=0;; + esac +done + +# If this is a three partition card then we will jump to a function to +# populate the three partitions and then exit the script. If not we +# go on to prompt the user for input on the two partitions +if [ "$PARTS" -eq "3" ] +then + populate_3_partitions + exit 0 +fi + +#Add directories for images +export START_DIR=$PWD +mkdir $START_DIR/tmp +export PATH_TO_SDBOOT=boot +export PATH_TO_SDROOTFS=rootfs +export PATH_TO_TMP_DIR=$START_DIR/tmp + + +echo " " +echo "Mount the partitions " +mkdir $PATH_TO_SDBOOT +mkdir $PATH_TO_SDROOTFS + +sudo mount -t vfat ${DRIVE}${P}1 boot/ +sudo mount -t ext3 ${DRIVE}${P}2 rootfs/ + + + +echo " " +echo "Emptying partitions " +echo " " +sudo rm -rf $PATH_TO_SDBOOT/* +sudo rm -rf $PATH_TO_SDROOTFS/* + +echo "" +echo "Syncing...." +echo "" +sync +sync +sync + +cat << EOM +################################################################################ + + Choose file path to install from + + 1 ) Install pre-built images from SDK + 2 ) Enter in custom boot and rootfs file paths + +################################################################################ + +EOM +ENTERCORRECTLY=0 +while [ $ENTERCORRECTLY -ne 1 ] +do + read -p 'Choose now [1/2] : ' FILEPATHOPTION + echo "" + echo " " + ENTERCORRECTLY=1 + case $FILEPATHOPTION in + "1") echo "Will now install from SDK pre-built images";; + "2") echo "";; + *) echo "Please enter 1 or 2";ENTERCORRECTLY=0;; + esac +done + +# SDK DEFAULTS +if [ $FILEPATHOPTION -eq 1 ] ; then + + #check that in the right directory + + THEEVMSDK=`echo $PARSEPATH | grep -o 'ti-sdk-.*[0-9]'` + + if [ $PATHVALID -eq 1 ]; then + echo "now installing: $THEEVMSDK" + else + echo "no SDK PATH found" + ENTERCORRECTLY=0 + while [ $ENTERCORRECTLY -ne 1 ] + do + read -e -p 'Enter path to SDK : ' SDKFILEPATH + + echo "" + ENTERCORRECTLY=1 + if [ -d $SDKFILEPATH ] + then + echo "Directory exists" + echo "" + PARSEPATH=`echo $SDKFILEPATH | grep -o '.*ti-sdk.*.[0-9]/'` + #echo $PARSEPATH + + if [ "$PARSEPATH" != "" ] ; then + PATHVALID=1 + else + PATHVALID=0 + fi + #echo $PATHVALID + if [ $PATHVALID -eq 1 ] ; then + + THEEVMSDK=`echo $SDKFILEPATH | grep -o 'ti-sdk-.*[0-9]'` + echo "Is this the correct SDK: $THEEVMSDK" + echo "" + read -p 'Is this correct? [y/n] : ' ISRIGHTPATH + case $ISRIGHTPATH in + "y") ;; + "n") ENTERCORRECTLY=0;; + *) echo "Please enter y or n";ENTERCORRECTLY=0;; + esac + else + echo "Invalid SDK path make sure to include ti-sdk-xxxx" + ENTERCORRECTLY=0 + fi + + else + echo "Invalid path make sure to include complete path" + + ENTERCORRECTLY=0 + fi + done + fi + + + + #check that files are in SDK + BOOTFILEPATH="$PARSEPATH/board-support/prebuilt-images" + MLO=`ls $BOOTFILEPATH | grep MLO | awk {'print $1'}` + KERNELIMAGE=`ls $BOOTFILEPATH | grep [uz]Image | awk {'print $1'}` + BOOTIMG=`ls $BOOTFILEPATH | grep u-boot | grep .img | awk {'print $1'}` + BOOTBIN=`ls $BOOTFILEPATH | grep u-boot | grep .bin | awk {'print $1'}` + BOOTAIS=`ls $BOOTFILEPATH | grep u-boot | grep .ais | awk {'print $1'}` + BOOTUENV=`ls $BOOTFILEPATH | grep uEnv.txt | awk {'print $1'}` + #rootfs + ROOTFILEPARTH="$PARSEPATH/filesystem" + #ROOTFSTAR=`ls $ROOTFILEPARTH | grep tisdk.*rootfs | awk {'print $1'}` + + #Make sure there is only 1 tar + CHECKNUMOFTAR=`ls $ROOTFILEPARTH | grep "tisdk.*rootfs" | grep 'tar.xz' | grep -n '' | grep '2:' | awk {'print $1'}` + if [ -n "$CHECKNUMOFTAR" ] + then +cat << EOM + +################################################################################ + + Multiple rootfs Tarballs found + +################################################################################ + +EOM + ls $ROOTFILEPARTH | grep "tisdk.*rootfs" | grep 'tar.xz' | grep -n '' | awk {'print " " , $1'} + echo "" + read -p "Enter Number of rootfs Tarball: " TARNUMBER + echo " " + FOUNDTARFILENAME=`ls $ROOTFILEPARTH | grep "rootfs" | grep 'tar.xz' | grep -n '' | grep "${TARNUMBER}:" | cut -c3- | awk {'print$1'}` + ROOTFSTAR=$FOUNDTARFILENAME + + else + ROOTFSTAR=`ls $ROOTFILEPARTH | grep "tisdk.*rootfs" | grep 'tar.xz' | awk {'print $1'}` + fi + + ROOTFSUSERFILEPATH=$ROOTFILEPARTH/$ROOTFSTAR + BOOTPATHOPTION=1 + ROOTFSPATHOPTION=2 + +elif [ $FILEPATHOPTION -eq 2 ] ; then +cat << EOM +################################################################################ + + For U-boot and MLO + + If files are located in Tarball write complete path including the file name. + e.x. $: /home/user/MyCustomTars/boot.tar.xz + + If files are located in a directory write the directory path + e.x. $: /ti-sdk/board-support/prebuilt-images/ + + NOTE: Not all platforms will have an MLO file and this file can + be ignored for platforms that do not support an MLO. + + Update: The proper location for the kernel image and device tree + files have moved from the boot partition to the root filesystem. + +################################################################################ + +EOM + ENTERCORRECTLY=0 + while [ $ENTERCORRECTLY -ne 1 ] + do + read -e -p 'Enter path for Boot Partition : ' BOOTUSERFILEPATH + + echo "" + ENTERCORRECTLY=1 + if [ -f $BOOTUSERFILEPATH ] + then + echo "File exists" + echo "" + elif [ -d $BOOTUSERFILEPATH ] + then + echo "Directory exists" + echo "" + echo "This directory contains:" + ls $BOOTUSERFILEPATH + echo "" + read -p 'Is this correct? [y/n] : ' ISRIGHTPATH + case $ISRIGHTPATH in + "y") ;; + "n") ENTERCORRECTLY=0;; + *) echo "Please enter y or n";ENTERCORRECTLY=0;; + esac + else + echo "Invalid path make sure to include complete path" + + ENTERCORRECTLY=0 + fi + done + + +cat << EOM + + +################################################################################ + + For Kernel Image and Device Trees files + + What would you like to do? + 1) Reuse kernel image and device tree files found in the selected rootfs. + 2) Provide a directory that contains the kernel image and device tree files + to be used. + +################################################################################ + +EOM + +ENTERCORRECTLY=0 +while [ $ENTERCORRECTLY -ne 1 ] +do + + read -p 'Choose option 1 or 2 : ' CASEOPTION + echo "" + echo " " + ENTERCORRECTLY=1 + case $CASEOPTION in + "1") echo "Reusing kernel and dt files from the rootfs's boot directory";KERNELFILESOPTION=1;; + "2") echo "Choosing a directory that contains the kernel files to be used";KERNELFILESOPTION=2;; + "n") exit;; + *) echo "Please enter 1 or 2";ENTERCORRECTLY=0;; + esac + echo " " +done + +if [ $KERNELFILESOPTION == 2 ] +then + +cat << EOM +################################################################################ + + For Kernel Image and Device Trees files + + The kernel image name should contain the image type uImage or zImage depending + on which format is used. + + The device tree files must end with .dtb + e.g am335x-evm.dtb am43x-gp-evm.dtb + + +################################################################################ + +EOM + ENTERCORRECTLY=0 + while [ $ENTERCORRECTLY -ne 1 ] + do + read -e -p 'Enter path for kernel image and device tree files : ' KERNELUSERFILEPATH + + echo "" + ENTERCORRECTLY=1 + + if [ -d $KERNELUSERFILEPATH ] + then + echo "Directory exists" + echo "" + echo "This directory contains:" + ls $KERNELUSERFILEPATH + echo "" + read -p 'Is this correct? [y/n] : ' ISRIGHTPATH + case $ISRIGHTPATH in + "y") ;; + "n") ENTERCORRECTLY=0;; + *) echo "Please enter y or n";ENTERCORRECTLY=0;; + esac + else + echo "Invalid path make sure to include complete path" + ENTERCORRECTLY=0 + fi + done +fi + +cat << EOM + + +################################################################################ + + For Rootfs partition + + If files are located in Tarball write complete path including the file name. + e.x. $: /home/user/MyCustomTars/rootfs.tar.xz + + If files are located in a directory write the directory path + e.x. $: /ti-sdk/targetNFS/ + +################################################################################ + +EOM + ENTERCORRECTLY=0 + while [ $ENTERCORRECTLY -ne 1 ] + do + read -e -p 'Enter path for Rootfs Partition : ' ROOTFSUSERFILEPATH + echo "" + ENTERCORRECTLY=1 + if [ -f $ROOTFSUSERFILEPATH ] + then + echo "File exists" + echo "" + elif [ -d $ROOTFSUSERFILEPATH ] + then + echo "This directory contains:" + ls $ROOTFSUSERFILEPATH + echo "" + read -p 'Is this correct? [y/n] : ' ISRIGHTPATH + case $ISRIGHTPATH in + "y") ;; + "n") ENTERCORRECTLY=0;; + *) echo "Please enter y or n";ENTERCORRECTLY=0;; + esac + + else + echo "Invalid path make sure to include complete path" + + ENTERCORRECTLY=0 + fi + done + echo "" + + + # Check if user entered a tar or not for Boot + ISBOOTTAR=`ls $BOOTUSERFILEPATH | grep .tar.xz | awk {'print $1'}` + if [ -n "$ISBOOTTAR" ] + then + BOOTPATHOPTION=2 + else + BOOTPATHOPTION=1 + BOOTFILEPATH=$BOOTUSERFILEPATH + MLO=`ls $BOOTFILEPATH | grep MLO | awk {'print $1'}` + BOOTIMG=`ls $BOOTFILEPATH | grep u-boot | grep .img | awk {'print $1'}` + BOOTBIN=`ls $BOOTFILEPATH | grep u-boot | grep .bin | awk {'print $1'}` + BOOTAIS=`ls $BOOTFILEPATH | grep u-boot | grep .ais | awk {'print $1'}` + BOOTUENV=`ls $BOOTFILEPATH | grep uEnv.txt | awk {'print $1'}` + fi + + + if [ "$KERNELFILESOPTION" == "2" ] + then + KERNELIMAGE=`ls $KERNELUSERFILEPATH | grep [uz]Image | awk {'print $1'}` + DTFILES=`ls $KERNELUSERFILEPATH | grep .dtb$ | awk {'print $1'}` + fi + + + #Check if user entered a tar or not for Rootfs + ISROOTFSTAR=`ls $ROOTFSUSERFILEPATH | grep .tar.xz | awk {'print $1'}` + if [ -n "$ISROOTFSTAR" ] + then + ROOTFSPATHOPTION=2 + else + ROOTFSPATHOPTION=1 + ROOTFSFILEPATH=$ROOTFSUSERFILEPATH + fi +fi + +cat << EOM +################################################################################ + + Copying files now... will take minutes + +################################################################################ + +Copying boot partition +EOM + + +if [ $BOOTPATHOPTION -eq 1 ] ; then + + echo "" + #copy boot files out of board support + if [ "$MLO" != "" ] ; then + cp $BOOTFILEPATH/$MLO $PATH_TO_SDBOOT/MLO + echo "MLO copied" + else + echo "MLO file not found" + fi + + echo "" + + echo "" + + if [ "$BOOTIMG" != "" ] ; then + cp $BOOTFILEPATH/$BOOTIMG $PATH_TO_SDBOOT/u-boot.img + echo "u-boot.img copied" + elif [ "$BOOTBIN" != "" ] ; then + cp $BOOTFILEPATH/$BOOTBIN $PATH_TO_SDBOOT/u-boot.bin + echo "u-boot.bin copied" + else + echo "No U-Boot file found" + fi + + echo "" + + if [ "$BOOTUENV" != "" ] ; then + cp $BOOTFILEPATH/$BOOTUENV $PATH_TO_SDBOOT/uEnv.txt + echo "uEnv.txt copied" + fi + +elif [ $BOOTPATHOPTION -eq 2 ] ; then + untar_progress $BOOTUSERFILEPATH $PATH_TO_TMP_DIR + cp -rf $PATH_TO_TMP_DIR/* $PATH_TO_SDBOOT + + # Get path to AIS image + BOOTAIS=`ls $PATH_TO_TMP_DIR | grep u-boot | grep .ais | awk {'print $1'}` + + echo "" + +fi + +echo "" +sync + +echo "Copying rootfs System partition" +if [ $ROOTFSPATHOPTION -eq 1 ] ; then + TOTALSIZE=`sudo du -c $ROOTFSUSERFILEPATH/* | grep total | awk {'print $1'}` + sudo cp -r $ROOTFSUSERFILEPATH/* $PATH_TO_SDROOTFS & cp_progress $TOTALSIZE $PATH_TO_SDROOTFS + +elif [ $ROOTFSPATHOPTION -eq 2 ] ; then + untar_progress $ROOTFSUSERFILEPATH $PATH_TO_SDROOTFS +fi + +echo "" +echo "" +echo "Syncing..." +sync +sync +sync +sync +sync +sync +sync +sync + +if [ "$KERNELFILESOPTION" == "2" ] +then + + mkdir -p $PATH_TO_SDROOTFS/boot + + if [ "$KERNELIMAGE" != "" ] ; then + + CLEANKERNELNAME=`ls "$BOOTFILEPATH/$KERNELIMAGE" | grep -o [uz]Image` + cp -f $KERNELUSERFILEPATH/$KERNELIMAGE $PATH_TO_SDROOTFS/boot/$CLEANKERNELNAME + echo "Kernel image copied" + else + echo "$KERNELIMAGE file not found" + fi + + COPYINGDTB="false" + for dtb in $DTFILES + do + if [ -f "$KERNELUSERFILEPATH/$dtb" ] ; then + cp -f $KERNELUSERFILEPATH/$dtb $PATH_TO_SDROOTFS/boot + echo "$dtb copied" + COPYINGDTB="true" + fi + done + + if [ "$COPYINGDTB" == "false" ] + then + echo "No device tree files found" + fi + +fi + +echo " " +echo "Un-mount the partitions " +sudo umount -f $PATH_TO_SDBOOT +sudo umount -f $PATH_TO_SDROOTFS + +echo "" +if [ "$BOOTAIS" != "" ] ; then + if [ $BOOTPATHOPTION -eq 1 ] ; then + dd if=$BOOTFILEPATH/$BOOTAIS of=${DRIVE} seek=117 bs=512 conv=fsync + elif [ $BOOTPATHOPTION -eq 2 ] ; then + dd if=$PATH_TO_TMP_DIR/$BOOTAIS of=${DRIVE} seek=117 bs=512 conv=fsync + fi + echo "u-boot.ais copied" +else + echo "No U-Boot AIS file found" +fi + +echo " " +echo "Remove created temp directories " +sudo rm -rf $PATH_TO_TMP_DIR +sudo rm -rf $PATH_TO_SDROOTFS +sudo rm -rf $PATH_TO_SDBOOT + + +echo " " +echo "Operation Finished" +echo " " -- 2.17.1 -=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#13529): https://lists.yoctoproject.org/g/meta-arago/message/13529 Mute This Topic: https://lists.yoctoproject.org/mt/89190507/21656 Group Owner: [email protected] Unsubscribe: https://lists.yoctoproject.org/g/meta-arago/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
