Initial commit
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
Some checks failed
Build Kernel / Build all affected Kernels (push) Has been cancelled
Build all core packages / Build all core packages for selected target (push) Has been cancelled
Build and Push prebuilt tools container / Build and Push all prebuilt containers (push) Has been cancelled
Build Toolchains / Build Toolchains for each target (push) Has been cancelled
Build host tools / Build host tools for linux and macos based systems (push) Has been cancelled
Coverity scan build / Coverity x86/64 build (push) Has been cancelled
This commit is contained in:
49
target/linux/mvebu/cortexa53/base-files/lib/preinit/82_uDPU
Normal file
49
target/linux/mvebu/cortexa53/base-files/lib/preinit/82_uDPU
Normal file
@@ -0,0 +1,49 @@
|
||||
#
|
||||
# Copyright (C) 2014-2019 OpenWrt.org
|
||||
# Copyright (C) 2016 LEDE-Project.org
|
||||
#
|
||||
|
||||
preinit_mount_udpu() {
|
||||
. /lib/functions.sh
|
||||
. /lib/upgrade/common.sh
|
||||
|
||||
case $(board_name) in
|
||||
methode,udpu|\
|
||||
methode,edpu)
|
||||
# Check which device is detected
|
||||
[ -b "/dev/mmcblk0" ] && mmcdev="/dev/mmcblk0" || mmcdev="/dev/mmcblk1"
|
||||
|
||||
if [ -b "${mmcdev}p4" ]; then
|
||||
mkdir /misc
|
||||
mount -o compress_algorithm=zstd -t f2fs ${mmcdev}p4 /misc
|
||||
[ -f "/misc/$BACKUP_FILE" ] && {
|
||||
echo "- Restoring configuration files -"
|
||||
tar xzf "/misc/$BACKUP_FILE" -C /
|
||||
rm -f "/misc/$BACKUP_FILE"
|
||||
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
|
||||
60
target/linux/mvebu/cortexa53/base-files/lib/upgrade/platform.sh
Executable file
60
target/linux/mvebu/cortexa53/base-files/lib/upgrade/platform.sh
Executable file
@@ -0,0 +1,60 @@
|
||||
#
|
||||
# Copyright (C) 2014-2016 OpenWrt.org
|
||||
# Copyright (C) 2016 LEDE-Project.org
|
||||
#
|
||||
|
||||
RAMFS_COPY_BIN='fw_printenv fw_setenv mkfs.f2fs fdisk'
|
||||
RAMFS_COPY_DATA='/etc/fw_env.config /var/lock/fw_printenv.lock'
|
||||
REQUIRE_IMAGE_METADATA=1
|
||||
|
||||
platform_check_image() {
|
||||
case "$(board_name)" in
|
||||
glinet,gl-mv1000|\
|
||||
globalscale,espressobin|\
|
||||
globalscale,espressobin-emmc|\
|
||||
globalscale,espressobin-ultra|\
|
||||
globalscale,espressobin-v7|\
|
||||
globalscale,espressobin-v7-emmc)
|
||||
legacy_sdcard_check_image "$1"
|
||||
;;
|
||||
*)
|
||||
return 0
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
platform_do_upgrade() {
|
||||
case "$(board_name)" in
|
||||
glinet,gl-mv1000|\
|
||||
globalscale,espressobin|\
|
||||
globalscale,espressobin-emmc|\
|
||||
globalscale,espressobin-ultra|\
|
||||
globalscale,espressobin-v7|\
|
||||
globalscale,espressobin-v7-emmc)
|
||||
legacy_sdcard_do_upgrade "$1"
|
||||
;;
|
||||
methode,udpu|\
|
||||
methode,edpu)
|
||||
platform_do_upgrade_uDPU "$1"
|
||||
;;
|
||||
*)
|
||||
default_do_upgrade "$1"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
platform_copy_config() {
|
||||
case "$(board_name)" in
|
||||
glinet,gl-mv1000|\
|
||||
globalscale,espressobin|\
|
||||
globalscale,espressobin-emmc|\
|
||||
globalscale,espressobin-ultra|\
|
||||
globalscale,espressobin-v7|\
|
||||
globalscale,espressobin-v7-emmc)
|
||||
legacy_sdcard_copy_config
|
||||
;;
|
||||
methode,udpu|\
|
||||
methode,edpu)
|
||||
platform_copy_config_uDPU
|
||||
;;
|
||||
esac
|
||||
}
|
||||
162
target/linux/mvebu/cortexa53/base-files/lib/upgrade/uDPU.sh
Normal file
162
target/linux/mvebu/cortexa53/base-files/lib/upgrade/uDPU.sh
Normal file
@@ -0,0 +1,162 @@
|
||||
udpu_check_emmc() {
|
||||
# uDPU uses combined ext4 and f2fs partitions.
|
||||
# partition layout:
|
||||
# 1. boot (ext4)
|
||||
# 2. recovery (ext4)
|
||||
# 3. rootfs (f2fs)
|
||||
# 4. misc (f2fs)
|
||||
|
||||
# Check which device is available, depending on the board revision
|
||||
if [ -b "/dev/mmcblk1" ]; then
|
||||
emmc_dev=/dev/mmcblk1
|
||||
elif [ -b "/dev/mmcblk0" ]; then
|
||||
emmc_dev=/dev/mmcblk0
|
||||
else
|
||||
echo "Cannot detect eMMC flash, aborting.."
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
udpu_part_prep() {
|
||||
if grep -q "$1" /proc/mounts; then
|
||||
mounted_part="$(grep -m 1 $1 /proc/mounts | awk '{print $2}')"
|
||||
umount "$mounted_part"
|
||||
grep -woq "$mounted_part" /proc/mounts && umount -l "$mounted_part"
|
||||
fi
|
||||
}
|
||||
|
||||
udpu_do_part_check() {
|
||||
local emmc_parts="1 2 3 4"
|
||||
local part_valid="1"
|
||||
|
||||
# Check if the block devices exist
|
||||
for num in ${emmc_parts}; do
|
||||
[ ! -b ${emmc_dev}p${num} ] && part_valid="0"
|
||||
done
|
||||
|
||||
# If partitions are missing create a new partition table
|
||||
if [ "$part_valid" != "1" ]; then
|
||||
printf "Invalid partition table, creating a new one\n"
|
||||
printf "o\nn\np\n1\n\n+256M\nn\np\n2\n\n+256M\nn\np\n3\n\n+1536M\nn\np\n\n\nw\n" | fdisk -W always $emmc_dev > /dev/null 2>&1
|
||||
|
||||
# Format the /misc part right away as we will need it for the firmware
|
||||
printf "Formating /misc partition, this make take a while..\n"
|
||||
udpu_part_prep ${emmc_dev}p4
|
||||
if mkfs.f2fs -q -l misc -O extra_attr,compression ${emmc_dev}p4; then
|
||||
printf "/misc partition formated successfully\n"
|
||||
else
|
||||
printf "/misc partition formatting failed\n"
|
||||
fi
|
||||
|
||||
udpu_do_initial_setup
|
||||
else
|
||||
printf "Partition table looks ok\n"
|
||||
fi
|
||||
}
|
||||
|
||||
udpu_do_misc_prep() {
|
||||
if ! grep -woq /misc /proc/mounts; then
|
||||
mkdir -p /misc
|
||||
|
||||
# If the mount fails, try to reformat partition
|
||||
# Leaving possiblity for multiple iterations
|
||||
if ! mount ${emmc_dev}p4 /misc; then
|
||||
printf "Error while mounting /misc, trying to reformat..\n"
|
||||
|
||||
format_count=0
|
||||
while [ "$format_count" -lt "1" ]; do
|
||||
udpu_part_prep ${emmc_dev}p4
|
||||
mkfs.f2fs -q -l misc -O extra_attr,compression ${emmc_dev}p4
|
||||
if ! mount ${emmc_dev}p4 /misc; then
|
||||
umount -l /misc
|
||||
printf "Failed while mounting /misc\n"
|
||||
format_count=$((format_count +1))
|
||||
else
|
||||
printf "Mounted /misc successfully\n"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
udpu_do_initial_setup() {
|
||||
# Prepare /recovery parition
|
||||
udpu_part_prep ${emmc_dev}p2
|
||||
mkfs.ext4 -qF ${emmc_dev}p2 2>&1 /dev/null
|
||||
|
||||
# Prepare /boot partition
|
||||
udpu_part_prep ${emmc_dev}p1
|
||||
mkfs.ext4 -qF ${emmc_dev}p1 2>&1 /dev/null
|
||||
|
||||
# Prepare /root partition
|
||||
printf "Formating /root partition, this may take a while..\n"
|
||||
udpu_part_prep ${emmc_dev}p3
|
||||
mkfs.f2fs -q -l rootfs -O extra_attr,compression ${emmc_dev}p3 && printf "/root partition reformated\n"
|
||||
}
|
||||
|
||||
udpu_do_regular_upgrade() {
|
||||
# Clean /boot partition - mfks.ext4 is not available in chroot
|
||||
grep -woq /boot /proc/mounts && umount /boot
|
||||
mkdir -p /tmp/boot
|
||||
mount ${emmc_dev}p1 /tmp/boot
|
||||
rm -rf /tmp/boot/*
|
||||
|
||||
# Clean /root partition - mkfs.f2fs is not available in chroot
|
||||
grep -woq /dev/root /proc/mounts && umount /
|
||||
mkdir -p /tmp/rootpart
|
||||
mount ${emmc_dev}p3 /tmp/rootpart
|
||||
rm -rf /tmp/rootpart/*
|
||||
}
|
||||
|
||||
platform_do_upgrade_uDPU() {
|
||||
udpu_check_emmc
|
||||
|
||||
# Prepare and extract firmware on /misc partition
|
||||
udpu_do_misc_prep
|
||||
|
||||
[ -f "/misc/firmware" ] && rm -r /misc/firmware
|
||||
mkdir -p /misc/firmware
|
||||
tar xzf "$1" -C /misc/firmware/
|
||||
|
||||
udpu_do_regular_upgrade
|
||||
|
||||
printf "Updating /boot partition\n"
|
||||
if tar xzf /misc/firmware/boot.tgz -C /tmp/boot; then
|
||||
printf "/boot partition updated successfully\n"
|
||||
else
|
||||
printf "/boot partition update failed\n"
|
||||
fi
|
||||
sync
|
||||
|
||||
printf "Updating /root partition\n"
|
||||
if tar xzf /misc/firmware/rootfs.tgz -C /tmp/rootpart; then
|
||||
printf "/root partition updated successfully\n"
|
||||
else
|
||||
printf "/root partition update failed\n"
|
||||
fi
|
||||
sync
|
||||
|
||||
# Saving configuration files over sysupgrade
|
||||
platform_copy_config_uDPU
|
||||
|
||||
# Remove tmp mounts
|
||||
tmp_parts=$(grep "${emmc_dev}" /proc/mounts | awk '{print $2}')
|
||||
for part in ${tmp_parts}; do
|
||||
umount "$part"
|
||||
# Force umount is necessary
|
||||
grep -q "${part}" /proc/mounts && umount -l "$part"
|
||||
done
|
||||
|
||||
# Sysupgrade complains about /tmp and /dev, so we can detach them here
|
||||
umount -l /tmp
|
||||
umount -l /dev
|
||||
}
|
||||
|
||||
platform_copy_config_uDPU() {
|
||||
# Config is saved on the /misc partition and copied on the rootfs after the reboot
|
||||
if [ -f "$UPGRADE_BACKUP" ]; then
|
||||
cp -f "$UPGRADE_BACKUP" "/misc/$BACKUP_FILE"
|
||||
sync
|
||||
fi
|
||||
}
|
||||
Reference in New Issue
Block a user