scripts: tizen: move the fusing scripts to tizen directory 78/140378/2
authorJaehoon Chung <jh80.chung@samsung.com>
Tue, 25 Jul 2017 02:02:04 +0000 (11:02 +0900)
committerJaehoon Chung <jh80.chung@samsung.com>
Tue, 25 Jul 2017 04:30:15 +0000 (13:30 +0900)
Move the tizen specific scripts to tizen directory.

Change-Id: I50f004ac078cd7f610e78d668acc94f2aa6b5e0e
Signed-off-by: Jaehoon Chung <jh80.chung@samsung.com>
scripts/sd_fusing_rpi3.sh [deleted file]
scripts/sd_fusing_xu4.sh [deleted file]
scripts/tizen/sd_fusing_rpi3.sh [new file with mode: 0755]
scripts/tizen/sd_fusing_xu4.sh [new file with mode: 0755]

diff --git a/scripts/sd_fusing_rpi3.sh b/scripts/sd_fusing_rpi3.sh
deleted file mode 100755 (executable)
index f322e3c..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-#!/bin/bash
-
-declare FORMAT=""
-declare DEVICE=""
-
-# Binaires array for fusing
-declare -a FUSING_BINARY_ARRAY
-declare -i FUSING_BINARY_NUM=0
-
-declare CONV_ASCII=""
-declare -i FUS_ENTRY_NUM=0
-
-# binary name | part number | bs
-declare -a PART_TABLE=(
-       "boot.img"                      1       512
-       "rootfs.img"                    2       4M
-       "system-data.img"               3       4M
-       "user.img"                      5       4M
-       "modules.img"                   6       512
-       "ramdisk.img"                   7       512
-       "ramdisk-recovery.img"          8       512
-       )
-
-declare -r -i PART_TABLE_ROW=3
-declare -r -i PART_TABLE_COL=${#PART_TABLE[*]}/${PART_TABLE_ROW}
-
-# partition table support
-function get_index_use_name () {
-       local -r binary_name=$1
-
-       for ((idx=0;idx<$PART_TABLE_COL;idx++)); do
-               if [ ${PART_TABLE[idx * ${PART_TABLE_ROW} + 0]} == $binary_name ]; then
-                       return $idx
-               fi
-       done
-
-       # return out of bound index
-       return $idx
-}
-
-function print_message () {
-       local color=$1
-       local message=$2
-
-       tput setaf $color
-       tput bold
-       echo ""
-       echo $message
-       tput sgr 0
-}
-
-function fusing_image () {
-       local -r fusing_img=$1
-
-       # get binary info using basename
-       get_index_use_name $(basename $fusing_img)
-       local -r -i part_idx=$?
-
-       if [ $part_idx -ne $PART_TABLE_COL ];then
-               local -r device=$DEVICE${PART_TABLE[${part_idx} * ${PART_TABLE_ROW} + 1]}
-               local -r bs=${PART_TABLE[${part_idx} * ${PART_TABLE_ROW} + 2]}
-       else
-               echo "Not supported binary: $fusing_img"
-               return
-       fi
-
-       local -r input_size=`du -b $fusing_img | awk '{print $1}'`
-
-       print_message 2 "[Fusing $1]"
-       umount $device
-       dd if=$fusing_img | pv -s $input_size | dd of=$device bs=$bs
-       resize2fs -f $device
-}
-
-function fuse_image_tarball () {
-       local -r filepath=$1
-       local -r temp_dir="tar_tmp"
-
-       mkdir -p $temp_dir
-       tar xvf $filepath -C $temp_dir
-       cd $temp_dir
-
-       for file in *
-       do
-               fusing_image $file
-       done
-
-       cd ..
-       rm -rf $temp_dir
-       eval sync
-}
-
-function fuse_image () {
-
-       if [ "$FUSING_BINARY_NUM" == 0 ]; then
-               return
-       fi
-
-       for ((fuse_idx = 0 ; fuse_idx < $FUSING_BINARY_NUM ; fuse_idx++))
-       do
-               local filename=${FUSING_BINARY_ARRAY[fuse_idx]}
-
-               case "$filename" in
-                   *.tar | *.tar.gz)
-                       fuse_image_tarball $filename
-                       ;;
-                   *)
-                       fusing_image $filename
-                       ;;
-               esac
-       done
-       echo ""
-}
-
-# partition format
-function mkpart_3 () {
-       # NOTE: if your sfdisk version is less than 2.26.0, then you should use following sfdisk command:
-       # sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
-
-       # NOTE: sfdisk 2.26 doesn't support units other than sectors and marks --unit option as deprecated.
-       # The input data needs to contain multipliers (MiB) instead.
-       local version=`sfdisk -v | awk '{print $4}'`
-       local major=${version%%.*}
-       local version=${version:`expr index $version .`}
-       local minor=${version%%.*}
-       local sfdisk_new=0
-
-       if [ $major -gt 2 ];  then
-               sfdisk_new=1
-       else
-               if [ $major -eq 2 -a $minor -ge 26 ];  then
-                       sfdisk_new=1
-               fi
-       fi
-
-       local -r DISK=$DEVICE
-       local -r SIZE=`sfdisk -s $DISK`
-       local -r SIZE_MB=$((SIZE >> 10))
-
-       local -r BOOT_SZ=64
-       local -r ROOTFS_SZ=3072
-       local -r DATA_SZ=512
-       local -r MODULE_SZ=20
-       local -r RAMDISK_SZ=8
-       local -r RAMDISK_RECOVERY_SZ=12
-       if [ $sfdisk_new == 1 ]; then
-               local -r EXTEND_SZ=8
-       else
-               local -r EXTEND_SZ=4
-       fi
-
-       let "USER_SZ = $SIZE_MB - $BOOT_SZ - $ROOTFS_SZ - $DATA_SZ - $MODULE_SZ - $RAMDISK_SZ - $RAMDISK_RECOVERY_SZ - $EXTEND_SZ"
-
-       local -r BOOT=boot
-       local -r ROOTFS=rootfs
-       local -r SYSTEMDATA=system-data
-       local -r USER=user
-       local -r MODULE=modules
-       local -r RAMDISK=ramdisk
-       local -r RAMDISK_RECOVERY=ramdisk-recovery
-
-       if [[ $USER_SZ -le 100 ]]
-       then
-               echo "We recommend to use more than 4GB disk"
-               exit 0
-       fi
-
-       echo "========================================"
-       echo "Label          dev           size"
-       echo "========================================"
-       echo $BOOT"             " $DISK"1       " $BOOT_SZ "MB"
-       echo $ROOTFS"           " $DISK"2       " $ROOTFS_SZ "MB"
-       echo $SYSTEMDATA"       " $DISK"3       " $DATA_SZ "MB"
-       echo "[Extend]""        " $DISK"4"
-       echo " "$USER"          " $DISK"5       " $USER_SZ "MB"
-       echo " "$MODULE"        " $DISK"6       " $MODULE_SZ "MB"
-       echo " "$RAMDISK"       " $DISK"7       " $RAMDISK_SZ "MB"
-       echo " "$RAMDISK_RECOVERY"      " $DISK"7       " $RAMDISK_RECOVERY_SZ "MB"
-
-       local MOUNT_LIST=`mount | grep $DISK | awk '{print $1}'`
-       for mnt in $MOUNT_LIST
-       do
-               umount $mnt
-       done
-
-       echo "Remove partition table..."
-       dd if=/dev/zero of=$DISK bs=512 count=16 conv=notrunc
-
-       if [ $sfdisk_new == 1 ]; then
-               sfdisk $DISK <<-__EOF__
-               4MiB,${BOOT_SZ}MiB,0xE,*
-               8MiB,${ROOTFS_SZ}MiB,,-
-               8MiB,${DATA_SZ}MiB,,-
-               8MiB,,E,-
-               ,${USER_SZ}MiB,,-
-               ,${MODULE_SZ}MiB,,-
-               ,${RAMDISK_SZ}MiB,,-
-               ,${RAMDISK_RECOVERY_SZ}MiB,,-
-               __EOF__
-       else
-               sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
-               4,$BOOT_SZ,0xE,*
-               ,$ROOTFS_SZ,,-
-               ,$DATA_SZ,,-
-               ,,E,-
-               ,$USER_SZ,,-
-               ,$MODULE_SZ,,-
-               ,$RAMDISK_SZ,,-
-               ,$RAMDISK_RECOVERY_SZ,,-
-               __EOF__
-       fi
-
-       mkfs.vfat -F 16 ${DISK}1 -n $BOOT
-       mkfs.ext4 -q ${DISK}2 -L $ROOTFS -F
-       mkfs.ext4 -q ${DISK}3 -L $SYSTEMDATA -F
-       mkfs.ext4 -q ${DISK}5 -L $USER -F
-       mkfs.ext4 -q ${DISK}6 -L $MODULE -F
-       mkfs.ext4 -q ${DISK}7 -L $RAMDISK -F
-       mkfs.ext4 -q ${DISK}8 -L $RAMDISK_RECOVERY -F
-}
-
-function show_usage () {
-       echo "- Usage:"
-       echo "  sudo ./sd_fusing*.sh -d <device> [-b <path> <path> ..] [--format]"
-}
-
-function check_partition_format () {
-       if [ "$FORMAT" != "2" ]; then
-               echo "-----------------------"
-               echo "Skip $DEVICE format"
-               echo "-----------------------"
-               return 0
-       fi
-
-       echo "-------------------------------"
-       echo "Start $DEVICE format"
-       echo ""
-       mkpart_3
-       echo "End $DEVICE format"
-       echo "-------------------------------"
-       echo ""
-}
-
-function check_args () {
-       if [ "$DEVICE" == "" ]; then
-               echo "$(tput setaf 1)$(tput bold)- Device node is empty!"
-               show_usage
-               tput sgr 0
-               exit 0
-       fi
-
-       if [ "$DEVICE" != "" ]; then
-               echo "Device: $DEVICE"
-       fi
-
-       if [ "$FUSING_BINARY_NUM" != 0 ]; then
-               echo "Fusing binary: "
-               for ((bid = 0 ; bid < $FUSING_BINARY_NUM ; bid++))
-               do
-                       echo "  ${FUSING_BINARY_ARRAY[bid]}"
-               done
-               echo ""
-       fi
-
-       if [ "$FORMAT" == "1" ]; then
-               echo ""
-               echo "$(tput setaf 3)$(tput bold)$DEVICE will be formatted, Is it OK? [y/n]"
-               tput sgr 0
-               read input
-               if [ "$input" == "y" ] || [ "$input" == "Y" ]; then
-                       FORMAT=2
-               else
-                       FORMAT=0
-               fi
-       fi
-}
-
-function print_logo () {
-       echo ""
-       echo "Raspberry Pi3 downloader, version 0.1"
-       echo ""
-}
-
-print_logo
-
-function add_fusing_binary() {
-       local declare binary_name=$1
-       FUSING_BINARY_ARRAY[$FUSING_BINARY_NUM]=$binary_name
-
-       FUSING_BINARY_NUM=$((FUSING_BINARY_NUM + 1))
-}
-
-
-declare -i binary_option=0
-
-while test $# -ne 0; do
-       option=$1
-       shift
-
-       case $option in
-       --f | --format)
-               FORMAT="1"
-               binary_option=0
-               ;;
-       -d)
-               DEVICE=$1
-               binary_option=0
-               shift
-               ;;
-       -b)
-               add_fusing_binary $1
-               binary_option=1
-               shift
-               ;;
-       *)
-               if [ $binary_option == 1 ];then
-                       add_fusing_binary $option
-               else
-                       echo "Unkown command: $option"
-                       exit
-               fi
-               ;;
-       esac
-done
-
-check_args
-check_partition_format
-fuse_image
diff --git a/scripts/sd_fusing_xu4.sh b/scripts/sd_fusing_xu4.sh
deleted file mode 100755 (executable)
index bc5825f..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
-#!/bin/bash
-
-declare FORMAT=""
-declare DEVICE=""
-
-# Binaires array for fusing
-declare -a FUSING_BINARY_ARRAY
-declare -i FUSING_BINARY_NUM=0
-
-declare CONV_ASCII=""
-declare -i FUS_ENTRY_NUM=0
-
-# binary name | part number | offset | bs
-declare -a PART_TABLE=(
-       "bl1.bin.hardkernel"            ""      1       512
-       "bl2.bin.hardkernel.1mb_uboot"  ""      31      512
-       "u-boot-mmc.bin"                ""      63      512
-       "tzsw.bin.hardkernel"           ""      2111    512
-       "params.bin"                    ""      6272    512
-       "boot.img"                      1       0       512
-       "ramdisk.img"                   1       0       512
-       "rootfs.img"                    2       0       4M
-       "system-data.img"               3       0       4M
-       "user.img"                      5       0       4M
-       "modules.img"                   6       0       512
-       )
-
-declare -r -i PART_TABLE_COL=4
-declare -r -i PART_TABLE_ROW=${#PART_TABLE[*]}/${PART_TABLE_COL}
-
-# partition table support
-function get_index_use_name () {
-       local -r binary_name=$1
-
-       for ((idx=0;idx<$PART_TABLE_ROW;idx++)); do
-               if [ ${PART_TABLE[idx * ${PART_TABLE_COL} + 0]} == $binary_name ]; then
-                       return $idx
-               fi
-       done
-
-       # return out of bound index
-       return $idx
-}
-
-# fusing feature
-function convert_num_to_ascii () {
-       local number=$1
-
-       CONV_ASCII=$(printf \\$(printf '%03o' $number))
-}
-
-function print_message () {
-       local color=$1
-       local message=$2
-
-       tput setaf $color
-       tput bold
-       echo ""
-       echo $message
-       tput sgr 0
-}
-
-function add_fusing_entry () {
-       local name=$1
-       local offset=$2
-       local size=$3
-
-       FUS_ENTRY_NUM=$((FUS_ENTRY_NUM + 1))
-
-       echo -n "$name" > entry_name
-       cat entry_name /dev/zero | head -c 32 >> entry
-
-       echo -n "" > entry_offset
-       for ((i=0; i < 4; i++))
-       do
-               declare -i var;
-               var=$(( ($offset >> (i*8)) & 0xFF ))
-               convert_num_to_ascii $var
-               echo -n $CONV_ASCII > tmp
-               cat tmp /dev/zero | head -c 1 >> entry_offset
-       done
-       cat entry_offset /dev/zero | head -c 4 >> entry
-
-       echo -n "" > entry_size
-       for ((i=0; i < 4; i++))
-       do
-               declare -i var;
-               var=$(( ($size >> (i*8)) & 0xFF ))
-               convert_num_to_ascii $var
-               echo -n $CONV_ASCII > tmp
-               cat tmp /dev/zero | head -c 1 >> entry_size
-       done
-       cat entry_size /dev/zero | head -c 4 >> entry
-
-       rm tmp
-       rm entry_name
-       rm entry_offset
-       rm entry_size
-}
-
-function fusing_image () {
-       local -r fusing_img=$1
-
-       # get binary info using basename
-       get_index_use_name $(basename $fusing_img)
-       local -r -i part_idx=$?
-
-       if [ $part_idx -ne $PART_TABLE_ROW ];then
-               local -r device=$DEVICE${PART_TABLE[${part_idx} * ${PART_TABLE_COL} + 1]}
-               local -r seek=${PART_TABLE[${part_idx} * ${PART_TABLE_COL} + 2]}
-               local -r bs=${PART_TABLE[${part_idx} * ${PART_TABLE_COL} + 3]}
-       else
-               echo "Not supported binary: $fusing_img"
-               return
-       fi
-
-       local -r input_size=`du -b $fusing_img | awk '{print $1}'`
-
-       print_message 2 "[Fusing $1]"
-
-       if [ "$(basename $fusing_img)" == "ramdisk.img" ]; then
-               umount $device
-               mkdir mnt_tmp
-               mount -t vfat $device ./mnt_tmp
-               cp -f $fusing_img ./mnt_tmp
-               umount ./mnt_tmp
-               rmdir mnt_tmp
-               echo "fusing $fusing_img is done."
-       else
-               dd if=$fusing_img | pv -s $input_size | dd of=$device seek=$seek bs=$bs
-       fi
-
-       if [ $(basename $fusing_img) == "u-boot-mmc.bin" ];then
-               add_fusing_entry "u-boot" $seek 2048
-       fi
-}
-
-function fuse_image_tarball () {
-       local -r filepath=$1
-       local -r temp_dir="tar_tmp"
-
-       mkdir -p $temp_dir
-       tar xvf $filepath -C $temp_dir
-       cd $temp_dir
-
-       for file in *
-       do
-               fusing_image $file
-       done
-
-       cd ..
-       rm -rf $temp_dir
-}
-
-function check_binary_format () {
-       local -r binary=$1
-
-       case "$binary" in
-       *.tar | *.tar.gz)
-               fuse_image_tarball $binary
-               eval sync
-               ;;
-       *)
-               fusing_image $binary
-               eval sync
-               ;;
-       esac
-}
-
-function fuse_image () {
-       if [ "$FUSING_BINARY_NUM" == 0 ]; then
-               return
-       fi
-
-       # NOTE: to ensure ramdisk booting, ramdisk image should be copied after
-       # boot image is flashed into boot partition.
-       #
-       # This code guarantees that ramdisk image is flashed in the end of binaries.
-       local -i tmpval=$FUSING_BINARY_NUM-1
-       for ((fuse_idx = 0 ; fuse_idx < $FUSING_BINARY_NUM ; fuse_idx++))
-       do
-               local filename=${FUSING_BINARY_ARRAY[fuse_idx]}
-               local tmpname=""
-
-               case "$filename" in
-               *.tar | *.tar.gz)
-                       if [ $fuse_idx -lt $tmpval ]; then
-                               local tar_contents=`tar tvf $filename | awk 'BEGIN {FS=" "} {print $6}'`
-
-                               for content in $tar_contents
-                               do
-                                       if [ "$content" == "ramdisk.img" ]; then
-                                               tmpname=$filename
-                                               filename=${FUSING_BINARY_ARRAY[$tmpval]}
-                                               FUSING_BINARY_ARRAY[$tmpval]=$tmpname
-                                               break
-                                       fi
-                               done
-                       fi
-                       check_binary_format $filename
-                       ;;
-               *)
-                       if [ $fuse_idx -lt $tmpval ]; then
-                               if [ "$filename" == "ramdisk.img" ]; then
-                                       tmpname=$filename
-                                       filename=${FUSING_BINARY_ARRAY[$tmpval]}
-                                       FUSING_BINARY_ARRAY[$tmpval]=$tmpname
-                               fi
-                       fi
-                       check_binary_format $filename
-                       ;;
-               esac
-       done
-       echo ""
-}
-
-# partition format
-function mkpart_3 () {
-       # NOTE: if your sfdisk version is less than 2.26.0, then you should use following sfdisk command:
-       # sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
-       #
-       # NOTE: sfdisk 2.26 doesn't support units other than sectors and marks --unit option as deprecated.
-       # The input data needs to contain multipliers (MiB) instead.
-       local version=`sfdisk -v | awk '{print $4}'`
-       local major=${version%%.*}
-       local version=${version:`expr index $version .`}
-       local minor=${version%%.*}
-       local sfdisk_new=0
-
-       if [ $major -gt 2 ];  then
-               sfdisk_new=1
-       else
-               if [ $major -eq 2 -a $minor -ge 26 ];  then
-                       sfdisk_new=1
-               fi
-       fi
-
-       local -r DISK=$DEVICE
-       local -r SIZE=`sfdisk -s $DISK`
-       local -r SIZE_MB=$((SIZE >> 10))
-
-       local -r BOOT_SZ=64
-       local -r ROOTFS_SZ=3072
-       local -r DATA_SZ=512
-       local -r MODULE_SZ=20
-       if [ $sfdisk_new == 1 ]; then
-               local -r EXTEND_SZ=8
-       else
-               local -r EXTEND_SZ=4
-       fi
-
-       let "USER_SZ = $SIZE_MB - $BOOT_SZ - $ROOTFS_SZ - $DATA_SZ - $MODULE_SZ - $EXTEND_SZ"
-
-       local -r BOOT=boot
-       local -r ROOTFS=rootfs
-       local -r SYSTEMDATA=system-data
-       local -r USER=user
-       local -r MODULE=modules
-
-       if [[ $USER_SZ -le 100 ]]
-       then
-               echo "We recommend to use more than 4GB disk"
-               exit 0
-       fi
-
-       echo "========================================"
-       echo "Label          dev           size"
-       echo "========================================"
-       echo $BOOT"             " $DISK"1       " $BOOT_SZ "MB"
-       echo $ROOTFS"           " $DISK"2       " $ROOTFS_SZ "MB"
-       echo $SYSTEMDATA"       " $DISK"3       " $DATA_SZ "MB"
-       echo "[Extend]""        " $DISK"4"
-       echo " "$USER"          " $DISK"5       " $USER_SZ "MB"
-       echo " "$MODULE"                " $DISK"6       " $MODULE_SZ "MB"
-
-       local MOUNT_LIST=`mount | grep $DISK | awk '{print $1}'`
-       for mnt in $MOUNT_LIST
-       do
-               umount $mnt
-       done
-
-       echo "Remove partition table..."
-       dd if=/dev/zero of=$DISK bs=512 count=16 conv=notrunc
-
-       if [ $sfdisk_new == 1 ]; then
-               sfdisk $DISK <<-__EOF__
-               4MiB,${BOOT_SZ}MiB,0xE,*
-               8MiB,${ROOTFS_SZ}MiB,,-
-               8MiB,${DATA_SZ}MiB,,-
-               8MiB,,E,-
-               ,${USER_SZ}MiB,,-
-               ,${MODULE_SZ}MiB,,-
-               __EOF__
-       else
-               sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
-               4,$BOOT_SZ,0xE,*
-               ,$ROOTFS_SZ,,-
-               ,$DATA_SZ,,-
-               ,,E,-
-               ,$USER_SZ,,-
-               ,$MODULE_SZ,,-
-               __EOF__
-       fi
-
-       mkfs.vfat -F 16 ${DISK}1 -n $BOOT
-       mkfs.ext4 -q ${DISK}2 -L $ROOTFS -F
-       mkfs.ext4 -q ${DISK}3 -L $SYSTEMDATA -F
-       mkfs.ext4 -q ${DISK}5 -L $USER -F
-       mkfs.ext4 -q ${DISK}6 -L $MODULE -F
-}
-
-function show_usage () {
-       echo "- Usage:"
-       echo "  sudo ./sd_fusing_xu4.sh -d <device> [-b <path> <path> ..] [--format]"
-}
-
-function check_partition_format () {
-       if [ "$FORMAT" != "2" ]; then
-               echo "-----------------------"
-               echo "Skip $DEVICE format"
-               echo "-----------------------"
-               return 0
-       fi
-
-       echo "-------------------------------"
-       echo "Start $DEVICE format"
-       echo ""
-       mkpart_3
-       echo "End $DEVICE format"
-       echo "-------------------------------"
-       echo ""
-}
-
-function check_args () {
-       if [ "$DEVICE" == "" ]; then
-               echo "$(tput setaf 1)$(tput bold)- Device node is empty!"
-               show_usage
-               tput sgr 0
-               exit 0
-       fi
-
-       if [ "$DEVICE" != "" ]; then
-               echo "Device: $DEVICE"
-       fi
-
-       if [ "$FUSING_BINARY_NUM" != 0 ]; then
-               echo "Fusing binary: "
-               for ((bid = 0 ; bid < $FUSING_BINARY_NUM ; bid++))
-               do
-                       echo "  ${FUSING_BINARY_ARRAY[bid]}"
-               done
-               echo ""
-       fi
-
-       if [ "$FORMAT" == "1" ]; then
-               echo ""
-               echo "$(tput setaf 3)$(tput bold)$DEVICE will be formatted, Is it OK? [y/n]"
-               tput sgr 0
-               read input
-               if [ "$input" == "y" ] || [ "$input" == "Y" ]; then
-                       FORMAT=2
-               else
-                       FORMAT=0
-               fi
-       fi
-}
-
-function print_logo () {
-       echo ""
-       echo "[Odroid-XU3/4 downloader]"
-       echo "This version also supports Tizen 4.0."
-       echo ""
-}
-
-print_logo
-
-function add_fusing_binary() {
-       local declare binary_name=$1
-       FUSING_BINARY_ARRAY[$FUSING_BINARY_NUM]=$binary_name
-
-       FUSING_BINARY_NUM=$((FUSING_BINARY_NUM + 1))
-}
-
-declare -i binary_option=0
-
-while test $# -ne 0; do
-       option=$1
-       shift
-
-       case $option in
-       --f | --format)
-               FORMAT="1"
-               binary_option=0
-               ;;
-       -d)
-               DEVICE=$1
-               binary_option=0
-               shift
-               ;;
-       -b)
-               add_fusing_binary $1
-               binary_option=1
-               shift
-               ;;
-       *)
-               if [ $binary_option == 1 ];then
-                       add_fusing_binary $option
-               else
-                       echo "Unkown command: $option"
-                       exit
-               fi
-               ;;
-       esac
-done
-
-check_args
-check_partition_format
-fuse_image
diff --git a/scripts/tizen/sd_fusing_rpi3.sh b/scripts/tizen/sd_fusing_rpi3.sh
new file mode 100755 (executable)
index 0000000..f322e3c
--- /dev/null
@@ -0,0 +1,328 @@
+#!/bin/bash
+
+declare FORMAT=""
+declare DEVICE=""
+
+# Binaires array for fusing
+declare -a FUSING_BINARY_ARRAY
+declare -i FUSING_BINARY_NUM=0
+
+declare CONV_ASCII=""
+declare -i FUS_ENTRY_NUM=0
+
+# binary name | part number | bs
+declare -a PART_TABLE=(
+       "boot.img"                      1       512
+       "rootfs.img"                    2       4M
+       "system-data.img"               3       4M
+       "user.img"                      5       4M
+       "modules.img"                   6       512
+       "ramdisk.img"                   7       512
+       "ramdisk-recovery.img"          8       512
+       )
+
+declare -r -i PART_TABLE_ROW=3
+declare -r -i PART_TABLE_COL=${#PART_TABLE[*]}/${PART_TABLE_ROW}
+
+# partition table support
+function get_index_use_name () {
+       local -r binary_name=$1
+
+       for ((idx=0;idx<$PART_TABLE_COL;idx++)); do
+               if [ ${PART_TABLE[idx * ${PART_TABLE_ROW} + 0]} == $binary_name ]; then
+                       return $idx
+               fi
+       done
+
+       # return out of bound index
+       return $idx
+}
+
+function print_message () {
+       local color=$1
+       local message=$2
+
+       tput setaf $color
+       tput bold
+       echo ""
+       echo $message
+       tput sgr 0
+}
+
+function fusing_image () {
+       local -r fusing_img=$1
+
+       # get binary info using basename
+       get_index_use_name $(basename $fusing_img)
+       local -r -i part_idx=$?
+
+       if [ $part_idx -ne $PART_TABLE_COL ];then
+               local -r device=$DEVICE${PART_TABLE[${part_idx} * ${PART_TABLE_ROW} + 1]}
+               local -r bs=${PART_TABLE[${part_idx} * ${PART_TABLE_ROW} + 2]}
+       else
+               echo "Not supported binary: $fusing_img"
+               return
+       fi
+
+       local -r input_size=`du -b $fusing_img | awk '{print $1}'`
+
+       print_message 2 "[Fusing $1]"
+       umount $device
+       dd if=$fusing_img | pv -s $input_size | dd of=$device bs=$bs
+       resize2fs -f $device
+}
+
+function fuse_image_tarball () {
+       local -r filepath=$1
+       local -r temp_dir="tar_tmp"
+
+       mkdir -p $temp_dir
+       tar xvf $filepath -C $temp_dir
+       cd $temp_dir
+
+       for file in *
+       do
+               fusing_image $file
+       done
+
+       cd ..
+       rm -rf $temp_dir
+       eval sync
+}
+
+function fuse_image () {
+
+       if [ "$FUSING_BINARY_NUM" == 0 ]; then
+               return
+       fi
+
+       for ((fuse_idx = 0 ; fuse_idx < $FUSING_BINARY_NUM ; fuse_idx++))
+       do
+               local filename=${FUSING_BINARY_ARRAY[fuse_idx]}
+
+               case "$filename" in
+                   *.tar | *.tar.gz)
+                       fuse_image_tarball $filename
+                       ;;
+                   *)
+                       fusing_image $filename
+                       ;;
+               esac
+       done
+       echo ""
+}
+
+# partition format
+function mkpart_3 () {
+       # NOTE: if your sfdisk version is less than 2.26.0, then you should use following sfdisk command:
+       # sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
+
+       # NOTE: sfdisk 2.26 doesn't support units other than sectors and marks --unit option as deprecated.
+       # The input data needs to contain multipliers (MiB) instead.
+       local version=`sfdisk -v | awk '{print $4}'`
+       local major=${version%%.*}
+       local version=${version:`expr index $version .`}
+       local minor=${version%%.*}
+       local sfdisk_new=0
+
+       if [ $major -gt 2 ];  then
+               sfdisk_new=1
+       else
+               if [ $major -eq 2 -a $minor -ge 26 ];  then
+                       sfdisk_new=1
+               fi
+       fi
+
+       local -r DISK=$DEVICE
+       local -r SIZE=`sfdisk -s $DISK`
+       local -r SIZE_MB=$((SIZE >> 10))
+
+       local -r BOOT_SZ=64
+       local -r ROOTFS_SZ=3072
+       local -r DATA_SZ=512
+       local -r MODULE_SZ=20
+       local -r RAMDISK_SZ=8
+       local -r RAMDISK_RECOVERY_SZ=12
+       if [ $sfdisk_new == 1 ]; then
+               local -r EXTEND_SZ=8
+       else
+               local -r EXTEND_SZ=4
+       fi
+
+       let "USER_SZ = $SIZE_MB - $BOOT_SZ - $ROOTFS_SZ - $DATA_SZ - $MODULE_SZ - $RAMDISK_SZ - $RAMDISK_RECOVERY_SZ - $EXTEND_SZ"
+
+       local -r BOOT=boot
+       local -r ROOTFS=rootfs
+       local -r SYSTEMDATA=system-data
+       local -r USER=user
+       local -r MODULE=modules
+       local -r RAMDISK=ramdisk
+       local -r RAMDISK_RECOVERY=ramdisk-recovery
+
+       if [[ $USER_SZ -le 100 ]]
+       then
+               echo "We recommend to use more than 4GB disk"
+               exit 0
+       fi
+
+       echo "========================================"
+       echo "Label          dev           size"
+       echo "========================================"
+       echo $BOOT"             " $DISK"1       " $BOOT_SZ "MB"
+       echo $ROOTFS"           " $DISK"2       " $ROOTFS_SZ "MB"
+       echo $SYSTEMDATA"       " $DISK"3       " $DATA_SZ "MB"
+       echo "[Extend]""        " $DISK"4"
+       echo " "$USER"          " $DISK"5       " $USER_SZ "MB"
+       echo " "$MODULE"        " $DISK"6       " $MODULE_SZ "MB"
+       echo " "$RAMDISK"       " $DISK"7       " $RAMDISK_SZ "MB"
+       echo " "$RAMDISK_RECOVERY"      " $DISK"7       " $RAMDISK_RECOVERY_SZ "MB"
+
+       local MOUNT_LIST=`mount | grep $DISK | awk '{print $1}'`
+       for mnt in $MOUNT_LIST
+       do
+               umount $mnt
+       done
+
+       echo "Remove partition table..."
+       dd if=/dev/zero of=$DISK bs=512 count=16 conv=notrunc
+
+       if [ $sfdisk_new == 1 ]; then
+               sfdisk $DISK <<-__EOF__
+               4MiB,${BOOT_SZ}MiB,0xE,*
+               8MiB,${ROOTFS_SZ}MiB,,-
+               8MiB,${DATA_SZ}MiB,,-
+               8MiB,,E,-
+               ,${USER_SZ}MiB,,-
+               ,${MODULE_SZ}MiB,,-
+               ,${RAMDISK_SZ}MiB,,-
+               ,${RAMDISK_RECOVERY_SZ}MiB,,-
+               __EOF__
+       else
+               sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
+               4,$BOOT_SZ,0xE,*
+               ,$ROOTFS_SZ,,-
+               ,$DATA_SZ,,-
+               ,,E,-
+               ,$USER_SZ,,-
+               ,$MODULE_SZ,,-
+               ,$RAMDISK_SZ,,-
+               ,$RAMDISK_RECOVERY_SZ,,-
+               __EOF__
+       fi
+
+       mkfs.vfat -F 16 ${DISK}1 -n $BOOT
+       mkfs.ext4 -q ${DISK}2 -L $ROOTFS -F
+       mkfs.ext4 -q ${DISK}3 -L $SYSTEMDATA -F
+       mkfs.ext4 -q ${DISK}5 -L $USER -F
+       mkfs.ext4 -q ${DISK}6 -L $MODULE -F
+       mkfs.ext4 -q ${DISK}7 -L $RAMDISK -F
+       mkfs.ext4 -q ${DISK}8 -L $RAMDISK_RECOVERY -F
+}
+
+function show_usage () {
+       echo "- Usage:"
+       echo "  sudo ./sd_fusing*.sh -d <device> [-b <path> <path> ..] [--format]"
+}
+
+function check_partition_format () {
+       if [ "$FORMAT" != "2" ]; then
+               echo "-----------------------"
+               echo "Skip $DEVICE format"
+               echo "-----------------------"
+               return 0
+       fi
+
+       echo "-------------------------------"
+       echo "Start $DEVICE format"
+       echo ""
+       mkpart_3
+       echo "End $DEVICE format"
+       echo "-------------------------------"
+       echo ""
+}
+
+function check_args () {
+       if [ "$DEVICE" == "" ]; then
+               echo "$(tput setaf 1)$(tput bold)- Device node is empty!"
+               show_usage
+               tput sgr 0
+               exit 0
+       fi
+
+       if [ "$DEVICE" != "" ]; then
+               echo "Device: $DEVICE"
+       fi
+
+       if [ "$FUSING_BINARY_NUM" != 0 ]; then
+               echo "Fusing binary: "
+               for ((bid = 0 ; bid < $FUSING_BINARY_NUM ; bid++))
+               do
+                       echo "  ${FUSING_BINARY_ARRAY[bid]}"
+               done
+               echo ""
+       fi
+
+       if [ "$FORMAT" == "1" ]; then
+               echo ""
+               echo "$(tput setaf 3)$(tput bold)$DEVICE will be formatted, Is it OK? [y/n]"
+               tput sgr 0
+               read input
+               if [ "$input" == "y" ] || [ "$input" == "Y" ]; then
+                       FORMAT=2
+               else
+                       FORMAT=0
+               fi
+       fi
+}
+
+function print_logo () {
+       echo ""
+       echo "Raspberry Pi3 downloader, version 0.1"
+       echo ""
+}
+
+print_logo
+
+function add_fusing_binary() {
+       local declare binary_name=$1
+       FUSING_BINARY_ARRAY[$FUSING_BINARY_NUM]=$binary_name
+
+       FUSING_BINARY_NUM=$((FUSING_BINARY_NUM + 1))
+}
+
+
+declare -i binary_option=0
+
+while test $# -ne 0; do
+       option=$1
+       shift
+
+       case $option in
+       --f | --format)
+               FORMAT="1"
+               binary_option=0
+               ;;
+       -d)
+               DEVICE=$1
+               binary_option=0
+               shift
+               ;;
+       -b)
+               add_fusing_binary $1
+               binary_option=1
+               shift
+               ;;
+       *)
+               if [ $binary_option == 1 ];then
+                       add_fusing_binary $option
+               else
+                       echo "Unkown command: $option"
+                       exit
+               fi
+               ;;
+       esac
+done
+
+check_args
+check_partition_format
+fuse_image
diff --git a/scripts/tizen/sd_fusing_xu4.sh b/scripts/tizen/sd_fusing_xu4.sh
new file mode 100755 (executable)
index 0000000..bc5825f
--- /dev/null
@@ -0,0 +1,418 @@
+#!/bin/bash
+
+declare FORMAT=""
+declare DEVICE=""
+
+# Binaires array for fusing
+declare -a FUSING_BINARY_ARRAY
+declare -i FUSING_BINARY_NUM=0
+
+declare CONV_ASCII=""
+declare -i FUS_ENTRY_NUM=0
+
+# binary name | part number | offset | bs
+declare -a PART_TABLE=(
+       "bl1.bin.hardkernel"            ""      1       512
+       "bl2.bin.hardkernel.1mb_uboot"  ""      31      512
+       "u-boot-mmc.bin"                ""      63      512
+       "tzsw.bin.hardkernel"           ""      2111    512
+       "params.bin"                    ""      6272    512
+       "boot.img"                      1       0       512
+       "ramdisk.img"                   1       0       512
+       "rootfs.img"                    2       0       4M
+       "system-data.img"               3       0       4M
+       "user.img"                      5       0       4M
+       "modules.img"                   6       0       512
+       )
+
+declare -r -i PART_TABLE_COL=4
+declare -r -i PART_TABLE_ROW=${#PART_TABLE[*]}/${PART_TABLE_COL}
+
+# partition table support
+function get_index_use_name () {
+       local -r binary_name=$1
+
+       for ((idx=0;idx<$PART_TABLE_ROW;idx++)); do
+               if [ ${PART_TABLE[idx * ${PART_TABLE_COL} + 0]} == $binary_name ]; then
+                       return $idx
+               fi
+       done
+
+       # return out of bound index
+       return $idx
+}
+
+# fusing feature
+function convert_num_to_ascii () {
+       local number=$1
+
+       CONV_ASCII=$(printf \\$(printf '%03o' $number))
+}
+
+function print_message () {
+       local color=$1
+       local message=$2
+
+       tput setaf $color
+       tput bold
+       echo ""
+       echo $message
+       tput sgr 0
+}
+
+function add_fusing_entry () {
+       local name=$1
+       local offset=$2
+       local size=$3
+
+       FUS_ENTRY_NUM=$((FUS_ENTRY_NUM + 1))
+
+       echo -n "$name" > entry_name
+       cat entry_name /dev/zero | head -c 32 >> entry
+
+       echo -n "" > entry_offset
+       for ((i=0; i < 4; i++))
+       do
+               declare -i var;
+               var=$(( ($offset >> (i*8)) & 0xFF ))
+               convert_num_to_ascii $var
+               echo -n $CONV_ASCII > tmp
+               cat tmp /dev/zero | head -c 1 >> entry_offset
+       done
+       cat entry_offset /dev/zero | head -c 4 >> entry
+
+       echo -n "" > entry_size
+       for ((i=0; i < 4; i++))
+       do
+               declare -i var;
+               var=$(( ($size >> (i*8)) & 0xFF ))
+               convert_num_to_ascii $var
+               echo -n $CONV_ASCII > tmp
+               cat tmp /dev/zero | head -c 1 >> entry_size
+       done
+       cat entry_size /dev/zero | head -c 4 >> entry
+
+       rm tmp
+       rm entry_name
+       rm entry_offset
+       rm entry_size
+}
+
+function fusing_image () {
+       local -r fusing_img=$1
+
+       # get binary info using basename
+       get_index_use_name $(basename $fusing_img)
+       local -r -i part_idx=$?
+
+       if [ $part_idx -ne $PART_TABLE_ROW ];then
+               local -r device=$DEVICE${PART_TABLE[${part_idx} * ${PART_TABLE_COL} + 1]}
+               local -r seek=${PART_TABLE[${part_idx} * ${PART_TABLE_COL} + 2]}
+               local -r bs=${PART_TABLE[${part_idx} * ${PART_TABLE_COL} + 3]}
+       else
+               echo "Not supported binary: $fusing_img"
+               return
+       fi
+
+       local -r input_size=`du -b $fusing_img | awk '{print $1}'`
+
+       print_message 2 "[Fusing $1]"
+
+       if [ "$(basename $fusing_img)" == "ramdisk.img" ]; then
+               umount $device
+               mkdir mnt_tmp
+               mount -t vfat $device ./mnt_tmp
+               cp -f $fusing_img ./mnt_tmp
+               umount ./mnt_tmp
+               rmdir mnt_tmp
+               echo "fusing $fusing_img is done."
+       else
+               dd if=$fusing_img | pv -s $input_size | dd of=$device seek=$seek bs=$bs
+       fi
+
+       if [ $(basename $fusing_img) == "u-boot-mmc.bin" ];then
+               add_fusing_entry "u-boot" $seek 2048
+       fi
+}
+
+function fuse_image_tarball () {
+       local -r filepath=$1
+       local -r temp_dir="tar_tmp"
+
+       mkdir -p $temp_dir
+       tar xvf $filepath -C $temp_dir
+       cd $temp_dir
+
+       for file in *
+       do
+               fusing_image $file
+       done
+
+       cd ..
+       rm -rf $temp_dir
+}
+
+function check_binary_format () {
+       local -r binary=$1
+
+       case "$binary" in
+       *.tar | *.tar.gz)
+               fuse_image_tarball $binary
+               eval sync
+               ;;
+       *)
+               fusing_image $binary
+               eval sync
+               ;;
+       esac
+}
+
+function fuse_image () {
+       if [ "$FUSING_BINARY_NUM" == 0 ]; then
+               return
+       fi
+
+       # NOTE: to ensure ramdisk booting, ramdisk image should be copied after
+       # boot image is flashed into boot partition.
+       #
+       # This code guarantees that ramdisk image is flashed in the end of binaries.
+       local -i tmpval=$FUSING_BINARY_NUM-1
+       for ((fuse_idx = 0 ; fuse_idx < $FUSING_BINARY_NUM ; fuse_idx++))
+       do
+               local filename=${FUSING_BINARY_ARRAY[fuse_idx]}
+               local tmpname=""
+
+               case "$filename" in
+               *.tar | *.tar.gz)
+                       if [ $fuse_idx -lt $tmpval ]; then
+                               local tar_contents=`tar tvf $filename | awk 'BEGIN {FS=" "} {print $6}'`
+
+                               for content in $tar_contents
+                               do
+                                       if [ "$content" == "ramdisk.img" ]; then
+                                               tmpname=$filename
+                                               filename=${FUSING_BINARY_ARRAY[$tmpval]}
+                                               FUSING_BINARY_ARRAY[$tmpval]=$tmpname
+                                               break
+                                       fi
+                               done
+                       fi
+                       check_binary_format $filename
+                       ;;
+               *)
+                       if [ $fuse_idx -lt $tmpval ]; then
+                               if [ "$filename" == "ramdisk.img" ]; then
+                                       tmpname=$filename
+                                       filename=${FUSING_BINARY_ARRAY[$tmpval]}
+                                       FUSING_BINARY_ARRAY[$tmpval]=$tmpname
+                               fi
+                       fi
+                       check_binary_format $filename
+                       ;;
+               esac
+       done
+       echo ""
+}
+
+# partition format
+function mkpart_3 () {
+       # NOTE: if your sfdisk version is less than 2.26.0, then you should use following sfdisk command:
+       # sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
+       #
+       # NOTE: sfdisk 2.26 doesn't support units other than sectors and marks --unit option as deprecated.
+       # The input data needs to contain multipliers (MiB) instead.
+       local version=`sfdisk -v | awk '{print $4}'`
+       local major=${version%%.*}
+       local version=${version:`expr index $version .`}
+       local minor=${version%%.*}
+       local sfdisk_new=0
+
+       if [ $major -gt 2 ];  then
+               sfdisk_new=1
+       else
+               if [ $major -eq 2 -a $minor -ge 26 ];  then
+                       sfdisk_new=1
+               fi
+       fi
+
+       local -r DISK=$DEVICE
+       local -r SIZE=`sfdisk -s $DISK`
+       local -r SIZE_MB=$((SIZE >> 10))
+
+       local -r BOOT_SZ=64
+       local -r ROOTFS_SZ=3072
+       local -r DATA_SZ=512
+       local -r MODULE_SZ=20
+       if [ $sfdisk_new == 1 ]; then
+               local -r EXTEND_SZ=8
+       else
+               local -r EXTEND_SZ=4
+       fi
+
+       let "USER_SZ = $SIZE_MB - $BOOT_SZ - $ROOTFS_SZ - $DATA_SZ - $MODULE_SZ - $EXTEND_SZ"
+
+       local -r BOOT=boot
+       local -r ROOTFS=rootfs
+       local -r SYSTEMDATA=system-data
+       local -r USER=user
+       local -r MODULE=modules
+
+       if [[ $USER_SZ -le 100 ]]
+       then
+               echo "We recommend to use more than 4GB disk"
+               exit 0
+       fi
+
+       echo "========================================"
+       echo "Label          dev           size"
+       echo "========================================"
+       echo $BOOT"             " $DISK"1       " $BOOT_SZ "MB"
+       echo $ROOTFS"           " $DISK"2       " $ROOTFS_SZ "MB"
+       echo $SYSTEMDATA"       " $DISK"3       " $DATA_SZ "MB"
+       echo "[Extend]""        " $DISK"4"
+       echo " "$USER"          " $DISK"5       " $USER_SZ "MB"
+       echo " "$MODULE"                " $DISK"6       " $MODULE_SZ "MB"
+
+       local MOUNT_LIST=`mount | grep $DISK | awk '{print $1}'`
+       for mnt in $MOUNT_LIST
+       do
+               umount $mnt
+       done
+
+       echo "Remove partition table..."
+       dd if=/dev/zero of=$DISK bs=512 count=16 conv=notrunc
+
+       if [ $sfdisk_new == 1 ]; then
+               sfdisk $DISK <<-__EOF__
+               4MiB,${BOOT_SZ}MiB,0xE,*
+               8MiB,${ROOTFS_SZ}MiB,,-
+               8MiB,${DATA_SZ}MiB,,-
+               8MiB,,E,-
+               ,${USER_SZ}MiB,,-
+               ,${MODULE_SZ}MiB,,-
+               __EOF__
+       else
+               sfdisk --in-order --Linux --unit M $DISK <<-__EOF__
+               4,$BOOT_SZ,0xE,*
+               ,$ROOTFS_SZ,,-
+               ,$DATA_SZ,,-
+               ,,E,-
+               ,$USER_SZ,,-
+               ,$MODULE_SZ,,-
+               __EOF__
+       fi
+
+       mkfs.vfat -F 16 ${DISK}1 -n $BOOT
+       mkfs.ext4 -q ${DISK}2 -L $ROOTFS -F
+       mkfs.ext4 -q ${DISK}3 -L $SYSTEMDATA -F
+       mkfs.ext4 -q ${DISK}5 -L $USER -F
+       mkfs.ext4 -q ${DISK}6 -L $MODULE -F
+}
+
+function show_usage () {
+       echo "- Usage:"
+       echo "  sudo ./sd_fusing_xu4.sh -d <device> [-b <path> <path> ..] [--format]"
+}
+
+function check_partition_format () {
+       if [ "$FORMAT" != "2" ]; then
+               echo "-----------------------"
+               echo "Skip $DEVICE format"
+               echo "-----------------------"
+               return 0
+       fi
+
+       echo "-------------------------------"
+       echo "Start $DEVICE format"
+       echo ""
+       mkpart_3
+       echo "End $DEVICE format"
+       echo "-------------------------------"
+       echo ""
+}
+
+function check_args () {
+       if [ "$DEVICE" == "" ]; then
+               echo "$(tput setaf 1)$(tput bold)- Device node is empty!"
+               show_usage
+               tput sgr 0
+               exit 0
+       fi
+
+       if [ "$DEVICE" != "" ]; then
+               echo "Device: $DEVICE"
+       fi
+
+       if [ "$FUSING_BINARY_NUM" != 0 ]; then
+               echo "Fusing binary: "
+               for ((bid = 0 ; bid < $FUSING_BINARY_NUM ; bid++))
+               do
+                       echo "  ${FUSING_BINARY_ARRAY[bid]}"
+               done
+               echo ""
+       fi
+
+       if [ "$FORMAT" == "1" ]; then
+               echo ""
+               echo "$(tput setaf 3)$(tput bold)$DEVICE will be formatted, Is it OK? [y/n]"
+               tput sgr 0
+               read input
+               if [ "$input" == "y" ] || [ "$input" == "Y" ]; then
+                       FORMAT=2
+               else
+                       FORMAT=0
+               fi
+       fi
+}
+
+function print_logo () {
+       echo ""
+       echo "[Odroid-XU3/4 downloader]"
+       echo "This version also supports Tizen 4.0."
+       echo ""
+}
+
+print_logo
+
+function add_fusing_binary() {
+       local declare binary_name=$1
+       FUSING_BINARY_ARRAY[$FUSING_BINARY_NUM]=$binary_name
+
+       FUSING_BINARY_NUM=$((FUSING_BINARY_NUM + 1))
+}
+
+declare -i binary_option=0
+
+while test $# -ne 0; do
+       option=$1
+       shift
+
+       case $option in
+       --f | --format)
+               FORMAT="1"
+               binary_option=0
+               ;;
+       -d)
+               DEVICE=$1
+               binary_option=0
+               shift
+               ;;
+       -b)
+               add_fusing_binary $1
+               binary_option=1
+               shift
+               ;;
+       *)
+               if [ $binary_option == 1 ];then
+                       add_fusing_binary $option
+               else
+                       echo "Unkown command: $option"
+                       exit
+               fi
+               ;;
+       esac
+done
+
+check_args
+check_partition_format
+fuse_image