[openwrt/openwrt] ath79: mikrotik: update kernel on NAND using Yafut

LEDE Commits lede-commits at lists.infradead.org
Tue Apr 18 04:53:19 PDT 2023


ansuel pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/5264296ce480e46c7cd6228502b48ea944a6459b

commit 5264296ce480e46c7cd6228502b48ea944a6459b
Author: Michał Kępień <openwrt at kempniu.pl>
AuthorDate: Sat Apr 1 20:54:14 2023 +0200

    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 at kempniu.pl>
---
 target/linux/ath79/image/common-mikrotik.mk                    | 6 ++----
 target/linux/ath79/mikrotik/base-files/lib/upgrade/platform.sh | 5 ++---
 target/linux/ath79/mikrotik/target.mk                          | 2 +-
 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




More information about the lede-commits mailing list