This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

create-sdcard.sh script problem

Hello!

I tried to use create-sdcard script to configure sdcard and faced with one problem. Script can't create partitions because it cannot correctly recognize sdcard size.

When next rows in script are executed, SIZE can't be calculate.

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

CYLINDERS=`echo $SIZE/255/63/512 | bc`

sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE << EOF
,9,0x0C,*
10,90,,-
100,,,-
EOF

sudo fdisk -l /dev/sdv | grep Disk | awk '{print $5}'  befor calling script returens 2001731584 (size of SD card - as expected)

BUT WHEN I RUN SCRIPT AND AFTER IT sudo fdisk -l /dev/sdv | grep Disk | awk '{print $5}' returns:

Disk /dev/sdb doesn't contain a valid partition table
2001731584

And it cause that SIZE can't be calculated.

When I set SIZE in script manually all work well:

SIZE=2001731584       #`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`

Can anyone explain to me why this is happening?

Thanks!

Log before changing (bad):

7077.bad.txt
sudo ./create-sdcard.sh


################################################################################

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.

################################################################################

 
Availible Drives to write images to: 
 
#  major   minor    size   name 
1:   8       16    1954816 sdb
 
Enter Device Number: 1
 

sdb was selected

Checking the device is unmounted

sdb1  sdb2   sdb3


SD Card is not correctly partitioned

################################################################################

	Select 2 partitions if only need boot and rootfs (most users)
	Select 3 partitions if need SDK & CCS on SD card.  This is usually used
        by device manufacturers with access to partition tarballs.

	****WARNING**** continuing will erase all data on sdb

################################################################################

Number of partitions needed [2/3] : 2

 
Now partitioning sdb with 2 partitions...
 

################################################################################

		Now making 2 partitions

################################################################################

1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB) copied, 1.0792 s, 972 kB/s
Disk /dev/sdb doesn't contain a valid partition table
./create-sdcard.sh: line 515: 2001731584: command not found
DISK SIZE - bytes
(standard_in) 1: syntax error

Usage:
 sfdisk [options] <device> [...]

Options:
 -s, --show-size           list size of a partition
 -c, --id                  change or print partition Id
     --change-id           change Id
     --print-id            print Id
 -l, --list                list partitions of each device
 -d, --dump                idem, but in a format suitable for later input
 -i, --increment           number cylinders etc. from 1 instead of from 0
 -u, --unit <letter>       units to be used; <letter> can be one of
                             S (sectors), C (cylinders), B (blocks), or M (MB)
 -1, --one-only            reserved option that does nothing currently
 -T, --list-types          list the known partition types
 -D, --DOS                 for DOS-compatibility: waste a little space
 -E, --DOS-extended        DOS extended partition compatibility
 -R, --re-read             make the kernel reread the partition table
 -N <number>               change only the partition with this <number>
 -n                        do not actually write to disk
 -O <file>                 save the sectors that will be overwritten to <file>
 -I <file>                 restore sectors from <file>
 -V, --verify              check that the listed partitions are reasonable
 -v, --version             display version information and exit
 -h, --help                display this help text and exit

Dangerous options:
 -f, --force               disable all consistency checking
     --no-reread           do not check whether the partition is in use
 -q, --quiet               suppress warning messages
 -L, --Linux               do not complain about things irrelevant for Linux
 -g, --show-geometry       print the kernel's idea of the geometry
 -G, --show-pt-geometry    print geometry guessed from the partition table
 -A, --activate[=<device>] activate bootable flag
 -U, --unhide[=<dev>]      set partition unhidden
 -x, --show-extended       also list extended partitions in the output,
                             or expect descriptors for them in the input
     --leave-last          do not allocate the last cylinder
     --IBM                 same as --leave-last
     --in-order            partitions are in order
     --not-in-order        partitions are not in order
     --inside-outer        all logicals inside outermost extended
     --not-inside-outer    not all logicals inside outermost extended
     --nested              every partition is disjoint from all others
     --chained             like nested, but extended partitions may lie outside
     --onesector           partitions are mutually disjoint

