[][Refactor eMMC image of MT7981]
[Description]
Refactor eMMC image of MT7981.
The whole image format is changed:
- Kernel and rootfs reside in individual partitions.
- rootfs_data split from rootfs partition using loop device with offset.
- Upgrading firmware usig tarball with saving config files supported.
- No recovery partition needed.
- No GPT partition offset and size restricted.
Important note:
Please select the following packages to make emmc firmware upgrading work:
e2fsprogs mkf2fs blkid blockdev losetup kmod-fs-ext4 kmod-fs-f2fs
[Release-log]
N/A
Change-Id: I17ad85efa235d068504eeb848431b0c73ae768b4
Change-Id: Iae56e7776b049d3fd9f79861523379794e99c7f0
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/5374466
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-emmc-rfb.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-emmc-rfb.dts
index d632601..bf2628e 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-emmc-rfb.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-emmc-rfb.dts
@@ -6,7 +6,7 @@
chosen {
bootargs = "console=ttyS0,115200n1 loglevel=8 \
earlycon=uart8250,mmio32,0x11002000 \
- root=/dev/mmcblk0p7 rootfstype=squashfs,f2fs";
+ root=PARTLABEL=rootfs rootfstype=squashfs,f2fs";
};
memory {
diff --git a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-sd-rfb.dts b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-sd-rfb.dts
index b3db66b..7d0c097 100644
--- a/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-sd-rfb.dts
+++ b/target/linux/mediatek/files-5.4/arch/arm64/boot/dts/mediatek/mt7981-sd-rfb.dts
@@ -2,11 +2,11 @@
#include "mt7981.dtsi"
/ {
model = "MediaTek MT7981 RFB";
- compatible = "mediatek,mt7981-emmc-rfb";
+ compatible = "mediatek,mt7981-sd-rfb";
chosen {
bootargs = "console=ttyS0,115200n1 loglevel=8 \
earlycon=uart8250,mmio32,0x11002000 \
- root=/dev/mmcblk0p7 rootfstype=squashfs,f2fs";
+ root=PARTLABEL=rootfs rootfstype=squashfs,f2fs";
};
memory {
diff --git a/target/linux/mediatek/image/gen_mt7981_emmc_img.sh b/target/linux/mediatek/image/gen_mt7981_emmc_img.sh
deleted file mode 100755
index d74068c..0000000
--- a/target/linux/mediatek/image/gen_mt7981_emmc_img.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-OUTPUT_FILE=$1
-KERNEL_FILE=$2
-RECOVERY_FILE=$3
-ROOTFS_FILE=$4
-
-BS=512
-
-#RECOVERY_OFFSET= kernel size / BS = 20M / 512 (blocks)
-RECOVERY_OFFSET=40960
-
-#ROOTFS_OFFSET = RECOVERY_OFFSET + (RECOVERY_SIZE / BS)
-# = 40960 + (10M / 512) (blocks)
-ROOTFS_OFFSET=61440
-dd bs="$BS" of="$OUTPUT_FILE" if="$KERNEL_FILE"
-dd bs="$BS" of="$OUTPUT_FILE" if="$RECOVERY_FILE" seek="$RECOVERY_OFFSET"
-dd bs="$BS" of="$OUTPUT_FILE" if="$ROOTFS_FILE" seek="$ROOTFS_OFFSET"
-dd if=/dev/zero of="$OUTPUT_FILE" bs=128k count=1 oflag=append conv=notrunc
diff --git a/target/linux/mediatek/image/mt7981.mk b/target/linux/mediatek/image/mt7981.mk
index f42ca75..359351d 100755
--- a/target/linux/mediatek/image/mt7981.mk
+++ b/target/linux/mediatek/image/mt7981.mk
@@ -46,13 +46,28 @@
DEVICE_VENDOR := MediaTek
DEVICE_MODEL := mt7981-emmc-rfb
DEVICE_DTS := mt7981-emmc-rfb
+ SUPPORTED_DEVICES := mediatek,mt7981-emmc-rfb
DEVICE_DTS_DIR := $(DTS_DIR)/mediatek
- DEVICE_PACKAGES := mkf2fs e2fsprogs kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc
- IMAGES := sysupgrade-emmc.bin.gz
- IMAGE/sysupgrade-emmc.bin.gz := sysupgrade-emmc | gzip | append-metadata
+ DEVICE_PACKAGES := mkf2fs e2fsprogs blkid blockdev losetup kmod-fs-ext4 \
+ kmod-mmc kmod-fs-f2fs kmod-fs-vfat kmod-nls-cp437 \
+ kmod-nls-iso8859-1
+ IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
endef
TARGET_DEVICES += mt7981-emmc-rfb
+define Device/mt7981-sd-rfb
+ DEVICE_VENDOR := MediaTek
+ DEVICE_MODEL := mt7981-sd-rfb
+ DEVICE_DTS := mt7981-sd-rfb
+ SUPPORTED_DEVICES := mediatek,mt7981-sd-rfb
+ DEVICE_DTS_DIR := $(DTS_DIR)/mediatek
+ DEVICE_PACKAGES := mkf2fs e2fsprogs blkid blockdev losetup kmod-fs-ext4 \
+ kmod-mmc kmod-fs-f2fs kmod-fs-vfat kmod-nls-cp437 \
+ kmod-nls-iso8859-1
+ IMAGE/sysupgrade.bin := sysupgrade-tar | append-metadata
+endef
+TARGET_DEVICES += mt7981-sd-rfb
+
define Device/mt7981-snfi-nand-2500wan-p5
DEVICE_VENDOR := MediaTek
DEVICE_MODEL := mt7981-snfi-nand-2500wan-p5
diff --git a/target/linux/mediatek/mt7981/base-files/lib/upgrade/platform.sh b/target/linux/mediatek/mt7981/base-files/lib/upgrade/platform.sh
index 2ee99c7..53a45ab 100644
--- a/target/linux/mediatek/mt7981/base-files/lib/upgrade/platform.sh
+++ b/target/linux/mediatek/mt7981/base-files/lib/upgrade/platform.sh
@@ -1,3 +1,4 @@
+RAMFS_COPY_BIN='mkfs.f2fs blkid blockdev'
platform_do_upgrade() {
local board=$(board_name)
@@ -6,6 +7,10 @@
nand_do_upgrade "$1"
;;
*)
+ *emmc*)
+ mtk_mmc_do_upgrade "$1"
+ ;;
+ *)
default_do_upgrade "$1"
;;
esac
@@ -20,7 +25,8 @@
[ "$#" -gt 1 ] && return 1
case "$board" in
- *snand*)
+ *snand*)|\
+ *emmc*)
# tar magic `ustar`
magic="$(dd if="$1" bs=1 skip=257 count=5 2>/dev/null)"