[Add kernel in UBI feature]
[Description]
Add kernel in UBI feature
1. create factory and sysupgrade image align to openwrt
2. align openwrt image framework: kernel in UBI and rootfs is squashfs format
3. remove the partition patch for dts
4. enable CONFIG_XZ_DEC_ARM in kernel to fix squashfs xz decompression
fail issue
[Release-log]
diff --git a/classes/image_types-mtk.bbclass b/classes/image_types-mtk.bbclass
index 0927296..7d9fae8 100644
--- a/classes/image_types-mtk.bbclass
+++ b/classes/image_types-mtk.bbclass
@@ -131,26 +131,48 @@
assemble_sd_image
}
-#NAND_ROOTFS_TYPE ?= "squashfs-xz"
-NAND_ROOTFS_TYPE ?= "ubi"
+NAND_ROOTFS_TYPE ?= "squashfs-xz"
+#NAND_ROOTFS_TYPE ?= "ubi"
NAND_FILE ?= "${IMGDEPLOYDIR}/${IMAGE_NAME}${IMAGE_NAME_SUFFIX}.mtk.nand"
IMAGE_CMD_mtk.nand () {
- rm -f ${NAND_FILE}
- # 1. dump fitImage into firmware
- dd if=${DEPLOY_DIR_IMAGE}/fitImage >> ${NAND_FILE}
+# create factory image align to openwrt (kernel in ubi)
- # 2. pad to 256K
- dd if=${NAND_FILE} of=${NAND_FILE}.new bs=256k conv=sync
- mv -f ${NAND_FILE}.new ${NAND_FILE}
+ echo \[kernel\] > ubinize.cfg
+ echo mode=ubi >> ubinize.cfg
+ echo image=${DEPLOY_DIR_IMAGE}/fitImage >> ubinize.cfg
+ echo vol_id=0 >> ubinize.cfg
+ echo vol_type=dynamic >> ubinize.cfg
+ echo vol_name=kernel >> ubinize.cfg
+ echo \[rootfs\] >> ubinize.cfg
+ echo mode=ubi >> ubinize.cfg
+ echo image=${IMGDEPLOYDIR}/${PN}-${MACHINE}.squashfs-xz >> ubinize.cfg
+ echo vol_id=1 >> ubinize.cfg
+ echo vol_type=dynamic >> ubinize.cfg
+ echo vol_name=rootfs >> ubinize.cfg
+ echo \[rootfs_data\] >> ubinize.cfg
+ echo mode=ubi >> ubinize.cfg
+ echo vol_id=2 >> ubinize.cfg
+ echo vol_type=dynamic >> ubinize.cfg
+ echo vol_name=rootfs_data >> ubinize.cfg
+ echo vol_size=1MiB >> ubinize.cfg
+ echo vol_flags=autoresize >> ubinize.cfg
+ ubinize -o ${DEPLOY_DIR_IMAGE}/${PN}-${MACHINE}-factory.bin ${UBINIZE_ARGS} ubinize.cfg
+ mv ubinize.cfg ${DEPLOY_DIR_IMAGE}/
- # 3. pad to kernel size = 0x800000 = 8388608
- dd if=${NAND_FILE} of=${NAND_FILE}.new bs=8388608 conv=sync
- mv -f ${NAND_FILE}.new ${NAND_FILE}
+# create sysupgrade image align to openwrt
+
+ rm -rf ${IMGDEPLOYDIR}/sysupgrade-${PN}-${MACHINE}
+ rm -rf ${IMGDEPLOYDIR}/${PN}-${MACHINE}-sysupgrade.bin
+
+ mkdir ${IMGDEPLOYDIR}/sysupgrade-${PN}-${MACHINE}
+
+ cp ${DEPLOY_DIR_IMAGE}/fitImage ${IMGDEPLOYDIR}/sysupgrade-${PN}-${MACHINE}/kernel
+ cp ${IMGDEPLOYDIR}/${PN}-${MACHINE}.squashfs-xz ${IMGDEPLOYDIR}/sysupgrade-${PN}-${MACHINE}/root
- # 4. dump filesystem into firmware
- dd if=${IMGDEPLOYDIR}/${PN}-${MACHINE}.${NAND_ROOTFS_TYPE} >> ${NAND_FILE}
+ cd ${IMGDEPLOYDIR}
+ tar cvf ${PN}-${MACHINE}-sysupgrade.bin sysupgrade-${PN}-${MACHINE}
}
# Both eMMC and SD requires the ext4 rootfs filesystem to be built before using
diff --git a/conf/machine/filogic-32bit.conf b/conf/machine/filogic-32bit.conf
index 794613a..812680b 100644
--- a/conf/machine/filogic-32bit.conf
+++ b/conf/machine/filogic-32bit.conf
@@ -36,7 +36,7 @@
PREFERRED_PROVIDER_hal-wifi = "hal-wifi-cfg80211"
-IMAGE_FSTYPES += "ubi mtk.nand ${INITRAMFS_FSTYPES}"
+IMAGE_FSTYPES += "ubi squashfs-xz mtk.nand ${INITRAMFS_FSTYPES}"
# Parameters for MT7986 RFB1 NAND (byte)
# NAND_LOG_BLOCK_SIZE = NAND_PHY_BLOCK_SIZE - 2 Pages
# NAND_LBLOCK_COUNT = NAND_PHY_BLOCK_COUNT - 53
diff --git a/conf/machine/filogic.conf b/conf/machine/filogic.conf
index 03a50a2..d95bf2d 100644
--- a/conf/machine/filogic.conf
+++ b/conf/machine/filogic.conf
@@ -36,7 +36,7 @@
PREFERRED_PROVIDER_hal-wifi = "hal-wifi-cfg80211"
-IMAGE_FSTYPES += "ubi mtk.nand ${INITRAMFS_FSTYPES}"
+IMAGE_FSTYPES += "ubi squashfs-xz mtk.nand ${INITRAMFS_FSTYPES}"
# Parameters for MT7986 RFB1 NAND (byte)
# NAND_LOG_BLOCK_SIZE = NAND_PHY_BLOCK_SIZE - 2 Pages
# NAND_LBLOCK_COUNT = NAND_PHY_BLOCK_COUNT - 53
diff --git a/recipes-kernel/linux/linux-mediatek-5.4/rdkb_cfg/filogic_rdkb.cfg b/recipes-kernel/linux/linux-mediatek-5.4/rdkb_cfg/filogic_rdkb.cfg
new file mode 100644
index 0000000..52cbc2d
--- /dev/null
+++ b/recipes-kernel/linux/linux-mediatek-5.4/rdkb_cfg/filogic_rdkb.cfg
@@ -0,0 +1 @@
+CONFIG_XZ_DEC_ARM=y
diff --git a/recipes-kernel/linux/linux-mediatek_5.4.bb b/recipes-kernel/linux/linux-mediatek_5.4.bb
index 4877f37..7bcc946 100644
--- a/recipes-kernel/linux/linux-mediatek_5.4.bb
+++ b/recipes-kernel/linux/linux-mediatek_5.4.bb
@@ -37,6 +37,7 @@
file://rdkb_cfg/openvswitch.cfg \
file://rdkb_cfg/mac80211.cfg \
file://rdkb_cfg/prplmesh.cfg \
+ file://rdkb_cfg/filogic_rdkb.cfg \
"
require ${PN}-${PV}/generic/backport-5.4/backport-5.4.inc
@@ -68,7 +69,7 @@
cd ${S}
if [ ! -e patch_applied ]; then
patch -p1 < ${WORKDIR}/001-rdkb-eth-mtk-change-ifname-for.patch
- patch -p1 < ${WORKDIR}/002-rdkb-mtd-ubi-relayout.patch
+
patch -p1 < ${WORKDIR}/0600-net-phylink-propagate-resolved-link-config-via-mac_l.patch
patch -p1 < ${WORKDIR}/9010-iwconfig-wireless-rate-fix.patch
touch patch_applied