Merge pull request #25 from jav4/sysupgrade
Add sysupgrade functionality
This commit is contained in:
3 files changed
+60
-3
No files matched your search
@@ -0,0 +1,55 @@
|
||||
#!/bin/sh
|
||||
# MSM8916 eMMC sysupgrade - kernel (Android boot image) + rootfs (squashfs)
|
||||
|
||||
PART_NAME=firmware
|
||||
REQUIRE_IMAGE_METADATA=1
|
||||
RAMFS_COPY_DATA="/lib/functions.sh /lib/upgrade/common.sh /lib/upgrade/fwtool.sh /lib/upgrade/luci-add-conffiles.sh /lib/upgrade/platform.sh /lib/upgrade/tar.sh"
|
||||
|
||||
platform_check_image() {
|
||||
local fw_image="$1"
|
||||
local boardname
|
||||
|
||||
read boardname </tmp/sysinfo/board_name
|
||||
boardname=${boardname//-/}
|
||||
boardname=${boardname//,/-}
|
||||
|
||||
# Must be a tar archive
|
||||
local control_len=$( (tar xf $fw_image sysupgrade-$boardname/CONTROL -O | wc -c) 2> /dev/null)
|
||||
|
||||
# check if valid sysupgrade tar archive
|
||||
if [ "$control_len" = "0" ]; then
|
||||
echo "Invalid sysupgrade file: $fw_image"
|
||||
return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
platform_do_upgrade() {
|
||||
local tar_file="$1"
|
||||
local boot_part rootfs_part
|
||||
local board_dir=$(tar tf $tar_file | grep -m 1 '^sysupgrade-.*/$')
|
||||
board_dir=${board_dir%/}
|
||||
|
||||
# Locate partitions by GPT label
|
||||
boot_part=$(find_mmc_part "boot")
|
||||
rootfs_part=$(find_mmc_part "rootfs")
|
||||
|
||||
[ -z "$boot_part" ] && { echo "sysupgrade: cannot find 'boot' partition"; return 1; }
|
||||
[ -z "$rootfs_part" ] && { echo "sysupgrade: cannot find 'rootfs' partition"; return 1; }
|
||||
|
||||
echo "sysupgrade: writing kernel to $boot_part"
|
||||
tar -xOf "$tar_file" ${board_dir}/kernel 2>/dev/null | \
|
||||
dd of="$boot_part" bs=4096 conv=fsync
|
||||
|
||||
echo "sysupgrade: writing rootfs to $rootfs_part"
|
||||
tar -xOf "$tar_file" ${board_dir}/root 2>/dev/null | \
|
||||
dd of="$rootfs_part" bs=4096 conv=fsync
|
||||
|
||||
sync
|
||||
}
|
||||
|
||||
platform_pre_upgrade() {
|
||||
rm -fr /overlay/upper/* /overlay/upper/.* 2>/dev/null
|
||||
[ -f "$UPGRADE_BACKUP" ] && cp -f "$UPGRADE_BACKUP" "/overlay/upper/$BACKUP_FILE" 2>/dev/null
|
||||
}
|
||||
@@ -21,10 +21,11 @@ endef
|
||||
### Devices ###
|
||||
define Device/Default
|
||||
PROFILES := Default
|
||||
KERNEL = kernel-bin | gzip | append-dtb
|
||||
IMAGES := boot.img system.img
|
||||
IMAGE/boot.img := append-kernel | aboot-img | append-metadata
|
||||
KERNEL = kernel-bin | gzip | append-dtb | aboot-img
|
||||
IMAGES := boot.img system.img sysupgrade.bin
|
||||
IMAGE/boot.img := append-kernel | append-metadata
|
||||
IMAGE/system.img := append-rootfs | append-metadata
|
||||
IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
|
||||
DEVICE_DTS_DIR := $(DTS_DIR)/qcom
|
||||
DEVICE_DTS = $$(SOC)-$(lastword $(subst _, ,$(1)))
|
||||
CMDLINE := "earlycon console=ttyMSM0,115200 rw"
|
||||
|
||||
@@ -32,6 +32,7 @@ define Device/yiming-uz801v3
|
||||
$(Device/msm8916)
|
||||
DEVICE_VENDOR := YiMing
|
||||
DEVICE_MODEL := uz801v3
|
||||
SUPPORTED_DEVICES := yiming,uz801-v3
|
||||
FILESYSTEMS := squashfs
|
||||
DEVICE_PACKAGES := wpad-basic-wolfssl rmtfs uci-usb-gadget \
|
||||
block-mount f2fs-tools \
|
||||
|
||||
Reference in new issue
Block a user