arc: rework

Signed-off-by: AuxXxilium <info@auxxxilium.tech>
This commit is contained in:
AuxXxilium
2024-07-01 19:26:51 +02:00
parent d97b820cd6
commit 50bee6f3c7
4 changed files with 208 additions and 144 deletions

View File

@@ -737,6 +737,8 @@ function backupMenu() {
2>"${TMP_PATH}/resp"
resp=$(cat ${TMP_PATH}/resp)
[ -z "${resp}" ] && return 1
# Check for compatibility
compatboot
if [ ${resp} -eq 1 ]; then
arcSummary
elif [ ${resp} -eq 2 ]; then
@@ -815,20 +817,23 @@ function updateMenu() {
while true; do
dialog --backtitle "$(backtitle)" --cancel-label "Exit" \
--menu "Choose an Option" 0 0 0 \
1 "Full-Upgrade Loader" \
2 "Update Addons" \
3 "Update Configs" \
4 "Update LKMs" \
5 "Update Modules" \
6 "Update Patches" \
7 "Automated Update Mode" \
1 "Automated Update Mode" \
2 "Full-Upgrade Loader (reflash)" \
3 "Update Loader" \
4 "Update Addons" \
5 "Update Configs" \
6 "Update LKMs" \
7 "Update Modules" \
8 "Update Patches" \
2>"${TMP_PATH}/resp"
[ $? -ne 0 ] && break
case "$(cat ${TMP_PATH}/resp)" in
1)
dialog --backtitle "$(backtitle)" --title "Upgrade Loader" --aspect 18 \
--infobox "Checking latest version..." 0 0
ACTUALVERSION="${ARC_VERSION}"
dialog --backtitle "$(backtitle)" --title "Automated Update" --aspect 18 \
--msgbox "Loader will proceed Automated Update Mode.\nPlease wait until progress is finished!" 0 0
. ${ARC_PATH}/update.sh
;;
2)
# Ask for Tag
TAG=""
dialog --clear --backtitle "$(backtitle)" --title "Upgrade Loader" \
@@ -836,19 +841,11 @@ function updateMenu() {
1 "Latest" \
2 "Select Version" \
2>"${TMP_PATH}/opts"
[ $? -ne 0 ] && continue
opts=$(cat ${TMP_PATH}/opts)
[ -z "${opts}" ] && return 1
if [ ${opts} -eq 1 ]; then
if [ "${ARCNIC}" == "auto" ]; then
TAG="$(curl -m 5 -w "%{http_code}" -skL "https://api.github.com/repos/AuxXxilium/arc/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
else
TAG="$(curl --interface ${ARCNIC} -m 5 -w "%{http_code}" -skL "https://api.github.com/repos/AuxXxilium/arc/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
fi
if [ $? -ne 0 ] || [ ${STATUS} -ne 200 ] || [ -z "${TAG}" ]; then
dialog --backtitle "$(backtitle)" --title "Upgrade Loader" --aspect 18 \
--msgbox "Error checking new Version!" 0 0
return 1
fi
TAG=""
elif [ ${opts} -eq 2 ]; then
dialog --backtitle "$(backtitle)" --title "Upgrade Loader" \
--inputbox "Type the Version!" 0 0 \
@@ -856,50 +853,36 @@ function updateMenu() {
TAG=$(cat "${TMP_PATH}/input")
[ -z "${TAG}" ] && return 1
fi
dialog --backtitle "$(backtitle)" --title "Upgrade Loader" --aspect 18 \
--infobox "Downloading ${TAG}" 0 0
if [ "${ACTUALVERSION}" == "${TAG}" ]; then
dialog --backtitle "$(backtitle)" --title "Upgrade Loader" --aspect 18 \
--yesno "No new version. Actual version is ${ACTUALVERSION}\nForce update?" 0 0
[ $? -ne 0 ] && return 1
fi
( # Download update file
if [ "${ARCNIC}" == "auto" ]; then
curl -#kL "https://github.com/AuxXxilium/arc/releases/download/${TAG}/arc-${TAG}.img.zip" -o "${TMP_PATH}/arc-${TAG}.img.zip" 2>&1 | while IFS= read -r -n1 char; do
[[ $char =~ [0-9] ]] && keep=1 ;
[[ $char == % ]] && echo "Download: $progress%" && progress="" && keep=0 ;
[[ $keep == 1 ]] && progress="$progress$char" ;
done
else
curl --interface ${ARCNIC} -#kL "https://github.com/AuxXxilium/arc/releases/download/${TAG}/arc-${TAG}.img.zip" -o "${TMP_PATH}/arc-${TAG}.img.zip" 2>&1 | while IFS= read -r -n1 char; do
[[ $char =~ [0-9] ]] && keep=1 ;
[[ $char == % ]] && echo "Download: $progress%" && progress="" && keep=0 ;
[[ $keep == 1 ]] && progress="$progress$char" ;
done
fi
if [ -f "${TMP_PATH}/arc-${TAG}.img.zip" ]; then
echo "Downloading Updatefile successful!"
else
echo "Error downloading Updatefile!"
sleep 5
return 1
fi
unzip -oq "${TMP_PATH}/arc-${TAG}.img.zip" -d "${TMP_PATH}"
rm -f "${TMP_PATH}/arc-${TAG}.img.zip" >/dev/null
echo "Installing new Loader Image..."
# Process complete update
umount "${PART1_PATH}" "${PART2_PATH}" "${PART3_PATH}"
dd if="${TMP_PATH}/arc.img" of=$(blkid | grep 'LABEL="ARC3"' | cut -d3 -f1) bs=1M conv=fsync
# Ask for Boot
rm -f "${TMP_PATH}/arc.img" >/dev/null
) 2>&1 | dialog --backtitle "$(backtitle)" --title "Full-Upgrade Loader" \
--progressbox "Upgrading ..." 20 70
dialog --backtitle "$(backtitle)" --title "Upgrade Loader" --aspect 18 \
--yesno "Arc Upgrade successful. New Version: ${TAG}\nUse Recover from DSM to get your old Config.\nReboot?" 0 0
[ $? -ne 0 ] && return 1
upgradeLoader "${TAG}"
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
exec reboot && exit 0
;;
2)
3)
# Ask for Tag
TAG=""
dialog --clear --backtitle "$(backtitle)" --title "Update Loader" \
--menu "Which Version?" 0 0 0 \
1 "Latest" \
2 "Select Version" \
2>"${TMP_PATH}/opts"
[ $? -ne 0 ] && continue
opts=$(cat ${TMP_PATH}/opts)
[ -z "${opts}" ] && return 1
if [ ${opts} -eq 1 ]; then
TAG=""
elif [ ${opts} -eq 2 ]; then
dialog --backtitle "$(backtitle)" --title "Update Loader" \
--inputbox "Type the Version!" 0 0 \
2>"${TMP_PATH}/input"
TAG=$(cat "${TMP_PATH}/input")
[ -z "${TAG}" ] && return 1
fi
updateLoader "${TAG}"
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
4)
# Ask for Tag
TAG=""
dialog --clear --backtitle "$(backtitle)" --title "Update Addons" \
@@ -923,7 +906,7 @@ function updateMenu() {
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
3)
5)
# Ask for Tag
TAG=""
dialog --clear --backtitle "$(backtitle)" --title "Update Configs" \
@@ -948,7 +931,7 @@ function updateMenu() {
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
4)
6)
# Ask for Tag
TAG=""
dialog --clear --backtitle "$(backtitle)" --title "Update LKMs" \
@@ -971,7 +954,7 @@ function updateMenu() {
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
5)
7)
# Ask for Tag
TAG=""
dialog --clear --backtitle "$(backtitle)" --title "Update Modules" \
@@ -994,7 +977,7 @@ function updateMenu() {
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
6)
8)
# Ask for Tag
TAG=""
dialog --clear --backtitle "$(backtitle)" --title "Update Patches" \
@@ -1017,11 +1000,6 @@ function updateMenu() {
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
7)
dialog --backtitle "$(backtitle)" --title "Automated Update" --aspect 18 \
--msgbox "Loader will proceed Automated Update Mode.\nPlease wait until progress is finished!" 0 0
. ${ARC_PATH}/update.sh
;;
esac
done
return
@@ -2078,7 +2056,7 @@ function governorMenu () {
function governorSelection () {
rm -f "${TMP_PATH}/opts" >/dev/null
touch "${TMP_PATH}/opts"
if [ "${CPUFREQ}" == "true" ]; then
if [ "${CUSTOM}" == "false" ]; then
# Selectable CPU governors
[ "${PLATFORM}" == "epyc7002" ] && echo -e "schedutil \"use schedutil to scale frequency *\"" >>"${TMP_PATH}/opts"
[ "${PLATFORM}" != "epyc7002" ] && echo -e "ondemand \"use ondemand to scale frequency *\"" >>"${TMP_PATH}/opts"
@@ -2086,17 +2064,26 @@ function governorSelection () {
echo -e "performance \"always run at max frequency\"" >>"${TMP_PATH}/opts"
echo -e "powersave \"always run at lowest frequency\"" >>"${TMP_PATH}/opts"
echo -e "userspace \"use userspace settings to scale frequency\"" >>"${TMP_PATH}/opts"
dialog --backtitle "$(backtitle)" --title "DSM Frequency Scaling" \
dialog --backtitle "$(backtitle)" --title "CPU Frequency Scaling" \
--menu "Choose a Governor\n* Recommended Option" 0 0 0 --file "${TMP_PATH}/opts" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
resp=$(cat ${TMP_PATH}/resp)
[ -z "${resp}" ] && return
CPUGOVERNOR=${resp}
writeConfigKey "arc.governor" "${CPUGOVERNOR}" "${USER_CONFIG_FILE}"
else
dialog --backtitle "$(backtitle)" --title "DSM Frequency Scaling" \
[ "${PLATFORM}" == "epyc7002" ] && CPUGOVERNOR="schedutil"
[ "${PLATFORM}" != "epyc7002" ] && CPUGOVERNOR="ondemand"
fi
writeConfigKey "arc.governor" "${CPUGOVERNOR}" "${USER_CONFIG_FILE}"
else
if [ "${CUSTOM}" == "false" ]; then
dialog --backtitle "$(backtitle)" --title "CPU Frequency Scaling" \
--msgbox "CPU frequency scaling not supported!" 0 0
else
dialog --backtitle "$(backtitle)" --title "CPU Frequency Scaling" \
--infobox "CPU frequency scaling not supported!" 0 0
sleep 5
fi
}

View File

@@ -6,6 +6,7 @@
. ${ARC_PATH}/include/functions.sh
. ${ARC_PATH}/include/addons.sh
. ${ARC_PATH}/include/compat.sh
. ${ARC_PATH}/include/modules.sh
. ${ARC_PATH}/include/storage.sh
. ${ARC_PATH}/include/network.sh
@@ -209,32 +210,42 @@ function arcModel() {
if [ "${CUSTOM}" == "false" ]; then
PRODUCTVER=""
MODEL="${resp}"
PLATFORM="$(grep -w "${MODEL}" "${TMP_PATH}/modellist" | awk '{print $2}' | head -n 1)"
MODELID=$(echo ${MODEL} | sed 's/d$/D/; s/rp$/RP/; s/rp+/RP+/')
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
writeConfigKey "productver" "" "${USER_CONFIG_FILE}"
writeConfigKey "addons" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "cmdline" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.confdone" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.emmcboot" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.hddsort" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.kernel" "official" "${USER_CONFIG_FILE}"
writeConfigKey "arc.odp" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.patch" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.paturl" "" "${USER_CONFIG_FILE}"
writeConfigKey "arc.pathash" "" "${USER_CONFIG_FILE}"
writeConfigKey "arc.remap" "" "${USER_CONFIG_FILE}"
writeConfigKey "arc.sn" "" "${USER_CONFIG_FILE}"
writeConfigKey "modelid" "${MODELID}" "${USER_CONFIG_FILE}"
writeConfigKey "platform" "${PLATFORM}" "${USER_CONFIG_FILE}"
writeConfigKey "ramdisk-hash" "" "${USER_CONFIG_FILE}"
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "zimage-hash" "" "${USER_CONFIG_FILE}"
else
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
PLATFORM="$(grep -w "${MODEL}" "${TMP_PATH}/modellist" | awk '{print $2}' | head -n 1)"
MODELID=$(echo ${MODEL} | sed 's/d$/D/; s/rp$/RP/; s/rp+/RP+/')
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.confdone" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.paturl" "" "${USER_CONFIG_FILE}"
writeConfigKey "arc.pathash" "" "${USER_CONFIG_FILE}"
writeConfigKey "arc.remap" "" "${USER_CONFIG_FILE}"
writeConfigKey "modelid" "${MODELID}" "${USER_CONFIG_FILE}"
writeConfigKey "platform" "${PLATFORM}" "${USER_CONFIG_FILE}"
writeConfigKey "ramdisk-hash" "" "${USER_CONFIG_FILE}"
writeConfigKey "zimage-hash" "" "${USER_CONFIG_FILE}"
fi
PLATFORM="$(grep -w "${MODEL}" "${TMP_PATH}/modellist" | awk '{print $2}' | head -n 1)"
MODELID=$(echo ${MODEL} | sed 's/d$/D/; s/rp$/RP/; s/rp+/RP+/')
writeConfigKey "addons" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.confdone" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.emmcboot" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.hddsort" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.kernel" "official" "${USER_CONFIG_FILE}"
writeConfigKey "arc.odp" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.patch" "false" "${USER_CONFIG_FILE}"
writeConfigKey "arc.paturl" "" "${USER_CONFIG_FILE}"
writeConfigKey "arc.pathash" "" "${USER_CONFIG_FILE}"
writeConfigKey "arc.remap" "" "${USER_CONFIG_FILE}"
writeConfigKey "arc.sn" "" "${USER_CONFIG_FILE}"
writeConfigKey "cmdline" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "modelid" "${MODELID}" "${USER_CONFIG_FILE}"
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "platform" "${PLATFORM}" "${USER_CONFIG_FILE}"
writeConfigKey "ramdisk-hash" "" "${USER_CONFIG_FILE}"
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
writeConfigKey "zimage-hash" "" "${USER_CONFIG_FILE}"
ARCPATCH="$(readConfigKey "arc.patch" "${USER_CONFIG_FILE}")"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
CONFDONE="$(readConfigKey "arc.confdone" "${USER_CONFIG_FILE}")"
@@ -296,7 +307,6 @@ function arcVersion() {
else
KVERP="${KVER}"
fi
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
# Rewrite modules
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
cp -f "${ARC_PATH}/include/modulelist" "${USER_UP_PATH}/modulelist"
@@ -333,10 +343,11 @@ function arcPatch() {
CUSTOM="$(readConfigKey "arc.custom" "${USER_CONFIG_FILE}")"
ARCCONF="$(readConfigKey "${MODEL}.serial" "${S_FILE}" 2>/dev/null)"
# Check for Custom Build
if [ "${CUSTOM}" == "true" ]; then
SN="$(readConfigKey "arc.sn" "${USER_CONFIG_FILE}")"
if [ "${CUSTOM}" == "true" ] && [ -z "${SN}" ]; then
SN=$(generateSerial "${MODEL}" false)
writeConfigKey "arc.patch" "false" "${USER_CONFIG_FILE}"
else
elif [ "${CUSTOM}" == "false" ]; then
if [ -n "${ARCCONF}" ]; then
dialog --clear --backtitle "$(backtitle)" \
--nocancel --title "Arc Patch"\
@@ -438,14 +449,15 @@ function arcSettings() {
sleep 2
getmapSelection
fi
# Check for CPU Frequency Scaling
if [ "${CPUFREQ}" == "true" ]; then
# Select Governor for DSM
dialog --backtitle "$(backtitle)" --colors --title "CPU Frequency Scaling" \
--infobox "Generating Governor Table..." 3 40
governorSelection
fi
# Check for Custom Build
if [ "${CUSTOM}" == "false" ]; then
if [ "${CPUFREQ}" == "true" ]; then
# Select Governor for DSM
dialog --backtitle "$(backtitle)" --colors --title "DSM Frequency Scaling" \
--infobox "Generating Governor Table..." 3 40
governorSelection
fi
# Select Addons
dialog --backtitle "$(backtitle)" --colors --title "DSM Addons" \
--infobox "Loading Addons Table..." 3 40
@@ -714,7 +726,7 @@ function make() {
fi
fi
fi
elif [ "${OFFLINE}" == "true" ]; then
elif [ "${OFFLINE}" == "true" ] && [ "${CUSTOM}" == "false" ]; then
if [ -f "${ORI_ZIMAGE_FILE}" ] && [ -f "${ORI_RDGZ_FILE}" ]; then
rm -f "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}" 2>/dev/null || true
VALID="true"
@@ -754,13 +766,20 @@ function make() {
sleep 5
fi
fi
else
dialog --backtitle "$(backtitle)" --title "Arc Build" --aspect 18 \
--infobox "Can't build Custom Loader while Offline!\nExit." 4 40
VALID="false"
sleep 5
fi
# Copy DSM Files to Locations if DSM Files not found
if [ ! -f "${ORI_ZIMAGE_FILE}" ] || [ ! -f "${ORI_RDGZ_FILE}" ]; then
if copyDSMFiles "${UNTAR_PAT_PATH}" 2>/dev/null; then
VALID="true"
else
VALID="false"
if [ "${VALID}" == "true" ]; then
if [ ! -f "${ORI_ZIMAGE_FILE}" ] || [ ! -f "${ORI_RDGZ_FILE}" ]; then
if copyDSMFiles "${UNTAR_PAT_PATH}" 2>/dev/null; then
VALID="true"
else
VALID="false"
fi
fi
fi
if [ -f "${ORI_ZIMAGE_FILE}" ] && [ -f "${ORI_RDGZ_FILE}" ] && [ "${VALID}" == "true" ]; then
@@ -771,6 +790,8 @@ function make() {
--progressbox "Doing the Magic..." 20 70
fi
if [ -f "${ORI_ZIMAGE_FILE}" ] && [ -f "${ORI_RDGZ_FILE}" ] && [ -f "${MOD_ZIMAGE_FILE}" ] && [ -f "${MOD_RDGZ_FILE}" ]; then
writeConfigKey "arc.builddone" "true" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
arcFinish
else
dialog --backtitle "$(backtitle)" --title "Build Loader" --aspect 18 \
@@ -788,13 +809,11 @@ function make() {
function arcFinish() {
# Verify Files exist
CUSTOM="$(readConfigKey "arc.custom" "${USER_CONFIG_FILE}")"
# Build is done
rm -f "${LOG_FILE}" >/dev/null
writeConfigKey "arc.builddone" "true" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
# Check for Automated Mode
if [ "${CUSTOM}" == "true" ]; then
boot && exit 0
[ ! -f "${PART3_PATH}/automated" ] && echo "${ARC_VERSION}-${MODEL}-${PRODUCTVER}-custom" >"${PART3_PATH}/automated"
boot
elif [ "${CUSTOM}" == "false" ]; then
[ -f "${PART3_PATH}/automated" ] && rm -f "${PART3_PATH}/automated" >/dev/null
# Ask for Boot
@@ -806,7 +825,7 @@ function arcFinish() {
resp=$(cat ${TMP_PATH}/resp)
[ -z "${resp}" ] && return 1
if [ ${resp} -eq 1 ]; then
boot && exit 0
boot
elif [ ${resp} -eq 2 ]; then
return 0
fi
@@ -982,7 +1001,7 @@ else
0) decryptMenu; NEXT="0" ;;
1) arcModel; NEXT="2" ;;
2) make; NEXT="3" ;;
3) boot && exit 0 ;;
3) boot; NEXT="3" ;;
# Info Section
a) sysinfo; NEXT="a" ;;
A) networkdiag; NEXT="A" ;;

View File

@@ -3,10 +3,9 @@
. ${ARC_PATH}/include/functions.sh
###############################################################################
# Update Loader
function updateLoader() {
# Upgrade Loader
function upgradeLoader () {
(
local CUSTOM="$(readConfigKey "arc.custom" "${USER_CONFIG_FILE}")"
local ARCNIC="$(readConfigKey "arc.nic" "${USER_CONFIG_FILE}")"
TAG=""
if [ -z "${1}" ]; then
@@ -14,9 +13,9 @@ function updateLoader() {
idx=0
while [ ${idx} -le 5 ]; do # Loop 5 times, if successful, break
if [ "${ARCNIC}" == "auto" ]; then
TAG="$(curl -m 10 -skL "https://api.github.com/repos/AuxXxilium/arc/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
TAG="$(curl -m 5 -skL "https://api.github.com/repos/AuxXxilium/arc/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
else
TAG="$(curl --interface ${ARCNIC} -m 10 -skL "https://api.github.com/repos/AuxXxilium/arc/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
TAG="$(curl --interface ${ARCNIC} -m 5 -skL "https://api.github.com/repos/AuxXxilium/arc/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
fi
if [ -n "${TAG}" ]; then
echo "New Version: ${TAG}"
@@ -31,7 +30,73 @@ function updateLoader() {
updateFailed
fi
else
TAG=${1}
TAG="${1}"
fi
# Download update file
echo "Downloading ${TAG}"
if [ "${ARCNIC}" == "auto" ]; then
curl -#kL "https://github.com/AuxXxilium/arc/releases/download/${TAG}/arc-${TAG}.img.zip" -o "${TMP_PATH}/arc-${TAG}.img.zip" 2>&1 | while IFS= read -r -n1 char; do
[[ $char =~ [0-9] ]] && keep=1 ;
[[ $char == % ]] && echo "Download: $progress%" && progress="" && keep=0 ;
[[ $keep == 1 ]] && progress="$progress$char" ;
done
else
curl --interface ${ARCNIC} -#kL "https://github.com/AuxXxilium/arc/releases/download/${TAG}/arc-${TAG}.img.zip" -o "${TMP_PATH}/arc-${TAG}.img.zip" 2>&1 | while IFS= read -r -n1 char; do
[[ $char =~ [0-9] ]] && keep=1 ;
[[ $char == % ]] && echo "Download: $progress%" && progress="" && keep=0 ;
[[ $keep == 1 ]] && progress="$progress$char" ;
done
fi
if [ -f "${TMP_PATH}/arc-${TAG}.img.zip" ]; then
echo "Downloading Upgradefile successful!"
else
echo "Error downloading Upgradefile!"
sleep 5
return 1
fi
unzip -oq "${TMP_PATH}/arc-${TAG}.img.zip" -d "${TMP_PATH}"
rm -f "${TMP_PATH}/arc-${TAG}.img.zip" >/dev/null
echo "Installing new Loader Image..."
# Process complete update
umount "${PART1_PATH}" "${PART2_PATH}" "${PART3_PATH}"
dd if="${TMP_PATH}/arc.img" of=$(blkid | grep 'LABEL="ARC3"' | cut -d3 -f1) bs=1M conv=fsync
# Ask for Boot
rm -f "${TMP_PATH}/arc.img" >/dev/null
echo "Upgrade done! -> Rebooting..."
sleep 2
) 2>&1 | dialog --backtitle "$(backtitle)" --title "Upgrade Loader" \
--progressbox "Upgrading Loader..." 20 70
}
###############################################################################
# Update Loader
function updateLoader() {
(
local ARCNIC="$(readConfigKey "arc.nic" "${USER_CONFIG_FILE}")"
TAG=""
if [ -z "${1}" ]; then
# Check for new Version
idx=0
while [ ${idx} -le 5 ]; do # Loop 5 times, if successful, break
if [ "${ARCNIC}" == "auto" ]; then
TAG="$(curl -m 5 -skL "https://api.github.com/repos/AuxXxilium/arc/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
else
TAG="$(curl --interface ${ARCNIC} -m 5 -skL "https://api.github.com/repos/AuxXxilium/arc/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
fi
if [ -n "${TAG}" ]; then
echo "New Version: ${TAG}"
break
fi
sleep 3
idx=$((${idx} + 1))
done
if [ -z "${TAG}" ]; then
echo "Error checking new Version!"
sleep 5
updateFailed
fi
else
TAG="${1}"
fi
# Download update file
echo "Downloading ${TAG}"
@@ -76,7 +141,6 @@ function updateLoader() {
# Update Addons
function updateAddons() {
(
local CUSTOM="$(readConfigKey "arc.custom" "${USER_CONFIG_FILE}")"
local ARCNIC="$(readConfigKey "arc.nic" "${USER_CONFIG_FILE}")"
TAG=""
if [ -z "${1}" ]; then
@@ -84,9 +148,9 @@ function updateAddons() {
idx=0
while [ ${idx} -le 5 ]; do # Loop 5 times, if successful, break
if [ "${ARCNIC}" == "auto" ]; then
TAG="$(curl -m 10 -skL "https://api.github.com/repos/AuxXxilium/arc-addons/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
TAG="$(curl -m 5 -skL "https://api.github.com/repos/AuxXxilium/arc-addons/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
else
TAG="$(curl --interface ${ARCNIC} -m 10 -skL "https://api.github.com/repos/AuxXxilium/arc-addons/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
TAG="$(curl --interface ${ARCNIC} -m 5 -skL "https://api.github.com/repos/AuxXxilium/arc-addons/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
fi
if [ -n "${TAG}" ]; then
echo "New Version: ${TAG}"
@@ -101,7 +165,7 @@ function updateAddons() {
updateFailed
fi
else
TAG=${1}
TAG="${1}"
fi
# Download update file
echo "Downloading ${TAG}"
@@ -136,7 +200,7 @@ function updateAddons() {
rm -f "${F}"
done
else
echo "Error getting new Version!"
echo "Error extracting new Version!"
sleep 5
updateFailed
fi
@@ -151,7 +215,6 @@ function updateAddons() {
# Update Patches
function updatePatches() {
(
local CUSTOM="$(readConfigKey "arc.custom" "${USER_CONFIG_FILE}")"
local ARCNIC="$(readConfigKey "arc.nic" "${USER_CONFIG_FILE}")"
TAG=""
if [ -z "${1}" ]; then
@@ -159,9 +222,9 @@ function updatePatches() {
idx=0
while [ ${idx} -le 5 ]; do # Loop 5 times, if successful, break
if [ "${ARCNIC}" == "auto" ]; then
TAG="$(curl -m 10 -skL "https://api.github.com/repos/AuxXxilium/arc-patches/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
TAG="$(curl -m 5 -skL "https://api.github.com/repos/AuxXxilium/arc-patches/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
else
TAG="$(curl --interface ${ARCNIC} -m 10 -skL "https://api.github.com/repos/AuxXxilium/arc-patches/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
TAG="$(curl --interface ${ARCNIC} -m 5 -skL "https://api.github.com/repos/AuxXxilium/arc-patches/releases" | jq -r ".[].tag_name" | sort -rV | head -1)"
fi
if [ -n "${TAG}" ]; then
echo "New Version: ${TAG}"
@@ -176,7 +239,7 @@ function updatePatches() {
updateFailed
fi
else
TAG=${1}
TAG="${1}"
fi
# Download update file
echo "Downloading ${TAG}"
@@ -218,7 +281,6 @@ function updatePatches() {
# Update Modules
function updateModules() {
(
local CUSTOM="$(readConfigKey "arc.custom" "${USER_CONFIG_FILE}")"
local ARCNIC="$(readConfigKey "arc.nic" "${USER_CONFIG_FILE}")"
TAG=""
if [ -z "${1}" ]; then
@@ -243,7 +305,7 @@ function updateModules() {
updateFailed
fi
else
TAG=${1}
TAG="${1}"
fi
# Download update file
echo "Downloading ${TAG}"
@@ -289,7 +351,7 @@ function updateModules() {
done < <(getAllModules "${PLATFORM}" "${KVERP}")
fi
else
echo "Error getting new Version!"
echo "Error extracting new Version!"
sleep 5
updateFailed
fi
@@ -304,7 +366,6 @@ function updateModules() {
# Update Configs
function updateConfigs() {
(
local CUSTOM="$(readConfigKey "arc.custom" "${USER_CONFIG_FILE}")"
local ARCNIC="$(readConfigKey "arc.nic" "${USER_CONFIG_FILE}")"
TAG=""
if [ -z "${1}" ]; then
@@ -329,7 +390,7 @@ function updateConfigs() {
updateFailed
fi
else
TAG=${1}
TAG="${1}"
fi
# Download update file
echo "Downloading ${TAG}"
@@ -356,7 +417,7 @@ function updateConfigs() {
unzip -oq "${TMP_PATH}/configs.zip" -d "${MODEL_CONFIG_PATH}"
rm -f "${TMP_PATH}/configs.zip"
else
echo "Error getting new Version!"
echo "Error extracting new Version!"
sleep 5
updateFailed
fi
@@ -371,7 +432,6 @@ function updateConfigs() {
# Update LKMs
function updateLKMs() {
(
local CUSTOM="$(readConfigKey "arc.custom" "${USER_CONFIG_FILE}")"
local ARCNIC="$(readConfigKey "arc.nic" "${USER_CONFIG_FILE}")"
TAG=""
if [ -z "${1}" ]; then
@@ -396,7 +456,7 @@ function updateLKMs() {
updateFailed
fi
else
TAG=${1}
TAG="${1}"
fi
# Download update file
echo "Downloading ${TAG}"
@@ -421,7 +481,7 @@ function updateLKMs() {
unzip -oq "${TMP_PATH}/rp-lkms.zip" -d "${LKMS_PATH}"
rm -f "${TMP_PATH}/rp-lkms.zip"
else
echo "Error getting new Version!"
echo "Error extracting new Version!"
sleep 5
updateFailed
fi

View File

@@ -32,9 +32,6 @@ offlineCheck
# Get DSM Data from Config
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
KEYMAP="$(readConfigKey "keymap" "${USER_CONFIG_FILE}")"
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
if [ -n "${MODEL}" ]; then
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
DT="$(readConfigKey "platforms.${PLATFORM}.dt" "${P_FILE}")"
@@ -96,6 +93,7 @@ function arcUpdate() {
###############################################################################
# Calls boot.sh to boot into DSM kernel/ramdisk
function boot() {
CONFDONE="$(readConfigKey "arc.confdone" "${USER_CONFIG_FILE}")"
if [ "${CONFDONE}" == "true" ]; then
dialog --backtitle "$(backtitle)" --title "Arc Boot" \
--infobox "Rebooting to automated Build Mode...\nPlease stay patient!" 4 30