update 2022-07-24 23:41:49
This commit is contained in:
parent
b4b1d60736
commit
de3e8952e2
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=aliyundrive-webdav
|
||||
PKG_VERSION:=1.8.5
|
||||
PKG_VERSION:=1.8.7
|
||||
PKG_RELEASE:=$(AUTORELEASE)
|
||||
|
||||
PKG_LICENSE:=MIT
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-aliyundrive-webdav
|
||||
PKG_VERSION:=1.8.5
|
||||
PKG_VERSION:=1.8.7
|
||||
PKG_RELEASE:=1
|
||||
PKG_PO_VERSION:=$(PKG_VERSION)-$(PKG_RELEASE)
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=luci-app-amlogic
|
||||
PKG_VERSION:=3.1.105
|
||||
PKG_VERSION:=3.1.108
|
||||
PKG_RELEASE:=1
|
||||
|
||||
PKG_LICENSE:=GPL-2.0 License
|
||||
|
|
|
@ -9,12 +9,17 @@ function index()
|
|||
page.dependent = true
|
||||
page.acl_depends = { "luci-app-amlogic" }
|
||||
|
||||
local platfrom = luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep PLATFORM | awk -F'=' '{print $2}' | grep -oE '(amlogic|rockchip|allwinner|qemu)'") or "Unknown"
|
||||
entry({ "admin", "system", "amlogic", "info" }, cbi("amlogic/amlogic_info"), _("Amlogic Service"), 1).leaf = true
|
||||
if (string.find(platfrom, "amlogic")) ~= nil then
|
||||
entry({ "admin", "system", "amlogic", "install" }, cbi("amlogic/amlogic_install"), _("Install OpenWrt"), 2).leaf = true
|
||||
end
|
||||
entry({ "admin", "system", "amlogic", "upload" }, cbi("amlogic/amlogic_upload"), _("Manually Upload Update"), 3).leaf = true
|
||||
entry({ "admin", "system", "amlogic", "check" }, cbi("amlogic/amlogic_check"), _("Online Download Update"), 4).leaf = true
|
||||
entry({ "admin", "system", "amlogic", "backup" }, cbi("amlogic/amlogic_backup"), _("Backup Firmware Config"), 5).leaf = true
|
||||
if (string.find(platfrom, "qemu")) == nil then
|
||||
entry({ "admin", "system", "amlogic", "armcpu" }, cbi("amlogic/amlogic_armcpu"), _("CPU Settings"), 6).leaf = true
|
||||
end
|
||||
entry({ "admin", "system", "amlogic", "config" }, cbi("amlogic/amlogic_config"), _("Plugin Settings"), 7).leaf = true
|
||||
entry({ "admin", "system", "amlogic", "log" }, cbi("amlogic/amlogic_log"), _("Server Logs"), 8).leaf = true
|
||||
entry({ "admin", "system", "amlogic", "poweroff" }, cbi("amlogic/amlogic_poweroff"), _("PowerOff"), 9).leaf = true
|
||||
|
@ -76,15 +81,19 @@ else
|
|||
end
|
||||
|
||||
--Device identification
|
||||
device_platfrom = trim(luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep PLATFORM | awk -F'=' '{print $2}' | grep -oE '(amlogic|rockchip|allwinner)'")) or "Unknown PLATFORM"
|
||||
if (device_platfrom == "rockchip") then
|
||||
device_platfrom = trim(luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep PLATFORM | awk -F'=' '{print $2}' | grep -oE '(amlogic|rockchip|allwinner|qemu)'")) or "Unknown"
|
||||
if (string.find(device_platfrom, "rockchip")) ~= nil then
|
||||
device_install_script = ""
|
||||
device_update_script = "openwrt-update-rockchip"
|
||||
device_kernel_script = "openwrt-kernel"
|
||||
elseif (device_platfrom == "allwinner") then
|
||||
elseif (string.find(device_platfrom, "allwinner")) ~= nil then
|
||||
device_install_script = ""
|
||||
device_update_script = "openwrt-update-allwinner"
|
||||
device_kernel_script = "openwrt-kernel"
|
||||
elseif (string.find(device_platfrom, "qemu")) ~= nil then
|
||||
device_install_script = ""
|
||||
device_update_script = "openwrt-update-kvm"
|
||||
device_kernel_script = "openwrt-kernel-kvm"
|
||||
else
|
||||
device_install_script = "openwrt-install-amlogic"
|
||||
device_update_script = "openwrt-update-amlogic"
|
||||
|
|
|
@ -24,9 +24,8 @@ o.anonymouse = true
|
|||
--1.Set OpenWrt Firmware Repository
|
||||
mydevice = o:option(DummyValue, "mydevice", translate("Current Device:"))
|
||||
mydevice.description = translate("If the current device shows (Unknown device), please report to github.")
|
||||
mydevice_platfrom = trim(luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep PLATFORM | awk -F'=' '{print $2}' | grep -oE '(amlogic|rockchip|allwinner)'")) or "Unknown PLATFORM"
|
||||
mydevice_name = trim(luci.sys.exec("cat /proc/device-tree/model | tr -d \'\\000\'")) or "Unknown device"
|
||||
mydevice.default = mydevice_name .. " (" .. mydevice_platfrom .. ")"
|
||||
mydevice_platfrom = trim(luci.sys.exec("cat /etc/flippy-openwrt-release 2>/dev/null | grep PLATFORM | awk -F'=' '{print $2}' | grep -oE '(amlogic|rockchip|allwinner|qemu)'")) or "Unknown"
|
||||
mydevice.default = "PLATFORM: " .. mydevice_platfrom
|
||||
mydevice.rmempty = false
|
||||
|
||||
--2.Set OpenWrt Firmware Repository
|
||||
|
|
|
@ -26,7 +26,8 @@
|
|||
<%:Amlogic s905d --- [ Phicomm-N1 ]%><br>
|
||||
<%:Amlogic Other --- [ Optional DTB ]%><br>
|
||||
<%:Allwinner H6 ---- [ V-Plus Cloud ]%><br>
|
||||
<%:Rockchip 3328 --- [ BeikeYun, Chainedbox L1 Pro ]%>
|
||||
<%:Rockchip 3328 --- [ BeikeYun, Chainedbox L1 Pro ]%><br>
|
||||
<%:Used in KVM ----- [ Can be used in KVM virtual machine of Armbian system. ]%>
|
||||
</td></tr>
|
||||
</table>
|
||||
</fieldset>
|
||||
|
|
|
@ -281,6 +281,9 @@ msgstr "全志 H6 ------ [ 微加云 ]"
|
|||
msgid "Rockchip 3328 --- [ BeikeYun, Chainedbox L1 Pro ]"
|
||||
msgstr "瑞芯微 3328 -- [ 贝壳云、我家云 ]"
|
||||
|
||||
msgid "Used in KVM ----- [ Can be used in KVM virtual machine of Armbian system. ]"
|
||||
msgstr "KVM 中使用 --- [ 可以在 Armbia 系统的 KVM 虚拟机中使用。 ]"
|
||||
|
||||
msgid "Install Ipk"
|
||||
msgstr "安装Ipk"
|
||||
|
||||
|
|
|
@ -0,0 +1,133 @@
|
|||
#!/bin/bash
|
||||
#====================================================================================
|
||||
#
|
||||
# Function: Update OpenWrt kernel running in KVM (Amlogic s9xxx, Allwinner, Rockchip)
|
||||
# Copyright (C) 2020-- https://github.com/unifreq/openwrt_packit
|
||||
# Copyright (C) 2021-- https://github.com/ophub/luci-app-amlogic
|
||||
#
|
||||
# Kernel files: boot-*.tar.gz, modules-*.tar.gz
|
||||
# Command: openwrt-kernel-kvm
|
||||
#
|
||||
#================================== Functions list ==================================
|
||||
#
|
||||
# error_msg : Output error message
|
||||
# init_var : Initialize all variables
|
||||
# check_kernel : Check kernel files list
|
||||
# update_kernel : Update the kernel
|
||||
#
|
||||
#============================== Set default parameters ==============================
|
||||
#
|
||||
# Set kernel directory
|
||||
kernel_path="/mnt/vda4"
|
||||
#
|
||||
#====================================================================================
|
||||
|
||||
# Encountered a serious error, abort the script execution
|
||||
error_msg() {
|
||||
echo -e "[Error] ${1}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
init_var() {
|
||||
# Check dependencies
|
||||
[[ -n "$(which tar)" ]] || error_msg "Missing [ tar ] in OpenWrt firmware, unable to update kernel"
|
||||
|
||||
# Find the partition where root is located
|
||||
ROOT_PTNAME="$(df / | tail -n1 | awk '{print $1}' | awk -F '/' '{print $3}')"
|
||||
[[ "${ROOT_PTNAME}" == "vda"* ]] || error_msg "Cannot find the partition corresponding to the root file system!"
|
||||
|
||||
# Move kernel related files to the ${kernel_path} directory
|
||||
mv -f /tmp/upload/* ${kernel_path} 2>/dev/null && sync
|
||||
|
||||
sync && echo ""
|
||||
}
|
||||
|
||||
# Check kernel files list
|
||||
check_kernel() {
|
||||
cd ${kernel_path}
|
||||
|
||||
# Determine custom kernel filename
|
||||
kernel_boot="$(ls boot-*.tar.gz | head -n 1)"
|
||||
kernel_name="${kernel_boot/boot-/}" && kernel_name="${kernel_name/.tar.gz/}"
|
||||
KERNEL_VERSION="$(echo ${kernel_name} | grep -oE '^[1-9].[0-9]{1,3}.[0-9]+')"
|
||||
echo -e "Kernel name: ${kernel_name}"
|
||||
|
||||
# Check the sha256sums file
|
||||
sha256sums_file="sha256sums"
|
||||
sha256sums_check="1"
|
||||
[[ -s "${sha256sums_file}" && -n "$(cat ${sha256sums_file})" ]] || sha256sums_check="0"
|
||||
[[ -n "$(which sha256sum)" ]] || sha256sums_check="0"
|
||||
[[ "${sha256sums_check}" -eq "1" ]] && echo -e "Enable sha256sum checking..."
|
||||
|
||||
# Loop check file
|
||||
i="1"
|
||||
kernel_list=("boot" "modules")
|
||||
for kernel_file in ${kernel_list[*]}; do
|
||||
# Set check filename
|
||||
tmp_file="${kernel_file}-${kernel_name}.tar.gz"
|
||||
# Check if file exists
|
||||
[[ -s "${tmp_file}" ]] || error_msg "The [ ${kernel_file} ] file is missing."
|
||||
# Check if the file sha256sum is correct
|
||||
if [[ "${sha256sums_check}" -eq "1" ]]; then
|
||||
tmp_sha256sum="$(sha256sum "${tmp_file}" | awk '{print $1}')"
|
||||
tmp_checkcode="$(cat ${sha256sums_file} | grep ${tmp_file} | awk '{print $1}')"
|
||||
[[ "${tmp_sha256sum}" == "${tmp_checkcode}" ]] || error_msg "${tmp_file}: sha256sum verification failed."
|
||||
echo -e "(${i}/2) [ ${tmp_file} ] file sha256sum check same."
|
||||
fi
|
||||
let i++
|
||||
done
|
||||
|
||||
sync && echo ""
|
||||
}
|
||||
|
||||
# Update the kernel
|
||||
update_kernel() {
|
||||
echo -e "Start unpacking the kernel..."
|
||||
|
||||
# 01. for /boot five files
|
||||
rm -f /boot/config-* /boot/System.map-* /boot/initrd.img* /boot/vmlinuz* /boot/uInitrd* 2>/dev/null && sync
|
||||
#
|
||||
tar -xf ${kernel_path}/boot-${kernel_name}.tar.gz -C /boot && sync
|
||||
[[ "$(ls /boot/*${kernel_name}* -l 2>/dev/null | grep "^-" | wc -l)" -ge "4" ]] || error_msg "The /boot files is missing."
|
||||
(cd /boot && ln -sf initrd.img-${kernel_name} initrd.img && ln -s vmlinuz-${kernel_name} vmlinuz && rm -f uInitrd* && sync)
|
||||
echo -e "(1/2) Unpacking [ boot-${kernel_name}.tar.gz ] done."
|
||||
|
||||
# 02. for /lib/modules/*
|
||||
rm -rf /lib/modules/* 2>/dev/null && sync
|
||||
tar -xf ${kernel_path}/modules-${kernel_name}.tar.gz -C /lib/modules && sync
|
||||
(
|
||||
cd /lib/modules/${kernel_name}
|
||||
rm -f *.ko 2>/dev/null
|
||||
find ./ -type f -name '*.ko' -exec ln -s {} ./ \;
|
||||
sync && sleep 3
|
||||
x="$(ls *.ko -l 2>/dev/null | grep "^l" | wc -l)"
|
||||
[[ "${x}" -eq "0" ]] && error_msg "The *.ko files not found."
|
||||
)
|
||||
echo -e "(2/2) Unpacking [ modules-${kernel_name}.tar.gz ] done."
|
||||
|
||||
# Delete kernel tmpfiles
|
||||
rm -f ${kernel_path}/*.tar.gz ${kernel_path}/sha256sums 2>/dev/null
|
||||
|
||||
# Update release file
|
||||
sed -i '/KERNEL_VERSION/d' /etc/flippy-openwrt-release 2>/dev/null
|
||||
echo "KERNEL_VERSION='${kernel_name}'" >>/etc/flippy-openwrt-release 2>/dev/null
|
||||
# Update banner file
|
||||
sed -i "s/ Kernel.*/ Kernel: ${kernel_name}/g" /etc/banner 2>/dev/null
|
||||
|
||||
sync && echo ""
|
||||
}
|
||||
|
||||
echo -e "Start updating OpenWrt kernel in kvm virtual machine..."
|
||||
# Operation environment check
|
||||
[[ -x "/usr/sbin/openwrt-kernel-kvm" ]] || error_msg "Please give execute permission: chmod +x /usr/sbin/openwrt-kernel-kvm"
|
||||
#
|
||||
# Initialize all variables
|
||||
init_var "${@}"
|
||||
# Check kernel files list
|
||||
check_kernel
|
||||
# Update the kernel
|
||||
update_kernel
|
||||
#
|
||||
sync && sleep 3
|
||||
echo "Successfully updated, automatic restarting..."
|
||||
reboot
|
|
@ -0,0 +1,619 @@
|
|||
#!/bin/bash
|
||||
#======================================================================================
|
||||
# Function: Update the QEMU AARCH64 KVM vitual machine openwrt firmware
|
||||
# Copyright (C) 2022-- https://github.com/unifreq/openwrt_packit
|
||||
# Copyright (C) 2022-- https://github.com/ophub
|
||||
#======================================================================================
|
||||
|
||||
# The script supports directly setting parameters for update, skipping interactive selection
|
||||
# openwrt-update-amlogic ${OPENWRT_FILE} ${AUTO_MAINLINE_UBOOT} ${RESTORE_CONFIG} ${WORK_DIR}
|
||||
# E.g: openwrt-update-kvm openwrt_qemu-aarch64.img.gz no restore /mnt/vda4
|
||||
# E.g: openwrt-update-kvm openwrt_qemu-aarch64.img.gz no no-restore /mnt/data
|
||||
|
||||
# You can also execute the script directly, and interactively select related functions
|
||||
# E.g: openwrt-update-kvm
|
||||
|
||||
# Receive one-key command related parameters
|
||||
IMG_NAME="${1}"
|
||||
AUTO_MAINLINE_UBOOT="${2}"
|
||||
BACKUP_RESTORE_CONFIG="${3}"
|
||||
WORK_DIR="${4}"
|
||||
|
||||
# Check the necessary dependencies
|
||||
DEPENDS="lsblk uuidgen grep awk btrfs mkfs.fat mkfs.btrfs perl md5sum fatlabel jq"
|
||||
echo "Check the necessary dependencies..."
|
||||
for dep in ${DEPENDS}; do
|
||||
WITCH=$(which ${dep})
|
||||
if [ "${WITCH}" == "" ]; then
|
||||
echo "Dependent command: ${dep} does not exist, upgrade cannot be performed!"
|
||||
exit 1
|
||||
else
|
||||
echo "${dep} path: ${WITCH}"
|
||||
fi
|
||||
done
|
||||
echo "Check passed"
|
||||
|
||||
# Current device model
|
||||
source /etc/flippy-openwrt-release
|
||||
if [[ -z "${PLATFORM}" ]]; then
|
||||
echo "The platform is empty."
|
||||
exit 1
|
||||
elif [[ "${PLATFORM}" != "qemu-aarch64" ]]; then
|
||||
echo "The platform is missing, only support qemu-aarch64."
|
||||
exit 1
|
||||
else
|
||||
echo -e "Current platform: [ ${PLATFORM} ]"
|
||||
sleep 3
|
||||
fi
|
||||
|
||||
# Find the partition where root is located
|
||||
# vda2 or vda3
|
||||
ROOT_PTNAME=$(df / | tail -n1 | awk '{print $1}' | awk -F '/' '{print $3}')
|
||||
if [ "${ROOT_PTNAME}" == "" ]; then
|
||||
echo "Cannot find the partition corresponding to the root file system!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find the disk where the partition is located, only supports sd?? hd?? vd??
|
||||
case ${ROOT_PTNAME} in
|
||||
[hsv]d[a-z][1-4])
|
||||
DISK_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}')
|
||||
PART_PRESTR=""
|
||||
LABEL_PRESTR=""
|
||||
;;
|
||||
*)
|
||||
echo "Unable to recognize the disk type of ${ROOT_PTNAME}!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
function get_docker_root {
|
||||
local data_root
|
||||
if [[ -f /etc/config/dockerd ]];then
|
||||
data_root=$(uci get dockerd.globals.data_root)
|
||||
fi
|
||||
if [[ -z "${data_root}" ]] && [[ -f /etc/docker/daemon.json ]]; then
|
||||
data_root=$(jq -r '."data-root"' /etc/docker/daemon.json)
|
||||
fi
|
||||
echo "$data_root"
|
||||
}
|
||||
DOCKER_ROOT=$(get_docker_root)
|
||||
|
||||
if [[ -z "${WORK_DIR}" ]];then
|
||||
WORK_DIR="/mnt/${DISK_NAME}${PART_PRESTR}4/"
|
||||
fi
|
||||
if [[ ! -d "${WORK_DIR}" ]];then
|
||||
echo "the work directory is not exists. [ ${WORK_DIR} ]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd "${WORK_DIR}"
|
||||
if [[ -d "/tmp/upload" ]] && [[ -f "/tmp/upload/*img*" ]];then
|
||||
mv -f /tmp/upload/*img* .
|
||||
if [[ $? -ne 0 ]];then
|
||||
echo "move file failed."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
sync
|
||||
|
||||
if [[ "${IMG_NAME}" == *.img ]]; then
|
||||
echo -e "Update using [ ${IMG_NAME} ] file. Please wait a moment ..."
|
||||
elif [ $(ls *.img -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then
|
||||
IMG_NAME=$(ls *.img | head -n 1)
|
||||
echo -e "Update using [ ${IMG_NAME} ] ] file. Please wait a moment ..."
|
||||
elif [ $(ls *.img.xz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then
|
||||
xz_file=$(ls *.img.xz | head -n 1)
|
||||
echo -e "Update using [ ${xz_file} ] file. Please wait a moment ..."
|
||||
xz -d ${xz_file} 2>/dev/null
|
||||
IMG_NAME=$(ls *.img | head -n 1)
|
||||
elif [ $(ls *.img.gz -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then
|
||||
gz_file=$(ls *.img.gz | head -n 1)
|
||||
echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..."
|
||||
gzip -df ${gz_file} 2>/dev/null
|
||||
IMG_NAME=$(ls *.img | head -n 1)
|
||||
elif [ $(ls *.7z -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then
|
||||
gz_file=$(ls *.7z | head -n 1)
|
||||
echo -e "Update using [ ${gz_file} ] file. Please wait a moment ..."
|
||||
bsdtar -xmf ${gz_file} 2>/dev/null
|
||||
[ $? -eq 0 ] || 7z x ${gz_file} -aoa -y 2>/dev/null
|
||||
IMG_NAME=$(ls *.img | head -n 1)
|
||||
elif [ $(ls *.zip -l 2>/dev/null | grep "^-" | wc -l) -ge 1 ]; then
|
||||
zip_file=$(ls *.zip | head -n 1)
|
||||
echo -e "Update using [ ${zip_file} ] file. Please wait a moment ..."
|
||||
unzip -o ${zip_file} 2>/dev/null
|
||||
IMG_NAME=$(ls *.img | head -n 1)
|
||||
else
|
||||
echo -e "Please upload or specify the update openwrt firmware file."
|
||||
#echo -e "Upload method: system menu → Amlogic Service → Manually Upload Update"
|
||||
echo -e "Specify method: Place the openwrt firmware file in [ ${WORK_DIR} ]"
|
||||
echo -e "The supported file suffixes are: *.img, *.img.xz, *.img.gz, *.7z, *.zip"
|
||||
echo -e "After upload the openwrt firmware file, run again."
|
||||
exit 1
|
||||
fi
|
||||
sync
|
||||
|
||||
# check file
|
||||
if [ ! -f "${IMG_NAME}" ]; then
|
||||
echo "No update file found."
|
||||
exit 1
|
||||
else
|
||||
echo "Start update from [ ${IMG_NAME} ]"
|
||||
fi
|
||||
|
||||
# find efi partition
|
||||
EFI_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ /^\/boot\/efi$/ {print $0}')
|
||||
if [ "${EFI_PART_MSG}" == "" ]; then
|
||||
echo "The EFI partition does not exist, so the update cannot be continued!"
|
||||
exit 1
|
||||
fi
|
||||
EFI_NAME=$(echo $EFI_PART_MSG | awk '{print $1}')
|
||||
EFI_DEV=$(echo $EFI_PART_MSG | awk '{print $2}')
|
||||
EFI_UUID=$(echo $EFI_PART_MSG | awk '{print $4}')
|
||||
|
||||
BR_FLAG=1
|
||||
if [[ ${BACKUP_RESTORE_CONFIG} == "restore" ]]; then
|
||||
BR_FLAG=1
|
||||
elif [[ ${BACKUP_RESTORE_CONFIG} == "no-restore" ]]; then
|
||||
BR_FLAG=0
|
||||
else
|
||||
echo -ne "Whether to backup and restore the current config files? y/n [y]\b\b"
|
||||
read yn
|
||||
case $yn in
|
||||
n* | N*) BR_FLAG=0;;
|
||||
esac
|
||||
fi
|
||||
|
||||
# find root partition
|
||||
ROOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ /^\/$/ {print $0}')
|
||||
ROOT_NAME=$(echo $ROOT_PART_MSG | awk '{print $1}')
|
||||
ROOT_DEV=$(echo $ROOT_PART_MSG | awk '{print $2}')
|
||||
ROOT_UUID=$(echo $ROOT_PART_MSG | awk '{print $4}')
|
||||
|
||||
case $ROOT_NAME in
|
||||
${DISK_NAME}${PART_PRESTR}2)
|
||||
NEW_ROOT_NAME="${DISK_NAME}${PART_PRESTR}3"
|
||||
NEW_ROOT_LABEL="${LABEL_PRESTR}ROOTFS2"
|
||||
;;
|
||||
${DISK_NAME}${PART_PRESTR}3)
|
||||
NEW_ROOT_NAME="${DISK_NAME}${PART_PRESTR}2"
|
||||
NEW_ROOT_LABEL="${LABEL_PRESTR}ROOTFS1"
|
||||
;;
|
||||
*)
|
||||
echo "ROOTFS The partition location is incorrect, so the update cannot continue!"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
echo "NEW_ROOT_NAME: [ ${NEW_ROOT_NAME} ]"
|
||||
|
||||
# find new root partition
|
||||
NEW_ROOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | grep "${NEW_ROOT_NAME}" | awk '$3 ~ /^part$/ && $5 !~ /^\/$/ && $5 !~ /^\/boot$/ {print $0}')
|
||||
if [ "${NEW_ROOT_PART_MSG}" == "" ]; then
|
||||
echo "The new ROOTFS partition does not exist, so the update cannot continue!"
|
||||
exit 1
|
||||
fi
|
||||
NEW_ROOT_NAME=$(echo $NEW_ROOT_PART_MSG | awk '{print $1}')
|
||||
NEW_ROOT_DEV=$(echo $NEW_ROOT_PART_MSG | awk '{print $2}')
|
||||
NEW_ROOT_UUID=$(echo $NEW_ROOT_PART_MSG | awk '{print $4}')
|
||||
NEW_ROOT_MOUNTPOINT=$(echo $NEW_ROOT_PART_MSG | awk '{print $5}')
|
||||
echo "NEW_ROOT_MOUNTPOINT: [ ${NEW_ROOT_MOUNTPOINT} ]"
|
||||
|
||||
# losetup
|
||||
losetup -f -P $IMG_NAME
|
||||
if [ $? -eq 0 ]; then
|
||||
LOOP_DEV=$(losetup | grep "$IMG_NAME" | awk '{print $1}')
|
||||
if [ "$LOOP_DEV" == "" ]; then
|
||||
echo "loop device not found!"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "losetup [ $IMG_FILE ] failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
WAIT=3
|
||||
echo "The loopdev is [ $LOOP_DEV ], wait [ ${WAIT} ] seconds. "
|
||||
while [ $WAIT -ge 1 ]; do
|
||||
sleep 1
|
||||
WAIT=$((WAIT - 1))
|
||||
done
|
||||
|
||||
# umount loop devices (openwrt will auto mount some partition)
|
||||
MOUNTED_DEVS=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "$LOOP_DEV" | awk '$3 !~ /^$/ {print $2}')
|
||||
for dev in $MOUNTED_DEVS; do
|
||||
while :; do
|
||||
echo "umount [ $dev ] ... "
|
||||
umount -f $dev
|
||||
sleep 1
|
||||
mnt=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "$dev" | awk '$3 !~ /^$/ {print $2}')
|
||||
if [ "$mnt" == "" ]; then
|
||||
break
|
||||
else
|
||||
echo "Retry ..."
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
# mount src part
|
||||
P1=${WORK_DIR}/efi
|
||||
P2=${WORK_DIR}/root
|
||||
mkdir -p $P1 $P2
|
||||
|
||||
echo "Mount [ ${LOOP_DEV}p1 ] -> [ ${P1} ] ... "
|
||||
mount -t vfat -o ro ${LOOP_DEV}p1 ${P1}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Mount p1 [ ${LOOP_DEV}p1 ] failed!"
|
||||
losetup -D
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Mount [ ${LOOP_DEV}p2 ] -> [ ${P2} ] ... "
|
||||
ZSTD_LEVEL="6"
|
||||
mount -t btrfs -o ro,compress=zstd:${ZSTD_LEVEL} ${LOOP_DEV}p2 ${P2}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Mount p2 [ ${LOOP_DEV}p2 ] failed!"
|
||||
umount -f ${P1}
|
||||
losetup -D
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Prepare the dockerman config file
|
||||
if [ -f ${P2}/etc/init.d/dockerman ] && [ -f ${P2}/etc/config/dockerd ]; then
|
||||
|
||||
flg=0
|
||||
# get current docker data root
|
||||
data_root=$(uci get dockerd.globals.data_root 2>/dev/null)
|
||||
if [ "$data_root" == "" ]; then
|
||||
flg=1
|
||||
# get current config from /etc/docker/daemon.json
|
||||
if [ -f "/etc/docker/daemon.json" ] && [ -x "/usr/bin/jq" ]; then
|
||||
data_root=$(jq -r '."data-root"' /etc/docker/daemon.json)
|
||||
|
||||
bip=$(jq -r '."bip"' /etc/docker/daemon.json)
|
||||
[ "$bip" == "null" ] && bip="172.31.0.1/24"
|
||||
|
||||
log_level=$(jq -r '."log-level"' /etc/docker/daemon.json)
|
||||
[ "$log_level" == "null" ] && log_level="warn"
|
||||
|
||||
_iptables=$(jq -r '."iptables"' /etc/docker/daemon.json)
|
||||
[ "$_iptables" == "null" ] && _iptables="true"
|
||||
|
||||
registry_mirrors=$(jq -r '."registry-mirrors"[]' /etc/docker/daemon.json 2>/dev/null)
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$data_root" == "" ]; then
|
||||
data_root="/opt/docker/" # the default data root
|
||||
fi
|
||||
|
||||
if ! uci get dockerd.globals >/dev/null 2>&1; then
|
||||
uci set dockerd.globals='globals'
|
||||
uci commit
|
||||
fi
|
||||
|
||||
# delete alter config , use inner config
|
||||
if uci get dockerd.globals.alt_config_file >/dev/null 2>&1; then
|
||||
uci delete dockerd.globals.alt_config_file
|
||||
uci commit
|
||||
fi
|
||||
|
||||
if [ $flg -eq 1 ]; then
|
||||
uci set dockerd.globals.data_root=$data_root
|
||||
[ "$bip" != "" ] && uci set dockerd.globals.bip=$bip
|
||||
[ "$log_level" != "" ] && uci set dockerd.globals.log_level=$log_level
|
||||
[ "$_iptables" != "" ] && uci set dockerd.globals.iptables=$_iptables
|
||||
if [ "$registry_mirrors" != "" ]; then
|
||||
for reg in $registry_mirrors; do
|
||||
uci add_list dockerd.globals.registry_mirrors=$reg
|
||||
done
|
||||
fi
|
||||
uci set dockerd.globals.auto_start='1'
|
||||
uci commit
|
||||
fi
|
||||
fi
|
||||
|
||||
#format NEW_ROOT
|
||||
echo "umount [ ${NEW_ROOT_MOUNTPOINT} ]"
|
||||
umount -f "${NEW_ROOT_MOUNTPOINT}"
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Umount [ ${NEW_ROOT_MOUNTPOINT} ] failed, Please restart and try again!"
|
||||
umount -f ${P1}
|
||||
umount -f ${P2}
|
||||
losetup -D
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Format [ ${NEW_ROOT_DEV} ]"
|
||||
NEW_ROOT_UUID=$(uuidgen)
|
||||
mkfs.btrfs -f -U ${NEW_ROOT_UUID} -L ${NEW_ROOT_LABEL} ${NEW_ROOT_DEV}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Format [ ${NEW_ROOT_DEV} ] failed!"
|
||||
umount -f ${P1}
|
||||
umount -f ${P2}
|
||||
losetup -D
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Mount [ ${NEW_ROOT_DEV} ] -> [ ${NEW_ROOT_MOUNTPOINT} ]"
|
||||
mount -t btrfs -o compress=zstd:${ZSTD_LEVEL} ${NEW_ROOT_DEV} ${NEW_ROOT_MOUNTPOINT}
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Mount [ ${NEW_ROOT_DEV} ] -> [ ${NEW_ROOT_MOUNTPOINT} ] failed!"
|
||||
umount -f ${P1}
|
||||
umount -f ${P2}
|
||||
losetup -D
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# begin copy rootfs
|
||||
cd ${NEW_ROOT_MOUNTPOINT}
|
||||
echo "Start copying data, From [ ${P2} ] TO [ ${NEW_ROOT_MOUNTPOINT} ] ..."
|
||||
ENTRYS=$(ls)
|
||||
for entry in $ENTRYS; do
|
||||
if [ "$entry" == "lost+found" ]; then
|
||||
continue
|
||||
fi
|
||||
echo "Remove old [ $entry ] ... "
|
||||
rm -rf $entry
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "failed."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Create folder ... "
|
||||
btrfs subvolume create etc
|
||||
mkdir -p .snapshots .reserved bin boot dev lib opt mnt overlay proc rom root run sbin sys tmp usr www
|
||||
ln -sf lib/ lib64
|
||||
ln -sf tmp/ var
|
||||
sync
|
||||
|
||||
COPY_SRC="boot root etc bin sbin lib opt usr www"
|
||||
echo "Copy data begin ... "
|
||||
for src in $COPY_SRC; do
|
||||
echo "Copy [ $src ] ... "
|
||||
(cd ${P2} && tar cf - $src) | tar xf -
|
||||
sync
|
||||
done
|
||||
|
||||
# if not backup, then force rewrite the etc/docker/daemon.json
|
||||
if [ "${BR_FLAG}" -eq 0 ]; then
|
||||
cat >./etc/docker/daemon.json <<EOF
|
||||
{
|
||||
"bip": "172.31.0.1/24",
|
||||
"data-root": "${DOCKER_ROOT}",
|
||||
"log-level": "warn",
|
||||
"log-driver": "json-file",
|
||||
"log-opts": {
|
||||
"max-size": "10m",
|
||||
"max-file": "5"
|
||||
},
|
||||
"registry-mirrors": [
|
||||
"https://mirror.baidubce.com/",
|
||||
"https://hub-mirror.c.163.com"
|
||||
]
|
||||
}
|
||||
EOF
|
||||
fi
|
||||
|
||||
cat >./etc/fstab <<EOF
|
||||
UUID=${NEW_ROOT_UUID} / btrfs compress=zstd:${ZSTD_LEVEL} 0 1
|
||||
LABEL=EFI /boot/efi vfat defaults 0 2
|
||||
#tmpfs /tmp tmpfs defaults,nosuid 0 0
|
||||
EOF
|
||||
|
||||
cat >./etc/config/fstab <<EOF
|
||||
config global
|
||||
option anon_swap '0'
|
||||
option anon_mount '1'
|
||||
option auto_swap '0'
|
||||
option auto_mount '1'
|
||||
option delay_root '5'
|
||||
option check_fs '0'
|
||||
|
||||
config mount
|
||||
option target '/overlay'
|
||||
option uuid '${NEW_ROOT_UUID}'
|
||||
option enabled '1'
|
||||
option enabled_fsck '1'
|
||||
option fstype 'btrfs'
|
||||
option options 'compress=zstd:${ZSTD_LEVEL}'
|
||||
|
||||
config mount
|
||||
option target '/boot/efi'
|
||||
option label 'EFI'
|
||||
option enabled '1'
|
||||
option enabled_fsck '1'
|
||||
option fstype 'vfat'
|
||||
|
||||
EOF
|
||||
(
|
||||
cd etc/rc.d
|
||||
rm -f S??shortcut-fe
|
||||
if grep "sfe_flow '1'" ../config/turboacc >/dev/null; then
|
||||
if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then
|
||||
ln -sf ../init.d/shortcut-fe S99shortcut-fe
|
||||
fi
|
||||
fi
|
||||
)
|
||||
|
||||
# move /etc/config/balance_irq to /etc/balance_irq
|
||||
[ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/
|
||||
sync
|
||||
|
||||
echo "Create initial etc snapshot -> .snapshots/etc-000"
|
||||
btrfs subvolume snapshot -r etc .snapshots/etc-000
|
||||
sync
|
||||
|
||||
[ -d /mnt/${DISK_NAME}${PART_PRESTR}4/docker ] || mkdir -p /mnt/${DISK_NAME}${PART_PRESTR}4/docker
|
||||
rm -rf opt/docker && ln -sf /mnt/${DISK_NAME}${PART_PRESTR}4/docker/ opt/docker
|
||||
|
||||
if [ -f /mnt/${NEW_ROOT_NAME}/etc/config/AdGuardHome ]; then
|
||||
[ -d /mnt/${DISK_NAME}${PART_PRESTR}4/AdGuardHome/data ] || mkdir -p /mnt/${DISK_NAME}${PART_PRESTR}4/AdGuardHome/data
|
||||
if [ ! -L /usr/bin/AdGuardHome ]; then
|
||||
[ -d /usr/bin/AdGuardHome ] &&
|
||||
cp -a /usr/bin/AdGuardHome/* /mnt/${DISK_NAME}${PART_PRESTR}4/AdGuardHome/
|
||||
fi
|
||||
ln -sf /mnt/${DISK_NAME}${PART_PRESTR}4/AdGuardHome /mnt/${NEW_ROOT_NAME}/usr/bin/AdGuardHome
|
||||
fi
|
||||
sync
|
||||
echo "Copy data complete ..."
|
||||
|
||||
BACKUP_LIST=$(${P2}/usr/sbin/openwrt-backup -p)
|
||||
if [[ "${BR_FLAG}" -eq "1" && -n "${BACKUP_LIST}" ]]; then
|
||||
echo -n "Start restoring configuration files ... "
|
||||
(
|
||||
cd /
|
||||
eval tar czf ${NEW_ROOT_MOUNTPOINT}/.reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null
|
||||
)
|
||||
tar xzf ${NEW_ROOT_MOUNTPOINT}/.reserved/openwrt_config.tar.gz
|
||||
|
||||
[ -f ./etc/config/dockerman ] && sed -e "s/option wan_mode 'false'/option wan_mode 'true'/" -i ./etc/config/dockerman 2>/dev/null
|
||||
[ -f ./etc/config/dockerd ] && sed -e "s/option wan_mode '0'/option wan_mode '1'/" -i ./etc/config/dockerd 2>/dev/null
|
||||
[ -f ./etc/config/verysync ] && sed -e 's/config setting/config verysync/' -i ./etc/config/verysync 2>/dev/null
|
||||
|
||||
# Restore fstab
|
||||
cp -f .snapshots/etc-000/fstab ./etc/fstab
|
||||
cp -f .snapshots/etc-000/config/fstab ./etc/config/fstab
|
||||
# 还原 luci
|
||||
cp -f .snapshots/etc-000/config/luci ./etc/config/luci
|
||||
# 还原/etc/config/rpcd
|
||||
cp -f .snapshots/etc-000/config/rpcd ./etc/config/rpcd
|
||||
|
||||
sync
|
||||
echo "Restore configuration information complete."
|
||||
fi
|
||||
|
||||
echo "Modify the configuration file ... "
|
||||
rm -f "./etc/rc.local.orig" "./etc/first_run.sh" "./etc/part_size"
|
||||
rm -rf "./opt/docker" && ln -sf "/mnt/${DISK_NAME}${PART_PRESTR}4/docker" "./opt/docker"
|
||||
rm -f ./etc/bench.log
|
||||
cat >>./etc/crontabs/root <<EOF
|
||||
37 5 * * * /etc/coremark.sh
|
||||
EOF
|
||||
|
||||
sss=$(date +%s)
|
||||
ddd=$((sss / 86400))
|
||||
sed -e "s/:0:0:99999:7:::/:${ddd}:0:99999:7:::/" -i ./etc/shadow
|
||||
# Fix the problem of repeatedly adding amule entries after each upgrade
|
||||
sed -e "/amule:x:/d" -i ./etc/shadow
|
||||
# Fix the problem of repeatedly adding sshd entries after each upgrade of dropbear
|
||||
sed -e "/sshd:x:/d" -i ./etc/shadow
|
||||
if ! grep "sshd:x:22:sshd" ./etc/group >/dev/null; then
|
||||
echo "sshd:x:22:sshd" >>./etc/group
|
||||
fi
|
||||
if ! grep "sshd:x:22:22:sshd:" ./etc/passwd >/dev/null; then
|
||||
echo "sshd:x:22:22:sshd:/var/run/sshd:/bin/false" >>./etc/passwd
|
||||
fi
|
||||
if ! grep "sshd:x:" ./etc/shadow >/dev/null; then
|
||||
echo "sshd:x:${ddd}:0:99999:7:::" >>./etc/shadow
|
||||
fi
|
||||
|
||||
if [ "${BR_FLAG}" -eq "1" ]; then
|
||||
if [ -x ./bin/bash ] && [ -f ./etc/profile.d/30-sysinfo.sh ]; then
|
||||
sed -e 's/\/bin\/ash/\/bin\/bash/' -i ./etc/passwd
|
||||
fi
|
||||
sync
|
||||
fi
|
||||
sed -e "s/option hw_flow '1'/option hw_flow '0'/" -i ./etc/config/turboacc
|
||||
(
|
||||
cd etc/rc.d
|
||||
rm -f S??shortcut-fe
|
||||
if grep "sfe_flow '1'" ../config/turboacc >/dev/null; then
|
||||
if find ../../lib/modules -name 'shortcut-fe-cm.ko'; then
|
||||
ln -sf ../init.d/shortcut-fe S99shortcut-fe
|
||||
fi
|
||||
fi
|
||||
)
|
||||
eval tar czf .reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null
|
||||
|
||||
rm -f ./etc/part_size ./etc/first_run.sh
|
||||
if [ -x ./usr/sbin/balethirq.pl ]; then
|
||||
if grep "balethirq.pl" "./etc/rc.local"; then
|
||||
echo "balance irq is enabled"
|
||||
else
|
||||
echo "enable balance irq"
|
||||
sed -e "/exit/i\/usr/sbin/balethirq.pl" -i ./etc/rc.local
|
||||
fi
|
||||
fi
|
||||
|
||||
mv ./etc/rc.local ./etc/rc.local.orig
|
||||
cat >"./etc/rc.local" <<EOF
|
||||
if ! ls /etc/rc.d/S??dockerd >/dev/null 2>&1;then
|
||||
/etc/init.d/dockerd enable
|
||||
/etc/init.d/dockerd start
|
||||
fi
|
||||
if ! ls /etc/rc.d/S??dockerman >/dev/null 2>&1 && [ -f /etc/init.d/dockerman ];then
|
||||
/etc/init.d/dockerman enable
|
||||
/etc/init.d/dockerman start
|
||||
fi
|
||||
mv /etc/rc.local.orig /etc/rc.local
|
||||
chmod 755 /etc/rc.local
|
||||
exec /etc/rc.local
|
||||
exit
|
||||
EOF
|
||||
chmod 755 ./etc/rc.local*
|
||||
|
||||
# move /etc/config/balance_irq to /etc/balance_irq
|
||||
[ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/
|
||||
|
||||
echo "Create etc snapshot -> .snapshots/etc-001"
|
||||
btrfs subvolume snapshot -r etc .snapshots/etc-001
|
||||
|
||||
cd ${WORK_DIR}
|
||||
|
||||
echo "Copy efi files ..."
|
||||
fatlabel ${EFI_DEV} "EFI"
|
||||
cd /boot/efi
|
||||
mv ./EFI/BOOT/grub.cfg /tmp/grub.cfg.prev
|
||||
rm -rf *
|
||||
cp -a ${P1}/* .
|
||||
# 如果想启动上一个版本的openwrt,可以把 /boot/efi/EFI/BOOT/grub.cfg.prev 复制成 /boot/efi/EFI/BOOT/grub.cfg
|
||||
mv /tmp/grub.cfg.prev ./EFI/BOOT/
|
||||
|
||||
echo "Modify efi configuration ... "
|
||||
cd /boot/efi/EFI/BOOT
|
||||
cat > grub.cfg <<EOF
|
||||
echo "search fs_uuid ${NEW_ROOT_UUID} ..."
|
||||
search.fs_uuid ${NEW_ROOT_UUID} root
|
||||
echo "root=\$root"
|
||||
echo "set prefix ... "
|
||||
set prefix=(\$root)'/boot/grub2'
|
||||
echo "prefix=\$prefix"
|
||||
source \${prefix}/grub.cfg
|
||||
EOF
|
||||
|
||||
echo "Modify boot configuration ... "
|
||||
cd ${NEW_ROOT_MOUNTPOINT}/boot/grub2
|
||||
cat > grub.cfg <<EOF
|
||||
insmod gzio
|
||||
insmod part_gpt
|
||||
insmod zstd
|
||||
insmod btrfs
|
||||
terminal_input console
|
||||
terminal_output console
|
||||
|
||||
set default="0"
|
||||
set timeout=3
|
||||
|
||||
menuentry "OpenWrt" {
|
||||
echo 'Loading linux kernel ...'
|
||||
linux /boot/vmlinuz root=UUID=${NEW_ROOT_UUID} rootfstype=btrfs rootflags=compress=zstd:${ZSTD_LEVEL} console=ttyAMA0,115200n8 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1
|
||||
echo 'Loading initial ramdisk ...'
|
||||
initrd /boot/initrd.img
|
||||
}
|
||||
EOF
|
||||
|
||||
sync
|
||||
|
||||
cd $WORK_DIR
|
||||
umount -f ${P1} ${P2} 2>/dev/null
|
||||
losetup -D 2>/dev/null
|
||||
rm -rf ${P1} ${P2} 2>/dev/null
|
||||
rm -f ${IMG_NAME} 2>/dev/null
|
||||
sync
|
||||
wait
|
||||
|
||||
echo "Successfully updated, automatic restarting..."
|
||||
sleep 3
|
||||
reboot
|
||||
exit 0
|
|
@ -21,7 +21,7 @@ START_LOG="${TMP_CHECK_DIR}/amlogic_check_firmware.log"
|
|||
RUNNING_LOG="${TMP_CHECK_DIR}/amlogic_running_script.log"
|
||||
LOG_FILE="${TMP_CHECK_DIR}/amlogic.log"
|
||||
github_api_openwrt="${TMP_CHECK_DIR}/github_api_openwrt"
|
||||
MYDEVICE_NAME="$(cat /proc/device-tree/model | tr -d '\000')"
|
||||
support_platform=("allwinner" "rockchip" "amlogic" "qemu-aarch64")
|
||||
LOGTIME="$(date "+%Y-%m-%d %H:%M:%S")"
|
||||
[[ -d ${TMP_CHECK_DIR} ]] || mkdir -p ${TMP_CHECK_DIR}
|
||||
|
||||
|
@ -85,8 +85,11 @@ if [[ -s "${AMLOGIC_SOC_FILE}" ]]; then
|
|||
else
|
||||
tolog "${AMLOGIC_SOC_FILE} file is missing!" "1"
|
||||
fi
|
||||
[[ -n "${PLATFORM}" && -n "${SOC}" ]] || tolog "The custom firmware soc is invalid." "1"
|
||||
tolog "Device: ${MYDEVICE_NAME} [ ${SOC} ], Use in [ ${EMMC_NAME} ]"
|
||||
if [[ -z "${PLATFORM}" || -z "$(echo "${support_platform[@]}" | grep -w "${PLATFORM}")" || -z "${SOC}" ]]; then
|
||||
tolog "Missing [ PLATFORM ] value in ${AMLOGIC_SOC_FILE} file." "1"
|
||||
fi
|
||||
|
||||
tolog "PLATFORM: [ ${PLATFORM} ], SOC: [ ${SOC} ], Use in [ ${EMMC_NAME} ]"
|
||||
sleep 2
|
||||
|
||||
# 01. Query local version information
|
||||
|
@ -115,11 +118,11 @@ if [[ "${server_kernel_branch}" != "${main_line_version}" ]]; then
|
|||
fi
|
||||
|
||||
# 01.03. Download server version documentation
|
||||
server_firmware_url=$(uci get amlogic.config.amlogic_firmware_repo 2>/dev/null)
|
||||
server_firmware_url="$(uci get amlogic.config.amlogic_firmware_repo 2>/dev/null)"
|
||||
[[ ! -z "${server_firmware_url}" ]] || tolog "01.03 The custom firmware download repo is invalid." "1"
|
||||
releases_tag_keywords=$(uci get amlogic.config.amlogic_firmware_tag 2>/dev/null)
|
||||
releases_tag_keywords="$(uci get amlogic.config.amlogic_firmware_tag 2>/dev/null)"
|
||||
[[ ! -z "${releases_tag_keywords}" ]] || tolog "01.04 The custom firmware tag keywords is invalid." "1"
|
||||
firmware_suffix=$(uci get amlogic.config.amlogic_firmware_suffix 2>/dev/null)
|
||||
firmware_suffix="$(uci get amlogic.config.amlogic_firmware_suffix 2>/dev/null)"
|
||||
[[ ! -z "${firmware_suffix}" ]] || tolog "01.05 The custom firmware suffix is invalid." "1"
|
||||
|
||||
# Supported format:
|
||||
|
@ -170,7 +173,7 @@ check_updated() {
|
|||
if [[ -n "${api_op_down_line}" && -n "$(echo ${api_op_down_line} | sed -n "/^[0-9]\+$/p")" ]]; then
|
||||
tolog '<input type="button" class="cbi-button cbi-button-reload" value="Download" onclick="return b_check_firmware(this, '"'download_${api_op_down_line}_${latest_updated_at}'"')"/> Latest updated: '${latest_updated_at_format}'' "1"
|
||||
else
|
||||
tolog "02.02 Invalid firmware check." "1"
|
||||
tolog "02.02 No firmware available." "1"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
|
|
@ -22,8 +22,7 @@ RUNNING_LOG="${TMP_CHECK_DIR}/amlogic_running_script.log"
|
|||
LOG_FILE="${TMP_CHECK_DIR}/amlogic.log"
|
||||
github_api_kernel_library="${TMP_CHECK_DIR}/github_api_kernel_library"
|
||||
github_api_kernel_file="${TMP_CHECK_DIR}/github_api_kernel_file"
|
||||
support_platform=("allwinner" "rockchip" "amlogic")
|
||||
MYDEVICE_NAME="$(cat /proc/device-tree/model | tr -d '\000')"
|
||||
support_platform=("allwinner" "rockchip" "amlogic" "qemu-aarch64")
|
||||
LOGTIME="$(date "+%Y-%m-%d %H:%M:%S")"
|
||||
[[ -d ${TMP_CHECK_DIR} ]] || mkdir -p ${TMP_CHECK_DIR}
|
||||
|
||||
|
@ -43,8 +42,8 @@ tolog() {
|
|||
this_running_log="2@Kernel update in progress, try again later!"
|
||||
running_script="$(cat ${RUNNING_LOG} 2>/dev/null | xargs)"
|
||||
if [[ -n "${running_script}" ]]; then
|
||||
run_num=$(echo "${running_script}" | awk -F "@" '{print $1}')
|
||||
run_log=$(echo "${running_script}" | awk -F "@" '{print $2}')
|
||||
run_num="$(echo "${running_script}" | awk -F "@" '{print $1}')"
|
||||
run_log="$(echo "${running_script}" | awk -F "@" '{print $2}')"
|
||||
fi
|
||||
if [[ -n "${run_log}" && "${run_num}" -ne "2" ]]; then
|
||||
echo -e "${run_log}" >${START_LOG} 2>/dev/null && sync && exit 1
|
||||
|
@ -87,7 +86,7 @@ if [[ -z "${PLATFORM}" || -z "$(echo "${support_platform[@]}" | grep -w "${PLATF
|
|||
tolog "Missing [ PLATFORM ] value in ${AMLOGIC_SOC_FILE} file." "1"
|
||||
fi
|
||||
|
||||
tolog "Device: ${MYDEVICE_NAME} [ ${PLATFORM} ], Use in [ ${EMMC_NAME} ]"
|
||||
tolog "PLATFORM: [ ${PLATFORM} ], SOC: [ ${SOC} ], Use in [ ${EMMC_NAME} ]"
|
||||
sleep 2
|
||||
|
||||
# Step 1: URL formatting start -----------------------------------------------------------
|
||||
|
@ -218,21 +217,23 @@ download_kernel() {
|
|||
fi
|
||||
sleep 2
|
||||
|
||||
# 02. Download dtb file from the kernel directory under the path: ${server_kernel_url}/${download_version}/
|
||||
server_kernel_dtb="$(cat ${github_api_kernel_file} | grep "download_url" | grep -o "https.*/dtb-${PLATFORM}-${download_version}.*.tar.gz" | head -n 1)"
|
||||
# Download dtb file from current path: ${server_kernel_url}/
|
||||
if [[ -z "${server_kernel_dtb}" ]]; then
|
||||
server_kernel_dtb="$(cat ${github_api_kernel_library} | grep "download_url" | grep -o "https.*/dtb-${PLATFORM}-${download_version}.*.tar.gz" | head -n 1)"
|
||||
if [[ "${PLATFORM}" != "qemu-aarch64" ]]; then
|
||||
# 02. Download dtb file from the kernel directory under the path: ${server_kernel_url}/${download_version}/
|
||||
server_kernel_dtb="$(cat ${github_api_kernel_file} | grep "download_url" | grep -o "https.*/dtb-${PLATFORM}-${download_version}.*.tar.gz" | head -n 1)"
|
||||
# Download dtb file from current path: ${server_kernel_url}/
|
||||
if [[ -z "${server_kernel_dtb}" ]]; then
|
||||
server_kernel_dtb="$(cat ${github_api_kernel_library} | grep "download_url" | grep -o "https.*/dtb-${PLATFORM}-${download_version}.*.tar.gz" | head -n 1)"
|
||||
fi
|
||||
dtb_file_name="${server_kernel_dtb##*/}"
|
||||
server_kernel_dtb_name="${dtb_file_name//%2B/+}"
|
||||
wget "${server_kernel_dtb}" -O "${KERNEL_DOWNLOAD_PATH}/${server_kernel_dtb_name}" >/dev/null 2>&1 && sync
|
||||
if [[ "$?" -eq "0" && -s "${KERNEL_DOWNLOAD_PATH}/${server_kernel_dtb_name}" ]]; then
|
||||
tolog "03.05 The dtb file download complete."
|
||||
else
|
||||
tolog "03.06 The dtb file download failed." "1"
|
||||
fi
|
||||
sleep 2
|
||||
fi
|
||||
dtb_file_name="${server_kernel_dtb##*/}"
|
||||
server_kernel_dtb_name="${dtb_file_name//%2B/+}"
|
||||
wget "${server_kernel_dtb}" -O "${KERNEL_DOWNLOAD_PATH}/${server_kernel_dtb_name}" >/dev/null 2>&1 && sync
|
||||
if [[ "$?" -eq "0" && -s "${KERNEL_DOWNLOAD_PATH}/${server_kernel_dtb_name}" ]]; then
|
||||
tolog "03.05 The dtb file download complete."
|
||||
else
|
||||
tolog "03.06 The dtb file download failed." "1"
|
||||
fi
|
||||
sleep 2
|
||||
|
||||
# 03. Download modules file from the kernel directory under the path: ${server_kernel_url}/${download_version}/
|
||||
server_kernel_modules="$(cat ${github_api_kernel_file} | grep "download_url" | grep -o "https.*/modules-${download_version}.*.tar.gz" | head -n 1)"
|
||||
|
|
|
@ -19,7 +19,7 @@ START_LOG="${TMP_CHECK_DIR}/amlogic_check_plugin.log"
|
|||
RUNNING_LOG="${TMP_CHECK_DIR}/amlogic_running_script.log"
|
||||
LOG_FILE="${TMP_CHECK_DIR}/amlogic.log"
|
||||
github_api_plugin="${TMP_CHECK_DIR}/github_api_plugin"
|
||||
MYDEVICE_NAME="$(cat /proc/device-tree/model | tr -d '\000')"
|
||||
support_platform=("allwinner" "rockchip" "amlogic" "qemu-aarch64")
|
||||
LOGTIME="$(date "+%Y-%m-%d %H:%M:%S")"
|
||||
[[ -d ${TMP_CHECK_DIR} ]] || mkdir -p ${TMP_CHECK_DIR}
|
||||
rm -f ${TMP_CHECK_DIR}/*.ipk 2>/dev/null && sync
|
||||
|
@ -40,8 +40,8 @@ tolog() {
|
|||
this_running_log="1@Plugin update in progress, try again later!"
|
||||
running_script="$(cat ${RUNNING_LOG} 2>/dev/null | xargs)"
|
||||
if [[ -n "${running_script}" ]]; then
|
||||
run_num=$(echo "${running_script}" | awk -F "@" '{print $1}')
|
||||
run_log=$(echo "${running_script}" | awk -F "@" '{print $2}')
|
||||
run_num="$(echo "${running_script}" | awk -F "@" '{print $1}')"
|
||||
run_log="$(echo "${running_script}" | awk -F "@" '{print $2}')"
|
||||
fi
|
||||
if [[ -n "${run_log}" && "${run_num}" -ne "1" ]]; then
|
||||
echo -e "${run_log}" >${START_LOG} 2>/dev/null && sync && exit 1
|
||||
|
@ -80,8 +80,11 @@ if [[ -s "${AMLOGIC_SOC_FILE}" ]]; then
|
|||
else
|
||||
tolog "${AMLOGIC_SOC_FILE} file is missing!" "1"
|
||||
fi
|
||||
[[ -n "${PLATFORM}" && -n "${SOC}" ]] || tolog "The custom firmware soc is invalid." "1"
|
||||
tolog "Device: ${MYDEVICE_NAME} [ ${PLATFORM} ], Use in [ ${EMMC_NAME} ]"
|
||||
if [[ -z "${PLATFORM}" || -z "$(echo "${support_platform[@]}" | grep -w "${PLATFORM}")" || -z "${SOC}" ]]; then
|
||||
tolog "Missing [ PLATFORM ] value in ${AMLOGIC_SOC_FILE} file." "1"
|
||||
fi
|
||||
|
||||
tolog "PLATFORM: [ ${PLATFORM} ], SOC: [ ${SOC} ], Use in [ ${EMMC_NAME} ]"
|
||||
sleep 2
|
||||
|
||||
# 01. Query local version information
|
||||
|
|
Loading…
Reference in New Issue