Override the detected geometry using:
 -C, --cylinders <number>  set the number of cylinders to use
 -H, --heads <number>      set the number of heads to use
 -S, --sectors <number>    set the number of sectors to use


################################################################################

		Partitioning Boot

################################################################################
mkfs.vfat 3.0.13 (30 Jun 2012)
/dev/sdb1: No such file or directory

################################################################################

		Partitioning rootfs

################################################################################
mke2fs 1.42.5 (29-Jul-2012)
Could not stat /dev/sdb2 --- No such file or directory

The device apparently does not exist; did you specify it correctly?


################################################################################

   Partitioning is now done
   Continue to install filesystem or select 'n' to safe exit

   **Warning** Continuing will erase files any files in the partitions

################################################################################


Would you like to continue? [y/n] : y

 
 
Mount the partitions 
mount: special device /dev/sdb1 does not exist
mount: special device /dev/sdb2 does not exist
 
Emptying partitions 
 

Syncing....

################################################################################

	Choose file path to install from

	1 ) Install pre-built images from SDK
	2 ) Enter in custom boot and rootfs file paths

################################################################################

Choose now [1/2] : 1

 
Will now install from SDK pre-built images
now installing:  ti-sdk-am335x-evm-05.07.00.00
################################################################################

	Copying files now... will take minutes

################################################################################

Copying boot partition

MLO copied

u-boot.bin copied

u-boot.img copied

uImage copied

Copying rootfs System partition
Written 100%  

Syncing...
 
Un-mount the partitions 
umount2: Invalid argument
umount: boot: not mounted
umount2: Invalid argument
umount: rootfs: not mounted
 
Remove created temp directories 
 
Operation Finished


Log after changing (good):

3010.good.txt
sudo ./create-sdcard.sh


################################################################################

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.

################################################################################

 
Availible Drives to write images to: 
 
#  major   minor    size   name 
1:   8       16    1954816 sdb
 
Enter Device Number: 1
 

sdb was selected

Checking the device is unmounted

sdb1  sdb2   sdb3
72261 1871572


################################################################################

   Detected device has 2 partitions already

   Re-partitioning will allow the choice of 2 or 3 partitions

################################################################################

Would you like to re-partition the drive anyways [y/n] : n

 
Skipping partitioning



################################################################################

   Partitioning is now done
   Continue to install filesystem or select 'n' to safe exit

   **Warning** Continuing will erase files any files in the partitions

################################################################################


Would you like to continue? [y/n] : y

 
 
Mount the partitions 
 
Emptying partitions 
 

Syncing....

################################################################################

	Choose file path to install from

	1 ) Install pre-built images from SDK
	2 ) Enter in custom boot and rootfs file paths

################################################################################

Choose now [1/2] : 1

 
Will now install from SDK pre-built images
now installing:  ti-sdk-am335x-evm-05.07.00.00
################################################################################

	Copying files now... will take minutes

################################################################################

Copying boot partition

MLO copied

u-boot.bin copied

u-boot.img copied

uImage copied

Copying rootfs System partition
Written 100%   

Syncing...
 
Un-mount the partitions 
 
Remove created temp directories 
 
