mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 14:23:38 +00:00
base-files: add eMMC sysupgrade support (#8400)
Signed-off-by: aakkll <94471752+aakkll@users.noreply.github.com> Co-authored-by: Enrico Mioso <mrkiko.rs@gmail.com>
This commit is contained in:
parent
4bdb51efa0
commit
2972a0502d
@ -23,6 +23,7 @@ PKG_LICENSE:=GPL-2.0
|
|||||||
PKG_CONFIG_DEPENDS += \
|
PKG_CONFIG_DEPENDS += \
|
||||||
CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE \
|
CONFIG_SIGNED_PACKAGES CONFIG_TARGET_INIT_PATH CONFIG_TARGET_PREINIT_DISABLE_FAILSAFE \
|
||||||
CONFIG_NAND_SUPPORT \
|
CONFIG_NAND_SUPPORT \
|
||||||
|
CONFIG_EMMC_SUPPORT \
|
||||||
CONFIG_CLEAN_IPKG \
|
CONFIG_CLEAN_IPKG \
|
||||||
CONFIG_PER_FEED_REPO \
|
CONFIG_PER_FEED_REPO \
|
||||||
$(foreach feed,$(FEEDS_AVAILABLE),CONFIG_FEED_$(feed))
|
$(foreach feed,$(FEEDS_AVAILABLE),CONFIG_FEED_$(feed))
|
||||||
@ -124,10 +125,17 @@ ifeq ($(CONFIG_NAND_SUPPORT),)
|
|||||||
endef
|
endef
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(CONFIG_EMMC_SUPPORT),)
|
||||||
|
define Package/base-files/emmc-support
|
||||||
|
rm -f $(1)/lib/upgrade/emmc.sh
|
||||||
|
endef
|
||||||
|
endif
|
||||||
|
|
||||||
define Package/base-files/install
|
define Package/base-files/install
|
||||||
$(CP) ./files/* $(1)/
|
$(CP) ./files/* $(1)/
|
||||||
$(Package/base-files/install-key)
|
$(Package/base-files/install-key)
|
||||||
$(Package/base-files/nand-support)
|
$(Package/base-files/nand-support)
|
||||||
|
$(Package/base-files/emmc-support)
|
||||||
if [ -d $(GENERIC_PLATFORM_DIR)/base-files/. ]; then \
|
if [ -d $(GENERIC_PLATFORM_DIR)/base-files/. ]; then \
|
||||||
$(CP) $(GENERIC_PLATFORM_DIR)/base-files/* $(1)/; \
|
$(CP) $(GENERIC_PLATFORM_DIR)/base-files/* $(1)/; \
|
||||||
fi
|
fi
|
||||||
|
64
package/base-files/files/lib/upgrade/emmc.sh
Normal file
64
package/base-files/files/lib/upgrade/emmc.sh
Normal file
@ -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
|
||||||
|
}
|
@ -23,6 +23,7 @@ sub target_config_features(@) {
|
|||||||
/^pwm$/ and $ret .= "\select PWM_SUPPORT\n";
|
/^pwm$/ and $ret .= "\select PWM_SUPPORT\n";
|
||||||
/^rtc$/ and $ret .= "\tselect RTC_SUPPORT\n";
|
/^rtc$/ and $ret .= "\tselect RTC_SUPPORT\n";
|
||||||
/^squashfs$/ and $ret .= "\tselect USES_SQUASHFS\n";
|
/^squashfs$/ and $ret .= "\tselect USES_SQUASHFS\n";
|
||||||
|
/^emmc$/ and $ret .= "\tselect EMMC_SUPPORT\n";
|
||||||
/^jffs2$/ and $ret .= "\tselect USES_JFFS2\n";
|
/^jffs2$/ and $ret .= "\tselect USES_JFFS2\n";
|
||||||
/^jffs2_nand$/ and $ret .= "\tselect USES_JFFS2_NAND\n";
|
/^jffs2_nand$/ and $ret .= "\tselect USES_JFFS2_NAND\n";
|
||||||
/^ext4$/ and $ret .= "\tselect USES_EXT4\n";
|
/^ext4$/ and $ret .= "\tselect USES_EXT4\n";
|
||||||
|
@ -101,6 +101,9 @@ config RFKILL_SUPPORT
|
|||||||
config NAND_SUPPORT
|
config NAND_SUPPORT
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
config EMMC_SUPPORT
|
||||||
|
bool
|
||||||
|
|
||||||
config ARCH_64BIT
|
config ARCH_64BIT
|
||||||
bool
|
bool
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user