forked from coolsnowwolf/lede
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
base-files: add eMMC sysupgrade support (coolsnowwolf#8400)
Signed-off-by: aakkll <[email protected]> Co-authored-by: Enrico Mioso <[email protected]>
- Loading branch information
Showing
4 changed files
with
76 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Copyright (C) 2021 OpenWrt.org | ||
# | ||
|
||
. /lib/functions.sh | ||
|
||
emmc_upgrade_tar() { | ||
local tar_file="$1" | ||
[ "$CI_KERNPART" -a -z "$EMMC_KERN_DEV" ] && export EMMC_KERN_DEV="$(find_mmc_part $CI_KERNPART $CI_ROOTDEV)" | ||
[ "$CI_ROOTPART" -a -z "$EMMC_ROOT_DEV" ] && export EMMC_ROOT_DEV="$(find_mmc_part $CI_ROOTPART $CI_ROOTDEV)" | ||
[ "$CI_DATAPART" -a -z "$EMMC_DATA_DEV" ] && export EMMC_DATA_DEV="$(find_mmc_part $CI_DATAPART $CI_ROOTDEV)" | ||
local has_kernel | ||
local has_rootfs | ||
local board_dir=$(tar tf "$tar_file" | grep -m 1 '^sysupgrade-.*/$') | ||
board_dir=${board_dir%/} | ||
|
||
tar tf "$tar_file" ${board_dir}/kernel 1>/dev/null 2>/dev/null && has_kernel=1 | ||
tar tf "$tar_file" ${board_dir}/root 1>/dev/null 2>/dev/null && has_rootfs=1 | ||
|
||
[ "$has_kernel" = 1 -a "$EMMC_KERN_DEV" ] && | ||
export EMMC_KERNEL_BLOCKS=$(($(tar xf "$tar_file" ${board_dir}/kernel -O | dd of="$EMMC_KERN_DEV" bs=512 2>&1 | grep "records out" | cut -d' ' -f1))) | ||
|
||
[ "$has_rootfs" = 1 -a "$EMMC_ROOT_DEV" ] && | ||
export EMMC_ROOTFS_BLOCKS=$(($(tar xf "$tar_file" ${board_dir}/root -O | dd of="$EMMC_ROOT_DEV" bs=512 2>&1 | grep "records out" | cut -d' ' -f1))) | ||
|
||
if [ -z "$UPGRADE_BACKUP" ]; then | ||
if [ "$EMMC_DATA_DEV" ]; then | ||
dd if=/dev/zero of="$EMMC_DATA_DEV" bs=512 count=8 | ||
elif [ "$EMMC_ROOTFS_BLOCKS" ]; then | ||
dd if=/dev/zero of="$EMMC_ROOT_DEV" bs=512 seek=$EMMC_ROOTFS_BLOCKS count=8 | ||
elif [ "$EMMC_KERNEL_BLOCKS" ]; then | ||
dd if=/dev/zero of="$EMMC_KERN_DEV" bs=512 seek=$EMMC_KERNEL_BLOCKS count=8 | ||
fi | ||
fi | ||
} | ||
|
||
emmc_upgrade_fit() { | ||
local fit_file="$1" | ||
[ "$CI_KERNPART" -a -z "$EMMC_KERN_DEV" ] && export EMMC_KERN_DEV="$(find_mmc_part $CI_KERNPART $CI_ROOTDEV)" | ||
|
||
if [ "$EMMC_KERN_DEV" ]; then | ||
export EMMC_KERNEL_BLOCKS=$(($(get_image "$fit_file" | fwtool -i /dev/null -T - | dd of="$EMMC_KERN_DEV" bs=512 2>&1 | grep "records out" | cut -d' ' -f1))) | ||
|
||
[ -z "$UPGRADE_BACKUP" ] && dd if=/dev/zero of="$EMMC_KERN_DEV" bs=512 seek=$EMMC_KERNEL_BLOCKS count=8 | ||
fi | ||
} | ||
|
||
emmc_copy_config() { | ||
if [ "$EMMC_DATA_DEV" ]; then | ||
dd if="$UPGRADE_BACKUP" of="$EMMC_DATA_DEV" bs=512 | ||
elif [ "$EMMC_ROOTFS_BLOCKS" ]; then | ||
dd if="$UPGRADE_BACKUP" of="$EMMC_ROOT_DEV" bs=512 seek=$EMMC_ROOTFS_BLOCKS | ||
elif [ "$EMMC_KERNEL_BLOCKS" ]; then | ||
dd if="$UPGRADE_BACKUP" of="$EMMC_KERN_DEV" bs=512 seek=$EMMC_KERNEL_BLOCKS | ||
fi | ||
} | ||
|
||
emmc_do_upgrade() { | ||
local file_type=$(identify $1) | ||
|
||
case "$file_type" in | ||
"fit") emmc_upgrade_fit $1;; | ||
*) emmc_upgrade_tar $1;; | ||
esac | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -101,6 +101,9 @@ config RFKILL_SUPPORT | |
config NAND_SUPPORT | ||
bool | ||
|
||
config EMMC_SUPPORT | ||
bool | ||
|
||
config ARCH_64BIT | ||
bool | ||
|
||
|