Operation Finished



  • Hi,

    The "Disk /dev/sdb doesn't contain a valid partition table" message can't be filtered by the grep command and this is why you can see it. However it doesn't get parsed by the awk command. This means that the correct value should still be assigned to the $SIZE variable.

    Actually as far as I can see in your error log, the problem is caused by trying to execute the value of $SIZE as a command:

    ./create-sdcard.sh: line 515: 2001731584: command not found

    Please attach your create-sdcard.sh script so that I may take a look at it. I'm interested in line 515.

    Best regards,
    Miroslav

  • Ok. Thanks! I'll done it in evening.

    ./create-sdcard.sh: line 515: 2001731584: command not found

    May be, it is my mistake because I commented 2001731584 to order to generate bad log.

    But:

    Disk /dev/sdb doesn't contain a valid partition table
    2001731584

    is result of execution sudo fdisk -l /dev/sdv | grep Disk | awk '{print $5}' (after awk processing).

  • K Y said:

    But:

    Disk /dev/sdb doesn't contain a valid partition table
    2001731584

    is result of execution sudo fdisk -l /dev/sdv | grep Disk | awk '{print $5}' (after awk processing).

    [/quote]

    The first line isn't processed at all. It will be printed as a warning, regardless of the grep filtering This means that this particular line isn't actually from the grep output, which is then directed to awk for processing.

    Best regards,
    Miroslav

  • Ok, thanks. I'll reply in evening about my issue.

  • create-sdcard.sh:

    2313.create-sdcard.txt
    #!/bin/bash
    # Authors:
    #    LT Thomas <ltjr@ti.com>
    #    Chase Maupin
    # 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.
    
    # 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=$(($(gzip --list ${TARBALL} | sed -n -e "s/.*[[:space:]]\+[0-9]\+[[:space:]]\+\([0-9]\+\)[[:space:]].*$/\1/p") / 51200 + 1));
        tar --blocking-factor=${BLOCKING_FACTOR} --checkpoint=1 --checkpoint-action='ttyout=Written %u%  \r' -zxf ${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
    }
    
    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.gz" ]
            then
                echo "Could not find boot_partition.tar.gz as expected.  Please"
                echo "point to the directory containing the boot_partition.tar.gz"
                ENTERCORRECTLY=0
                continue
            fi
    
            if [ ! -e "$TARBALLPATH""/rootfs_partition.tar.gz" ]
            then
                echo "Could not find rootfs_partition.tar.gz as expected.  Please"
                echo "point to the directory containing the rootfs_partition.tar.gz"
                ENTERCORRECTLY=0
                continue
            fi
    
            if [ ! -e "$TARBALLPATH""/start_here_partition.tar.gz" ]
            then
                echo "Could not find start_here_partition.tar.gz as expected.  Please"
                echo "point to the directory containing the start_here_partition.tar.gz"
                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 "/dev/""$DEVICEDRIVENAME""1" boot
            mount -t ext3 "/dev/""$DEVICEDRIVENAME""2" rootfs
            mount -t ext3 "/dev/""$DEVICEDRIVENAME""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.gz 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.gz rootfs/
    
    cat << EOM
    
    ################################################################################
            Extracting start_here partition to temp directory
    
    ################################################################################
    EOM
            rm -rf tmp/*
            untar_progress $TARBALLPATH/start_here_partition.tar.gz tmp/
    
    cat << EOM
    
    ################################################################################
            Extracting CCS tarball
    
    ################################################################################
    EOM
            mv tmp/CCS-5*.tar.gz .
            untar_progress CCS-5*.tar.gz tmp/
            rm CCS-5*.tar.gz
    
    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
            chmod -R g+r+x,o+r+x start_here/CCS
    
            umount boot rootfs start_here
            sync;sync
    
            # Clean up the temp directories
            rm -rf boot rootfs start_here tmp
    }
    
    
    # find the avaible SD cards
    echo " "
    echo "Availible Drives to write images to: "
    echo " "
    ROOTDRIVE=`mount | grep 'on / ' | awk {'print $1'} |  cut -c6-8`
    echo "#  major   minor    size   name "
    cat /proc/partitions | grep -v $ROOTDRIVE | grep '\<sd.\>' | grep -n ''
    echo " "
    
    ENTERCORRECTLY=0
    while [ $ENTERCORRECTLY -ne 1 ]
    do
    	read -p 'Enter Device Number: ' DEVICEDRIVENUMBER
    	echo " "
    	DEVICEDRIVENAME=`cat /proc/partitions | grep -v 'sda' | grep '\<sd.\>' | grep -n '' | grep "${DEVICEDRIVENUMBER}:" | awk '{print $5}'`
    
    	DRIVE=/dev/$DEVICEDRIVENAME
    	DEVICESIZE=`cat /proc/partitions | grep -v 'sda' | grep '\<sd.\>' | grep -n '' | grep "${DEVICEDRIVENUMBER}:" | awk '{print $4}'`
    
    
    	if [ -n "$DEVICEDRIVENAME" ]
    	then
    		ENTERCORRECTLY=1
    	else
    		echo "Invalid selection"
    	fi
    
    	echo ""
    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
    
    echo "Checking the device is unmounted"
    #unmount drives if they are mounted
    unmounted1=`df | grep '\<'$DEVICEDRIVENAME'1\>' | awk '{print $1}'`
    unmounted2=`df | grep '\<'$DEVICEDRIVENAME'2\>' | awk '{print $1}'`
    unmounted3=`df | grep '\<'$DEVICEDRIVENAME'3\>' | awk '{print $1}'`
    if [ -n "$unmounted1" ]
    then
    	echo " unmounted ${DRIVE}1"
    	sudo umount -f ${DRIVE}1
    fi
    if [ -n "$unmounted2" ]
    then
    	echo " unmounted ${DRIVE}2"
    	sudo umount -f ${DRIVE}2
    fi
    if [ -n "$unmounted3" ]
    then
    	echo " unmounted ${DRIVE}3"
    	sudo umount -f ${DRIVE}3
    fi
    echo ""
    # check to see if the device is already partitioned
    SIZE1=`cat /proc/partitions | grep -v 'sda' | grep '\<'$DEVICEDRIVENAME'1\>'  | awk '{print $3}'`
    SIZE2=`cat /proc/partitions | grep -v 'sda' | grep '\<'$DEVICEDRIVENAME'2\>'  | awk '{print $3}'`
    SIZE3=`cat /proc/partitions | grep -v 'sda' | grep '\<'$DEVICEDRIVENAME'3\>'  | awk '{print $3}'`
    SIZE4=`cat /proc/partitions | grep -v 'sda' | grep '\<'$DEVICEDRIVENAME'4\>'  | awk '{print $3}'`
    echo "${DEVICEDRIVENAME}1  ${DEVICEDRIVENAME}2   ${DEVICEDRIVENAME}3"
    echo $SIZE1 $SIZE2 $SIZE3 $SIZE4
    echo ""
    
    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 & CCS 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
    
    CYLINDERS=`echo $SIZE/255/63/512 | bc`
    
    sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE << EOF
    ,9,0x0C,*
    10,90,,-
    100,,,-
    EOF
    
    cat << EOM
    
    ################################################################################
    
    		Partitioning Boot
    
    ################################################################################
    EOM
    	mkfs.vfat -F 32 -n "boot" ${DRIVE}1
    cat << EOM
    
    ################################################################################
    
    		Partitioning Rootfs
    
    ################################################################################
    EOM
    	mkfs.ext3 -L "rootfs" ${DRIVE}2
    cat << EOM
    
    ################################################################################
    
    		Partitioning START_HERE
    
    ################################################################################
    EOM
    	mkfs.ext3 -L "START_HERE" ${DRIVE}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
    
    CYLINDERS=`echo $SIZE/255/63/512 | bc`
    
    sfdisk -D -H 255 -S 63 -C $CYLINDERS $DRIVE << EOF
    ,9,0x0C,*
    10,,,-
    EOF
    
    cat << EOM
    
    ################################################################################
    
    		Partitioning Boot
    
    ################################################################################
    EOM
    	mkfs.vfat -F 32 -n "boot" ${DRIVE}1
    cat << EOM
    
    ################################################################################
    
    		Partitioning rootfs
    
    ################################################################################
    EOM
    	mkfs.ext3 -L "rootfs" ${DRIVE}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}1 boot/
    sudo mount -t ext3 ${DRIVE}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'}`
    	UIMAGE=`ls $BOOTFILEPATH | grep uImage | 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'}`
    	#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.gz' | 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.gz' | grep -n '' | awk {'print "	" , $1'}
    		echo ""
    		read -p "Enter Number of rootfs Tarball: " TARNUMBER
    		echo " "
    		FOUNDTARFILENAME=`ls $ROOTFILEPARTH | grep "rootfs" | grep 'tar.gz' | grep -n '' | grep "${TARNUMBER}:" | cut -c3- | awk {'print$1'}`
    		ROOTFSTAR=$FOUNDTARFILENAME
    
    	else
    		ROOTFSTAR=`ls  $ROOTFILEPARTH | grep "tisdk-rootfs" | grep 'tar.gz' | awk {'print $1'}`
    	fi
    
    	ROOTFSUSERFILEPATH=$ROOTFILEPARTH/$ROOTFSTAR
    	BOOTPATHOPTION=1
    	ROOTFSPATHOPTION=2
    
    elif [ $FILEPATHOPTION -eq 2  ] ; then
    cat << EOM
    ################################################################################
    
      For Boot partition
    
      If files are located in Tarball write complete path including the file name.
          e.x. $:  /home/user/MyCustomTars/boot.tar.gz
    
      If files are located in a directory write the directory path
          e.x. $: /ti-sdk/board-support/prebuilt-images/
    
      and the beginning of the files should be labeled with MLO, u-boot, uImage
          i.e.   test_MLO_image must be labeled as MLO_test_image
    
      NOTE: Not all platforms will have an MLO file and this file can
            be ignored for platforms that do not support an MLO
    ################################################################################
    
    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 Rootfs partition
    
       If files are located in Tarball write complete path including the file name.
          e.x. $:  /home/user/MyCustomTars/rootfs.tar.gz
    
      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.gz | awk {'print $1'}`
    	if [ -n "$ISBOOTTAR" ]
    	then
    		BOOTPATHOPTION=2
    	else
    		BOOTPATHOPTION=1
    		BOOTFILEPATH=$BOOTUSERFILEPATH
    		MLO=`ls $BOOTFILEPATH | grep MLO | awk {'print $1'}`
    		UIMAGE=`ls $BOOTFILEPATH | grep uImage | 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'}`
    	fi
    
    	#Check if user entered a tar or not for Rootfs
    	ISROOTFSTAR=`ls $ROOTFSUSERFILEPATH | grep .tar.gz | 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 ""
    
    	if [ "$BOOTBIN" != "" ] ; then
    		cp $BOOTFILEPATH/$BOOTBIN $PATH_TO_SDBOOT/u-boot.bin
    		echo "u-boot.bin copied"
    	else
    		echo "u-boot.bin file not found"
    	fi
    
    	echo ""
    
    	if [ "$BOOTIMG" != "" ] ; then
    		cp $BOOTFILEPATH/$BOOTIMG $PATH_TO_SDBOOT/u-boot.img
    		echo "u-boot.img copied"
    	else
    		echo "u-boot.img file not found"
    	fi
    
    	echo ""
    
    	if [ "$UIMAGE" != "" ] ; then
    		cp $BOOTFILEPATH/$UIMAGE $PATH_TO_SDBOOT/uImage
    		echo "uImage copied"
    	else
    		echo "uImage file not found"
    	fi
    
    elif [ $BOOTPATHOPTION -eq 2  ] ; then
    	untar_progress $BOOTUSERFILEPATH $PATH_TO_TMP_DIR
    	cp -rf $PATH_TO_TMP_DIR/* $PATH_TO_SDBOOT
    	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
    
    
    echo " "
    echo "Un-mount the partitions "
    sudo umount -f $PATH_TO_SDBOOT
    sudo umount -f $PATH_TO_SDROOTFS
    
    
    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 " "
    

  • I guess you accidentally modified the script:

    Line 515: SIZE=fdisk -l $DRIVE | grep Disk | awk '{print $5}'`

    should be

    SIZE=`fdisk -l $DRIVE | grep Disk | awk '{print $5}'`

    (missing ` after SIZE=)