~aleteoryx/muditaos

04e15263f9a676edab80c7e5e6a6fcd751add64d — Lucjan Bryndza 5 years ago f51a1e5
[EGD-5303] Add dev script for LFS part

Add flash script for flashing phone with new littlefs partition
and restore to the old parition scheme.
There are only transient scripts for pre-release.
2 files changed, 179 insertions(+), 0 deletions(-)

A flash_emmc_experimental_littlefs.sh
A flash_restore_fat_partition_layout.sh
A flash_emmc_experimental_littlefs.sh => flash_emmc_experimental_littlefs.sh +109 -0
@@ 0,0 1,109 @@
#!/bin/bash -e
# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
# For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

usage() {
cat << ==usage
Usage: $(basename $0) [disk_device] [data_dir]
        disk_device PurePhone disc device for ex. /dev/sdb
	asset_root_dir Asset root directory
==usage
}

ASSETS_DIR="assets country-codes.db Luts.bin boot.bin"

if [ $# -ne 2 ]; then
	echo "Error! Invalid argument count"
	usage
	exit -1
fi

BLK_DEV=$1
SRC_DATA=$(realpath $2)

if [ ! -d "$SRC_DATA" ]; then
	echo "Error! asset_root_dir is not a directory"
	usage
	exit -1
fi
if [ ! -b "$BLK_DEV" ]; then
	echo "Error: $BLK_DEV Not a block device"
	usage
	exit -1
fi

if [ ! -w "$BLK_DEV" ]; then
	echo "Error: Block device $BLK_DEV is not writable"
	usage
	exit -1
fi

_REQ_CMDS="sfdisk mtools awk truncate blockdev"
for cmd in $_REQ_CMDS; do
	if [ ! $(command -v $cmd) ]; then
		echo "Error! $cmd is not installed, please use 'sudo apt install' for install required tool"
		exit -1
	fi
done
#mtools version
_AWK_SCRIPT='
/[0-9]/ { 
	split($4,vers,"."); 
	if(vers[1]>=4 && vers[2]>=0 && vers[3] >= 24) { 
		print "true"; 
	}
	exit 0; 
}'
MTOOLS_OK=$(mtools --version | awk "${_AWK_SCRIPT}")

if [ ! $MTOOLS_OK ]; then
	echo "Invalid mtools version, please upgrade mtools to >= 4.0.24"
	exit -1
fi

SDIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
GENLFS=$(find $SDIR -type f -iname genlittlefs -executable -print -quit)
if [ -z ${GENLFS} ]; then
    echo "Unable to find genlilttlefs..."
    exit -1
fi

# Partition sizes in sector 512 units
DEV_SIZE=$(blockdev --getsize $BLK_DEV)
PART1_START=2048
PART1_SIZE=2097152
PART2_START=$(($PART1_START + $PART1_SIZE))
PART2_SIZE=$PART1_SIZE
PART3_START=$(($PART2_START + $PART2_SIZE))
PART3_SIZE=$(($DEV_SIZE - $PART1_SIZE - $PART2_SIZE - $PART1_START))

sfdisk $BLK_DEV << ==sfdisk
label: dos
label-id: 0x09650eb4
unit: sectors

/dev/sdx1 : start=    $PART1_START,  size=    $PART1_SIZE, type=b, bootable
/dev/sdx2 : start=    $PART2_START,  size=    $PART2_SIZE, type=b
/dev/sdx3 : start=    $PART3_START,  size=    $PART3_SIZE, type=9e
==sfdisk
sleep 1
PART1="${BLK_DEV}1"
PART2="${BLK_DEV}2"
mformat -i "$PART1" -F -v MUDITAOS
mformat -i "$PART2" -F -v RECOVER
mmd -i "$PART1" ::/current
cd "$SRC_DATA"
for i in $ASSETS_DIR; do
	mcopy -s -i "$PART1" $i ::/current/
done

mcopy -s -i "$PART1" .boot.json ::
mcopy -s -i "$PART1" .boot.json.crc32 ::
mmd -i "$PART1" ::/current/sys
mcopy -s -i "$PART1" data ::/current/sys
mmd -i "$PART1" ::/updates

#Littlefs generate image
$GENLFS --image=$BLK_DEV --block_size=4096  --overwrite  --partition_num=3 -- user/*
# back to previous dir
cd -

A flash_restore_fat_partition_layout.sh => flash_restore_fat_partition_layout.sh +70 -0
@@ 0,0 1,70 @@
#!/bin/bash -e
# Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
# For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

usage() {
cat << ==usage
Usage: $(basename $0) [disk_device]
        disk_device PurePhone disc device for ex. /dev/sdb
==usage
}

if [ $# -ne 1 ]; then
	echo "Error! Invalid argument count"
	usage
	exit -1
fi

BLK_DEV="$1"

if [ ! -b "$BLK_DEV" ]; then
	echo "Error: $BLK_DEV Not a block device"
	usage
	exit -1
fi

if [ ! -w "$BLK_DEV" ]; then
	echo "Error: Block device $BLK_DEV is not writable"
	usage
	exit -1
fi

_REQ_CMDS="sfdisk mtools awk"
for cmd in $_REQ_CMDS; do
	if [ ! $(command -v $cmd) ]; then
		echo "Error! $cmd is not installed, please use 'sudo apt install' for install required tool"
		exit -1
	fi
done
#mtools version
_AWK_SCRIPT='
/[0-9]/ { 
	split($4,vers,"."); 
	if(vers[1]>=4 && vers[2]>=0 && vers[3] >= 24) { 
		print "true"; 
	}
	exit 0; 
}'
MTOOLS_OK=$(mtools --version | awk "${_AWK_SCRIPT}")

if [ ! $MTOOLS_OK ]; then
	echo "Invalid mtools version, please upgrade mtools to >= 4.0.24"
	exit -1
fi

sfdisk $BLK_DEV << ==sfdisk
label: dos
label-id: 0x09650eb4
unit: sectors

/dev/sdx1 : start=2048,  size=28522496, type=b, bootable
/dev/sdx2 : start=28524544,  size=2097152, type=b
==sfdisk
sleep 1
PART1="${BLK_DEV}1"
PART2="${BLK_DEV}2"
mformat -i "$PART1" -F -v MUDITAOS
mformat -i "$PART2" -F -v RECOVER
sync
echo "Old partition scheme layout restored. Please run ./flash_eMMC.sh script for add phone data"