diff options
Diffstat (limited to 'target/linux/mvebu/base-files/lib/preinit')
-rw-r--r-- | target/linux/mvebu/base-files/lib/preinit/82_uDPU | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/target/linux/mvebu/base-files/lib/preinit/82_uDPU b/target/linux/mvebu/base-files/lib/preinit/82_uDPU new file mode 100644 index 0000000000..937a0a5f21 --- /dev/null +++ b/target/linux/mvebu/base-files/lib/preinit/82_uDPU @@ -0,0 +1,48 @@ +# +# 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 |