base-files: upgrade: nand: add JFFS2 cleanmarkers support

Some Broadcom MIPS devices require JFFS2 cleanmarkers to be present on the
kernel partition or the bootloader will identify the partition as corrupt and
won't boot the kernel.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
This commit is contained in:
Álvaro Fernández Rojas 2023-06-15 10:46:10 +02:00
parent cdfcac6e24
commit 434df8df54

View File

@ -301,6 +301,7 @@ nand_upgrade_fit() {
nand_upgrade_tar() { nand_upgrade_tar() {
local tar_file="$1" local tar_file="$1"
local gz="$2" local gz="$2"
local jffs2_markers="${CI_JFFS2_CLEAN_MARKERS:-0}"
# WARNING: This fails if tar contains more than one 'sysupgrade-*' directory. # WARNING: This fails if tar contains more than one 'sysupgrade-*' directory.
local board_dir="$(tar t${gz}f "$tar_file" | grep -m 1 '^sysupgrade-.*/$')" local board_dir="$(tar t${gz}f "$tar_file" | grep -m 1 '^sysupgrade-.*/$')"
@ -329,6 +330,7 @@ nand_upgrade_tar() {
ubi_kernel_length="$kernel_length" ubi_kernel_length="$kernel_length"
fi fi
fi fi
local has_env=0 local has_env=0
nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "$ubi_kernel_length" "$has_env" || return 1 nand_upgrade_prepare_ubi "$rootfs_length" "$rootfs_type" "$ubi_kernel_length" "$has_env" || return 1
@ -340,8 +342,14 @@ nand_upgrade_tar() {
fi fi
if [ "$kernel_length" ]; then if [ "$kernel_length" ]; then
if [ "$kernel_mtd" ]; then if [ "$kernel_mtd" ]; then
tar xO${gz}f "$tar_file" "$board_dir/kernel" | \ if [ "$jffs2_markers" = 1 ]; then
mtd write - "$CI_KERNPART" flash_erase -j "/dev/mtd${kernel_mtd}" 0 0
tar xO${gz}f "$tar_file" "$board_dir/kernel" | \
nandwrite "/dev/mtd${kernel_mtd}" -
else
tar xO${gz}f "$tar_file" "$board_dir/kernel" | \
mtd write - "$CI_KERNPART"
fi
else else
local ubidev="$( nand_find_ubi "${CI_KERN_UBIPART:-$CI_UBIPART}" )" local ubidev="$( nand_find_ubi "${CI_KERN_UBIPART:-$CI_UBIPART}" )"
local kern_ubivol="$( nand_find_volume $ubidev "$CI_KERNPART" )" local kern_ubivol="$( nand_find_volume $ubidev "$CI_KERNPART" )"