2022-03-25 12:20:39 +08:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
#======================================================================================
|
|
|
|
|
# Function: Update openwrt to emmc for Rockchip STB
|
|
|
|
|
# Copyright (C) 2020-- https://github.com/unifreq/openwrt_packit
|
|
|
|
|
# Copyright (C) 2021-- https://github.com/ophub/luci-app-amlogic
|
|
|
|
|
#======================================================================================
|
|
|
|
|
|
|
|
|
|
# The script supports directly setting parameters for update, skipping interactive selection
|
|
|
|
|
# openwrt-update-rockchip ${OPENWRT_FILE} ${AUTO_MAINLINE_UBOOT} ${RESTORE_CONFIG}
|
|
|
|
|
# E.g: openwrt-update-rockchip openwrt_s905d.img.gz yes restore
|
|
|
|
|
# E.g: openwrt-update-rockchip openwrt_s905d.img.gz no no-restore
|
|
|
|
|
|
|
|
|
|
# You can also execute the script directly, and interactively select related functions
|
|
|
|
|
# E.g: openwrt-update-rockchip
|
|
|
|
|
|
|
|
|
|
# Receive one-key command related parameters
|
2022-10-20 20:27:30 +08:00
|
|
|
|
IMG_NAME="${1}"
|
|
|
|
|
AUTO_MAINLINE_UBOOT="${2}"
|
|
|
|
|
BACKUP_RESTORE_CONFIG="${3}"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
|
|
|
|
|
# Current device model
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if [ -f /boot/armbianEnv.txt ]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
source /boot/armbianEnv.txt 2>/dev/null
|
2022-10-20 20:27:30 +08:00
|
|
|
|
CURRENT_FDTFILE=$(basename ${fdtfile})
|
2022-03-25 12:20:39 +08:00
|
|
|
|
fi
|
|
|
|
|
MYDEVICE_NAME=$(cat /proc/device-tree/model | tr -d '\000')
|
|
|
|
|
if [[ -z "${MYDEVICE_NAME}" ]]; then
|
|
|
|
|
echo "The device name is empty and cannot be recognized."
|
|
|
|
|
exit 1
|
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "Chainedbox L1 Pro")" != "" ]]; then
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3328-l1pro-1296mhz.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="l1pro"
|
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "BeikeYun")" != "" ]]; then
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3328-beikeyun-1296mhz.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="beikeyun"
|
2023-05-19 09:23:49 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "Radxa CM3 RPI CM4 IO")" != "" ]]; then
|
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3566-radxa-cm3-rpi-cm4-io.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="radxa-cm3-rpi-cm4-io"
|
2022-09-24 20:22:14 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "FastRhino R66S")" != "" ]]; then
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
2022-09-24 20:22:14 +08:00
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3568-fastrhino-r66s.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="r66s"
|
2022-08-16 20:19:01 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "FastRhino R68S")" != "" ]]; then
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
2022-08-16 20:19:01 +08:00
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3568-fastrhino-r68s.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="r68s"
|
2023-02-10 20:37:09 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "HINLINK OPC-H66K Board")" != "" ]]; then
|
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3568-opc-h66k.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="h66k"
|
2022-10-14 20:27:11 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "HINLINK OPC-H68K Board")" != "" ]]; then
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
2022-10-14 20:27:11 +08:00
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3568-opc-h68k.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="h68k"
|
2023-06-02 23:35:11 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "HINLINK OPC-H69K Board")" != "" ]]; then
|
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3568-opc-h69k.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="h69k"
|
2022-10-27 20:27:13 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "Radxa E25")" != "" ]]; then
|
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3568-radxa-e25.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="e25"
|
2023-04-21 16:20:53 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "Ariaboard Photonicat")" != "" ]]; then
|
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3568-photonicat.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="photonicat"
|
2022-09-05 17:12:47 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "Radxa ROCK 5B")" != "" ]]; then
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
2022-09-05 17:12:47 +08:00
|
|
|
|
else
|
|
|
|
|
MYDTB_FDTFILE="rk3588-rock-5b.dtb"
|
|
|
|
|
fi
|
|
|
|
|
SOC="rock5b"
|
2022-10-26 23:45:12 +08:00
|
|
|
|
elif [[ "$(echo ${MYDEVICE_NAME} | grep "HINLINK OWL H88K")" != "" ]]; then
|
2022-10-23 20:25:46 +08:00
|
|
|
|
if [ -n "${CURRENT_FDTFILE}" ]; then
|
|
|
|
|
MYDTB_FDTFILE="${CURRENT_FDTFILE}"
|
|
|
|
|
else
|
2022-10-26 23:45:12 +08:00
|
|
|
|
MYDTB_FDTFILE="rk3588-hinlink-h88k.dtb"
|
2022-10-23 20:25:46 +08:00
|
|
|
|
fi
|
2023-04-21 16:20:53 +08:00
|
|
|
|
SOC="ak88/h88k"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
else
|
|
|
|
|
echo "Unknown device: [ ${MYDEVICE_NAME} ], Not supported."
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
echo -e "Current device: ${MYDEVICE_NAME} [ ${SOC} ]"
|
|
|
|
|
sleep 3
|
|
|
|
|
|
|
|
|
|
# Find the partition where root is located
|
|
|
|
|
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 mmcblk?p? sd?? hd?? vd?? and other formats
|
|
|
|
|
case ${ROOT_PTNAME} in
|
|
|
|
|
mmcblk?p[1-4])
|
|
|
|
|
EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}')
|
|
|
|
|
PARTITION_NAME="p"
|
2022-10-20 20:27:30 +08:00
|
|
|
|
LB_PRE="EMMC_"
|
2022-09-05 17:12:47 +08:00
|
|
|
|
;;
|
2022-10-17 20:28:43 +08:00
|
|
|
|
nvme?n?p?)
|
2022-09-05 17:12:47 +08:00
|
|
|
|
EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-2)}')
|
|
|
|
|
PARTITION_NAME="p"
|
|
|
|
|
LB_PRE="NVME_"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
;;
|
|
|
|
|
[hsv]d[a-z][1-4])
|
|
|
|
|
EMMC_NAME=$(echo ${ROOT_PTNAME} | awk '{print substr($1, 1, length($1)-1)}')
|
|
|
|
|
PARTITION_NAME=""
|
2022-10-20 20:27:30 +08:00
|
|
|
|
LB_PRE="USB_"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "Unable to recognize the disk type of ${ROOT_PTNAME}!"
|
|
|
|
|
exit 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
cd /mnt/${EMMC_NAME}${PARTITION_NAME}4/
|
|
|
|
|
mv -f /tmp/upload/* . 2>/dev/null && 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 [ /mnt/${EMMC_NAME}${PARTITION_NAME}4/ ]"
|
|
|
|
|
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 boot partition
|
|
|
|
|
BOOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ /^\/boot$/ {print $0}')
|
|
|
|
|
if [ "${BOOT_PART_MSG}" == "" ]; then
|
|
|
|
|
echo "The boot partition is not exists or not mounted, so it cannot be upgraded with this script!"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
BR_FLAG=1
|
|
|
|
|
echo -ne "Whether to backup and restore the current config files? y/n [y]\b\b"
|
|
|
|
|
if [[ ${BACKUP_RESTORE_CONFIG} == "restore" ]]; then
|
|
|
|
|
yn="y"
|
|
|
|
|
elif [[ ${BACKUP_RESTORE_CONFIG} == "no-restore" ]]; then
|
|
|
|
|
yn="n"
|
|
|
|
|
else
|
|
|
|
|
read yn
|
|
|
|
|
fi
|
2022-10-20 20:27:30 +08:00
|
|
|
|
case ${yn} in
|
2022-03-25 12:20:39 +08:00
|
|
|
|
n* | N*)
|
|
|
|
|
BR_FLAG=0
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
2022-10-20 20:27:30 +08:00
|
|
|
|
BOOT_NAME=$(echo ${BOOT_PART_MSG} | awk '{print $1}')
|
|
|
|
|
BOOT_PATH=$(echo ${BOOT_PART_MSG} | awk '{print $2}')
|
|
|
|
|
BOOT_UUID=$(echo ${BOOT_PART_MSG} | awk '{print $4}')
|
2022-03-25 12:20:39 +08:00
|
|
|
|
|
|
|
|
|
# find root partition
|
|
|
|
|
ROOT_PART_MSG=$(lsblk -l -o NAME,PATH,TYPE,UUID,MOUNTPOINT | awk '$3~/^part$/ && $5 ~ /^\/$/ {print $0}')
|
2022-10-20 20:27:30 +08:00
|
|
|
|
ROOT_NAME=$(echo ${ROOT_PART_MSG} | awk '{print $1}')
|
|
|
|
|
ROOT_PATH=$(echo ${ROOT_PART_MSG} | awk '{print $2}')
|
|
|
|
|
ROOT_UUID=$(echo ${ROOT_PART_MSG} | awk '{print $4}')
|
|
|
|
|
case ${ROOT_NAME} in
|
2022-03-25 12:20:39 +08:00
|
|
|
|
${EMMC_NAME}${PARTITION_NAME}2)
|
|
|
|
|
NEW_ROOT_NAME="${EMMC_NAME}${PARTITION_NAME}3"
|
|
|
|
|
NEW_ROOT_LABEL="${LB_PRE}ROOTFS2"
|
|
|
|
|
;;
|
|
|
|
|
${EMMC_NAME}${PARTITION_NAME}3)
|
|
|
|
|
NEW_ROOT_NAME="${EMMC_NAME}${PARTITION_NAME}2"
|
|
|
|
|
NEW_ROOT_LABEL="${LB_PRE}ROOTFS1"
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "The root partition location is invalid, so it cannot be upgraded with this script!"
|
|
|
|
|
exit 1
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
# 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 root partition is not exists, so it cannot be upgraded with this script!"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
2022-10-20 20:27:30 +08:00
|
|
|
|
NEW_ROOT_NAME=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $1}')
|
|
|
|
|
NEW_ROOT_PATH=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $2}')
|
|
|
|
|
NEW_ROOT_UUID=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $4}')
|
|
|
|
|
NEW_ROOT_MP=$(echo ${NEW_ROOT_PART_MSG} | awk '{print $5}')
|
2022-03-25 12:20:39 +08:00
|
|
|
|
|
|
|
|
|
# losetup
|
2022-10-20 20:27:30 +08:00
|
|
|
|
losetup -f -P ${IMG_NAME}
|
|
|
|
|
if [[ "${?}" -eq "0" ]]; then
|
|
|
|
|
LOOP_DEV=$(losetup | grep "${IMG_NAME}" | awk '{print $1}')
|
2022-03-25 12:20:39 +08:00
|
|
|
|
if [ "$LOOP_DEV" == "" ]; then
|
|
|
|
|
echo "loop device not found!"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
else
|
2022-10-20 20:27:30 +08:00
|
|
|
|
echo "losetup ${IMG_FILE} failed!"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
exit 1
|
|
|
|
|
fi
|
2022-08-16 20:19:01 +08:00
|
|
|
|
|
|
|
|
|
# fix loopdev issue in kernel 5.19
|
|
|
|
|
function fix_loopdev() {
|
|
|
|
|
local parentdev=${1##*/}
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if [ ! -d /sys/block/${parentdev} ]; then
|
2022-08-16 20:19:01 +08:00
|
|
|
|
return
|
|
|
|
|
fi
|
|
|
|
|
subdevs=$(lsblk -l -o NAME | grep -E "^${parentdev}.+\$")
|
2022-10-20 20:27:30 +08:00
|
|
|
|
for subdev in ${subdevs}; do
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if [ ! -d /sys/block/${parentdev}/${subdev} ]; then
|
2022-08-16 20:19:01 +08:00
|
|
|
|
return
|
2022-10-17 20:28:43 +08:00
|
|
|
|
elif [ -b /dev/${sub_dev} ]; then
|
2022-08-16 20:19:01 +08:00
|
|
|
|
continue
|
|
|
|
|
fi
|
|
|
|
|
source /sys/block/${parentdev}/${subdev}/uevent
|
|
|
|
|
mknod /dev/${subdev} b ${MAJOR} ${MINOR}
|
|
|
|
|
unset MAJOR MINOR DEVNAME DEVTYPE DISKSEQ PARTN PARTNAME
|
|
|
|
|
done
|
|
|
|
|
}
|
|
|
|
|
fix_loopdev ${LOOP_DEV}
|
|
|
|
|
|
2022-03-25 12:20:39 +08:00
|
|
|
|
WAIT=3
|
2022-10-20 20:27:30 +08:00
|
|
|
|
echo -n "The loopdev is ${LOOP_DEV}, wait ${WAIT} seconds "
|
|
|
|
|
while [ ${WAIT} -ge 1 ]; do
|
2022-03-25 12:20:39 +08:00
|
|
|
|
echo -n "."
|
|
|
|
|
sleep 1
|
|
|
|
|
WAIT=$((WAIT - 1))
|
|
|
|
|
done
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
# umount loop devices (openwrt will auto mount some partition)
|
2022-10-20 20:27:30 +08:00
|
|
|
|
MOUNTED_DEVS=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "${LOOP_DEV}" | awk '$3 !~ /^$/ {print $2}')
|
|
|
|
|
for dev in ${MOUNTED_DEVS}; do
|
2022-03-25 12:20:39 +08:00
|
|
|
|
while :; do
|
2022-10-20 20:27:30 +08:00
|
|
|
|
echo -n "umount ${dev} ... "
|
|
|
|
|
umount -f ${dev}
|
2022-03-25 12:20:39 +08:00
|
|
|
|
sleep 1
|
2022-10-20 20:27:30 +08:00
|
|
|
|
mnt=$(lsblk -l -o NAME,PATH,MOUNTPOINT | grep "${dev}" | awk '$3 !~ /^$/ {print $2}')
|
|
|
|
|
if [ "${mnt}" == "" ]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
echo "ok"
|
|
|
|
|
break
|
|
|
|
|
else
|
|
|
|
|
echo "try again ..."
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# mount src part
|
2022-10-20 20:27:30 +08:00
|
|
|
|
WORK_DIR=${PWD}
|
2022-03-25 12:20:39 +08:00
|
|
|
|
P1=${WORK_DIR}/boot
|
|
|
|
|
P2=${WORK_DIR}/root
|
|
|
|
|
mkdir -p $P1 $P2
|
|
|
|
|
echo -n "mount ${LOOP_DEV}p1 -> ${P1} ... "
|
|
|
|
|
mount -t ext4 -o ro ${LOOP_DEV}p1 ${P1}
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [[ "${?}" -ne "0" ]]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
echo "mount failed"
|
|
|
|
|
losetup -D
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "ok"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo -n "mount ${LOOP_DEV}p2 -> ${P2} ... "
|
|
|
|
|
ZSTD_LEVEL=6
|
|
|
|
|
mount -t btrfs -o ro,compress=zstd:${ZSTD_LEVEL} ${LOOP_DEV}p2 ${P2}
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [[ "${?}" -ne "0" ]]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
echo "mount failed"
|
|
|
|
|
umount -f ${P1}
|
|
|
|
|
losetup -D
|
|
|
|
|
exit 1
|
|
|
|
|
else
|
|
|
|
|
echo "ok"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Prepare the dockerman config file
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if [ -f ${P2}/etc/init.d/dockerman ] && [ -f ${P2}/etc/config/dockerd ]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
|
|
|
|
|
flg=0
|
|
|
|
|
# get current docker data root
|
|
|
|
|
data_root=$(uci get dockerd.globals.data_root 2>/dev/null)
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [ "${data_root}" == "" ]; then
|
2022-10-17 20:28:43 +08:00
|
|
|
|
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)
|
2022-03-25 12:20:39 +08:00
|
|
|
|
|
2022-10-17 20:28:43 +08:00
|
|
|
|
bip=$(jq -r '."bip"' /etc/docker/daemon.json)
|
2022-10-20 20:27:30 +08:00
|
|
|
|
[ "${bip}" == "null" ] && bip="172.31.0.1/24"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
|
2022-10-17 20:28:43 +08:00
|
|
|
|
log_level=$(jq -r '."log-level"' /etc/docker/daemon.json)
|
2022-10-20 20:27:30 +08:00
|
|
|
|
[ "${log_level}" == "null" ] && log_level="warn"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
|
2022-10-17 20:28:43 +08:00
|
|
|
|
_iptables=$(jq -r '."iptables"' /etc/docker/daemon.json)
|
2022-10-20 20:27:30 +08:00
|
|
|
|
[ "${_iptables}" == "null" ] && _iptables="true"
|
2022-03-25 12:20:39 +08:00
|
|
|
|
|
2022-10-17 20:28:43 +08:00
|
|
|
|
registry_mirrors=$(jq -r '."registry-mirrors"[]' /etc/docker/daemon.json 2>/dev/null)
|
|
|
|
|
fi
|
2022-03-25 12:20:39 +08:00
|
|
|
|
fi
|
|
|
|
|
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [ "${data_root}" == "" ]; then
|
2022-10-17 20:28:43 +08:00
|
|
|
|
data_root="/opt/docker/" # the default data root
|
2022-03-25 12:20:39 +08:00
|
|
|
|
fi
|
|
|
|
|
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if ! uci get dockerd.globals >/dev/null 2>&1; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
uci set dockerd.globals='globals'
|
|
|
|
|
uci commit
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# delete alter config , use inner config
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if uci get dockerd.globals.alt_config_file >/dev/null 2>&1; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
uci delete dockerd.globals.alt_config_file
|
|
|
|
|
uci commit
|
|
|
|
|
fi
|
|
|
|
|
|
2022-10-20 20:27:30 +08:00
|
|
|
|
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}
|
2022-10-17 20:28:43 +08:00
|
|
|
|
done
|
2022-03-25 12:20:39 +08:00
|
|
|
|
fi
|
|
|
|
|
uci set dockerd.globals.auto_start='1'
|
|
|
|
|
uci commit
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
#format NEW_ROOT
|
|
|
|
|
echo "umount ${NEW_ROOT_MP}"
|
|
|
|
|
umount -f "${NEW_ROOT_MP}"
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [[ "${?}" -ne "0" ]]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
echo "umount failed, please reboot and try again!"
|
|
|
|
|
umount -f ${P1}
|
|
|
|
|
umount -f ${P2}
|
|
|
|
|
losetup -D
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "format ${NEW_ROOT_PATH}"
|
|
|
|
|
NEW_ROOT_UUID=$(uuidgen)
|
|
|
|
|
mkfs.btrfs -f -U ${NEW_ROOT_UUID} -L ${NEW_ROOT_LABEL} -m single ${NEW_ROOT_PATH}
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [[ "${?}" -ne "0" ]]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
echo "format ${NEW_ROOT_PATH} failed!"
|
|
|
|
|
umount -f ${P1}
|
|
|
|
|
umount -f ${P2}
|
|
|
|
|
losetup -D
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "mount ${NEW_ROOT_PATH} to ${NEW_ROOT_MP}"
|
|
|
|
|
mount -t btrfs -o compress=zstd:${ZSTD_LEVEL} ${NEW_ROOT_PATH} ${NEW_ROOT_MP}
|
2022-10-20 20:27:30 +08:00
|
|
|
|
if [[ "${?}" -ne "0" ]]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
echo "mount ${NEW_ROOT_PATH} to ${NEW_ROOT_MP} failed!"
|
|
|
|
|
umount -f ${P1}
|
|
|
|
|
umount -f ${P2}
|
|
|
|
|
losetup -D
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# begin copy rootfs
|
|
|
|
|
cd ${NEW_ROOT_MP}
|
|
|
|
|
echo "Start copy data from ${P2} to ${NEW_ROOT_MP} ..."
|
|
|
|
|
ENTRYS=$(ls)
|
2022-10-20 20:27:30 +08:00
|
|
|
|
for entry in ${ENTRYS}; do
|
|
|
|
|
if [ "${entry}" == "lost+found" ]; then
|
2022-03-25 12:20:39 +08:00
|
|
|
|
continue
|
|
|
|
|
fi
|
2022-10-20 20:27:30 +08:00
|
|
|
|
echo -n "remove old ${entry} ... "
|
|
|
|
|
rm -rf ${entry}
|
2022-03-25 12:20:39 +08:00
|
|
|
|
if [ $? -eq 0 ]; then
|
|
|
|
|
echo "ok"
|
|
|
|
|
else
|
|
|
|
|
echo "failed"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
echo "create etc subvolume ..."
|
|
|
|
|
btrfs subvolume create etc
|
|
|
|
|
echo -n "make dirs ... "
|
|
|
|
|
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
|
|
|
|
|
echo "done"
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
COPY_SRC="root etc bin sbin lib opt usr www"
|
|
|
|
|
echo "copy data ... "
|
2022-10-20 20:27:30 +08:00
|
|
|
|
for src in ${COPY_SRC}; do
|
|
|
|
|
echo -n "copy ${src} ... "
|
|
|
|
|
(cd ${P2} && tar cf - ${src}) | tar xf -
|
2022-03-25 12:20:39 +08:00
|
|
|
|
sync
|
|
|
|
|
echo "done"
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
SHFS="/mnt/${EMMC_NAME}${PARTITION_NAME}4"
|
|
|
|
|
echo "Modify config files ... "
|
|
|
|
|
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
|
|
|
|
|
|
|
|
|
|
rm -f ./etc/bench.log
|
|
|
|
|
cat >./etc/fstab <<EOF
|
|
|
|
|
UUID=${NEW_ROOT_UUID} / btrfs compress=zstd:${ZSTD_LEVEL} 0 1
|
|
|
|
|
UUID=${BOOT_UUID} /boot ext4 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'
|
|
|
|
|
option uuid '${BOOT_UUID}'
|
|
|
|
|
option enabled '1'
|
|
|
|
|
option enabled_fsck '0'
|
|
|
|
|
option fstype 'ext4'
|
2023-02-10 20:37:09 +08:00
|
|
|
|
|
2022-03-25 12:20:39 +08:00
|
|
|
|
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 the first etc snapshot -> .snapshots/etc-000"
|
|
|
|
|
btrfs subvolume snapshot -r etc .snapshots/etc-000
|
|
|
|
|
|
|
|
|
|
[ -d ${SHFS}/docker ] || mkdir -p ${SHFS}/docker
|
|
|
|
|
rm -rf opt/docker && ln -sf ${SHFS}/docker/ opt/docker
|
|
|
|
|
|
|
|
|
|
if [ -f /mnt/${NEW_ROOT_NAME}/etc/config/AdGuardHome ]; then
|
|
|
|
|
[ -d ${SHFS}/AdGuardHome/data ] || mkdir -p ${SHFS}/AdGuardHome/data
|
|
|
|
|
if [ ! -L /usr/bin/AdGuardHome ]; then
|
|
|
|
|
[ -d /usr/bin/AdGuardHome ] &&
|
|
|
|
|
cp -a /usr/bin/AdGuardHome/* ${SHFS}/AdGuardHome/
|
|
|
|
|
fi
|
|
|
|
|
ln -sf ${SHFS}/AdGuardHome /mnt/${NEW_ROOT_NAME}/usr/bin/AdGuardHome
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
sync
|
|
|
|
|
echo "copy done"
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
BACKUP_LIST=$(${P2}/usr/sbin/openwrt-backup -p)
|
|
|
|
|
if [ $BR_FLAG -eq 1 ]; then
|
|
|
|
|
echo -n "Restore your old config files ... "
|
|
|
|
|
(
|
|
|
|
|
cd /
|
|
|
|
|
eval tar czf ${NEW_ROOT_MP}/.reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null
|
|
|
|
|
)
|
|
|
|
|
tar xzf ${NEW_ROOT_MP}/.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
|
|
|
|
|
|
|
|
|
|
# 还原 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 "done"
|
|
|
|
|
echo
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
cat >>./etc/crontabs/root <<EOF
|
|
|
|
|
17 3 * * * /etc/coremark.sh
|
|
|
|
|
EOF
|
|
|
|
|
|
|
|
|
|
sed -e 's/ttyAMA0/ttyS2/' -i ./etc/inittab
|
|
|
|
|
sed -e 's/ttyS0/tty1/' -i ./etc/inittab
|
|
|
|
|
sss=$(date +%s)
|
|
|
|
|
ddd=$((sss / 86400))
|
|
|
|
|
sed -e "s/:0:0:99999:7:::/:${ddd}:0:99999:7:::/" -i ./etc/shadow
|
|
|
|
|
# 修复amule每次升级后重复添加条目的问题
|
|
|
|
|
sed -e "/amule:x:/d" -i ./etc/shadow
|
|
|
|
|
# 修复dropbear每次升级后重复添加sshd条目的问题
|
|
|
|
|
sed -e "/sshd:x:/d" -i ./etc/shadow
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if ! grep "sshd:x:22:sshd" ./etc/group >/dev/null; then
|
|
|
|
|
echo "sshd:x:22:sshd" >>./etc/group
|
2022-03-25 12:20:39 +08:00
|
|
|
|
fi
|
2022-10-17 20:28:43 +08:00
|
|
|
|
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
|
2022-03-25 12:20:39 +08:00
|
|
|
|
fi
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if ! grep "sshd:x:" ./etc/shadow >/dev/null; then
|
|
|
|
|
echo "sshd:x:${ddd}:0:99999:7:::" >>./etc/shadow
|
2022-03-25 12:20:39 +08:00
|
|
|
|
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
|
|
|
|
|
echo "done"
|
|
|
|
|
echo
|
|
|
|
|
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
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# move /etc/config/balance_irq to /etc/balance_irq
|
|
|
|
|
[ -f "./etc/config/balance_irq" ] && mv ./etc/config/balance_irq ./etc/
|
|
|
|
|
|
|
|
|
|
rm -f "./etc/rc.local.orig" "./etc/first_run.sh" "./etc/part_size"
|
|
|
|
|
|
|
|
|
|
eval tar czf .reserved/openwrt_config.tar.gz "${BACKUP_LIST}" 2>/dev/null
|
|
|
|
|
sync
|
|
|
|
|
|
|
|
|
|
mv ./etc/rc.local ./etc/rc.local.orig
|
2022-10-17 20:28:43 +08:00
|
|
|
|
cat >"./etc/rc.local" <<EOF
|
2022-03-25 12:20:39 +08:00
|
|
|
|
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*
|
|
|
|
|
|
|
|
|
|
echo "create the second etc snapshot -> .snapshots/etc-001"
|
|
|
|
|
btrfs subvolume snapshot -r etc .snapshots/etc-001
|
|
|
|
|
|
|
|
|
|
# 2021.04.01添加
|
|
|
|
|
# 强制锁定fstab,防止用户擅自修改挂载点
|
|
|
|
|
# 开启了快照功能之后,不再需要锁定fstab
|
|
|
|
|
#chattr +ia ./etc/config/fstab
|
|
|
|
|
|
|
|
|
|
cd ${WORK_DIR}
|
|
|
|
|
|
|
|
|
|
echo "Start copy data from ${P2} to /boot ..."
|
|
|
|
|
cd /boot
|
2022-09-05 17:12:47 +08:00
|
|
|
|
echo -n "backup armbianEnv.txt ..."
|
|
|
|
|
cp armbianEnv.txt /tmp/
|
2022-03-25 12:20:39 +08:00
|
|
|
|
echo -n "remove old boot files ..."
|
|
|
|
|
rm -rf *
|
|
|
|
|
echo "done"
|
|
|
|
|
echo -n "copy new boot files ... "
|
|
|
|
|
(cd ${P1} && tar cf - .) | tar xf -
|
|
|
|
|
sync
|
|
|
|
|
echo "done"
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
echo -n "Update boot args ... "
|
2022-10-17 20:28:43 +08:00
|
|
|
|
if [ -f /tmp/armbianEnv.txt ]; then
|
2022-09-05 17:12:47 +08:00
|
|
|
|
cp /tmp/armbianEnv.txt .
|
|
|
|
|
fi
|
|
|
|
|
sed -e '/fdtfile=/d' -i armbianEnv.txt
|
|
|
|
|
sed -e '/rootdev=/d' -i armbianEnv.txt
|
|
|
|
|
sed -e '/rootfstype=/d' -i armbianEnv.txt
|
|
|
|
|
sed -e '/rootflags=/d' -i armbianEnv.txt
|
2022-10-28 20:26:04 +08:00
|
|
|
|
case $SOC in
|
2023-02-10 20:37:09 +08:00
|
|
|
|
l1pro | beikeyun)
|
|
|
|
|
echo "fdtfile=/dtb/rockchip/${MYDTB_FDTFILE}" >>armbianEnv.txt
|
|
|
|
|
;;
|
|
|
|
|
*)
|
|
|
|
|
echo "fdtfile=rockchip/${MYDTB_FDTFILE}" >>armbianEnv.txt
|
|
|
|
|
;;
|
2022-10-28 20:26:04 +08:00
|
|
|
|
esac
|
2022-10-17 20:28:43 +08:00
|
|
|
|
cat >>armbianEnv.txt <<EOF
|
2022-03-25 12:20:39 +08:00
|
|
|
|
rootdev=UUID=${NEW_ROOT_UUID}
|
|
|
|
|
rootfstype=btrfs
|
|
|
|
|
rootflags=compress=zstd:${ZSTD_LEVEL}
|
|
|
|
|
EOF
|
|
|
|
|
sync
|
|
|
|
|
echo "done"
|
|
|
|
|
echo
|
|
|
|
|
|
|
|
|
|
cd $WORK_DIR
|
|
|
|
|
umount -f ${P1} ${P2} 2>/dev/null
|
|
|
|
|
losetup -D 2>/dev/null
|
|
|
|
|
rmdir ${P1} ${P2} 2>/dev/null
|
|
|
|
|
rm -f ${IMG_NAME} 2>/dev/null
|
2023-02-10 20:37:09 +08:00
|
|
|
|
rm -f sha256sums 2>/dev/null
|
2022-03-25 12:20:39 +08:00
|
|
|
|
sync
|
|
|
|
|
|
|
|
|
|
echo "Successfully updated, automatic restarting..."
|
|
|
|
|
sleep 3
|
|
|
|
|
reboot
|
|
|
|
|
exit 0
|