aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Kępień <openwrt@kempniu.pl>2023-04-01 20:54:14 +0200
committerChristian Marangi <ansuelsmth@gmail.com>2023-04-18 13:53:04 +0200
commit5264296ce480e46c7cd6228502b48ea944a6459b (patch)
tree5180dd3bd19530184be9165e8bbfe345ea010e52
parent27acf2413e91247e16e4f52c6008ec0f5a5cf4a6 (diff)
downloadupstream-5264296ce480e46c7cd6228502b48ea944a6459b.tar.gz
upstream-5264296ce480e46c7cd6228502b48ea944a6459b.tar.bz2
upstream-5264296ce480e46c7cd6228502b48ea944a6459b.zip
ath79: mikrotik: update kernel on NAND using Yafut
Instead of erasing the entire NAND partition holding the kernel during every system upgrade and then flashing a Yaffs file system image prepared using kernel2minor (not accounting for bad blocks in the process), use the Yafut utility to replace the kernel executable on MikroTik NAND devices, preserving the existing Yaffs file system (including bad block information) on the partition holding the kernel. Add Yafut to DEFAULT_PACKAGES for the ath79/mikrotik target, so that the tool is included in the initramfs images created when building for multiple profiles. However, exclude Yafut from the images built for MikroTik devices with NOR flash as the tool is currently only meant to be used on devices with NAND flash. As this addresses the concerns for MikroTik NAND devices discussed in commit 9d96b6fb72 ("ath79/mikrotik: disable building NAND images"), re-enable building images for these devices. Signed-off-by: Michał Kępień <openwrt@kempniu.pl>
-rw-r--r--target/linux/ath79/image/common-mikrotik.mk6
-rw-r--r--target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh5
-rw-r--r--target/linux/ath79/mikrotik/target.mk2
3 files changed, 5 insertions, 8 deletions
diff --git a/target/linux/ath79/image/common-mikrotik.mk b/target/linux/ath79/image/common-mikrotik.mk
index fb3dc78226..ce349b60b1 100644
--- a/target/linux/ath79/image/common-mikrotik.mk
+++ b/target/linux/ath79/image/common-mikrotik.mk
@@ -9,6 +9,7 @@ endef
define Device/mikrotik_nor
$(Device/mikrotik)
+ DEVICE_PACKAGES := -yafut
IMAGE/sysupgrade.bin := append-kernel | kernel2minor -s 1024 -e | \
pad-to $$$$(BLOCKSIZE) | append-rootfs | pad-rootfs | \
check-size | append-metadata
@@ -16,8 +17,5 @@ endef
define Device/mikrotik_nand
$(Device/mikrotik)
- IMAGE/sysupgrade.bin = append-kernel | kernel2minor -s 2048 -e -c | \
- sysupgrade-tar kernel=$$$$@ | append-metadata
- DEVICE_PACKAGES := nand-utils
- DEFAULT := n
+ IMAGE/sysupgrade.bin = append-kernel | sysupgrade-tar | append-metadata
endef
diff --git a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh
index 3ffe01cb23..93a9c3a855 100644
--- a/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh
@@ -7,7 +7,7 @@ platform_check_image() {
return 0
}
-RAMFS_COPY_BIN='nandwrite'
+RAMFS_COPY_BIN='yafut'
platform_do_upgrade_mikrotik_nand() {
CI_KERNPART=none
@@ -20,8 +20,7 @@ platform_do_upgrade_mikrotik_nand() {
board_dir=${board_dir%/}
[ -n "$board_dir" ] || return
- mtd erase kernel
- tar xf "$1" ${board_dir}/kernel -O | nandwrite -o "$fw_mtd" -
+ tar xf "$1" ${board_dir}/kernel -O | yafut -d "$fw_mtd" -w -i - -o kernel -m 0755 || return
nand_do_upgrade "$1"
}
diff --git a/target/linux/ath79/mikrotik/target.mk b/target/linux/ath79/mikrotik/target.mk
index bfc8cceac6..a3c876d7a7 100644
--- a/target/linux/ath79/mikrotik/target.mk
+++ b/target/linux/ath79/mikrotik/target.mk
@@ -3,7 +3,7 @@ FEATURES += minor nand
KERNELNAME := vmlinux vmlinuz
IMAGES_DIR := ../../..
-DEFAULT_PACKAGES += wpad-basic-mbedtls
+DEFAULT_PACKAGES += wpad-basic-mbedtls yafut
define Target/Description
Build firmware images for MikroTik devices based on Qualcomm Atheros