openwrt/target/linux/mvebu/base-files/lib/preinit/82_uDPU
Vladimir Vid 7dff6a8c89 mvebu: uDPU: add sysupgrade support
This patch adds sysupgrade, uboot-env and networking support
for Methode uDPU device.

Device features 4 partitions:

-----------------------------------------
|  boot   | recovery  | rootfs |  misc  |
| (ext4)  |  (ext4)   | (fsf2) | (f2fs) |
_________________________________________

Idea was to use f2fs only but the u-boot currently lacks support
so first 2 partition are ext4 to be u-boot readable, and this was
a reason why custom build and sysupgrade sections were required.

On the sysupgrade, boot and rootfs partitions are updated, firmare
image and user configuration is saved on the misc partition and if
the upgrade was successfull, recovery partition will be updated on
after the reboot from preinit script. If the sysupgrade fails for any
reason, device will fallback to recovery initramfs image.

Signed-off-by: Vladimir Vid <vladimir.vid@sartura.hr>
2019-08-24 23:11:15 +02:00

49 lines
1.3 KiB
Plaintext

#
# Copyright (C) 2014-2019 OpenWrt.org
# Copyright (C) 2016 LEDE-Project.org
#
preinit_mount_udpu() {
. /lib/functions.sh
case $(board_name) in
methode,udpu)
# Check which device is detected
[ -b "/dev/mmcblk0" ] && mmcdev="/dev/mmcblk0" || mmcdev="/dev/mmcblk1"
if [ -b "${mmcdev}p4" ]; then
mkdir /misc
mount -t f2fs ${mmcdev}p4 /misc
[ -f "/misc/sysupgrade.tgz" ] && {
echo "- Restoring configuration files -"
tar xzf /misc/sysupgrade.tgz -C /
rm -f /misc/sysupgrade.tgz
sync
}
[ -f "/misc/firmware/recovery.itb" ] && {
echo "- Updating /recovery partition -"
mkfs.ext4 -q ${mmcdev}p2 | echo y &> /dev/null
mkdir -p /tmp/recovery
mount ${mmcdev}p2 /tmp/recovery
cp /misc/firmware/recovery.itb /tmp/recovery
[ -f "/misc/firmware/boot.scr" ] && \
cp /misc/firmware/boot.scr /tmp/recovery
sync
umount /tmp/recovery
rm -rf /tmp/recovery
# Replace previous backup with the new one
[ -d "/misc/firmware_old" ] && rm -rf /misc/firmware_old
[ -d "/misc/firmware" ] && mv /misc/firmware /misc/firmware_old
}
fi
# Legacy support - if rootfs was booted, instruct u-boot to keep the current root dev
[ "$(df | grep /dev/root)" ] && fw_setenv root_ok '2'
;;
esac
}
boot_hook_add preinit_main preinit_mount_udpu