Merge branch 'main' into linux5

This commit is contained in:
Fabio Belavenuto
2022-12-05 11:02:25 -03:00
57 changed files with 291 additions and 259 deletions

View File

@@ -15,7 +15,7 @@ BOARD_PATH="${CONFIG_DIR}/board/arpl"
echo "Creating image file"
# Create image zeroed
dd if="/dev/zero" of="${IMAGE_FILE}" bs=1M count=500 conv=sync 2>/dev/null
dd if="/dev/zero" of="${IMAGE_FILE}" bs=1M count=1024 conv=sync 2>/dev/null
# Copy grub stage1 to image
dd if="${BOARD_PATH}/grub.bin" of="${IMAGE_FILE}" conv=notrunc,sync 2>/dev/null
# Create partitions on image

View File

@@ -1,5 +1,5 @@
ARPL_VERSION="1.0-beta5"
ARPL_VERSION="1.0-beta7"
# Define paths
TMP_PATH="/tmp"

View File

@@ -4,12 +4,12 @@
. /opt/arpl/include/addons.sh
. /opt/arpl/include/modules.sh
# Check partition 3 space, if < 2GiB uses ramdisk
RAMCACHE=0
# Check partition 3 space, if < 2GiB is necessary clean cache folder
CLEARCACHE=0
LOADER_DISK="`blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1`"
LOADER_DEVICE_NAME=`echo ${LOADER_DISK} | sed 's|/dev/||'`
if [ `cat /sys/block/${LOADER_DEVICE_NAME}/${LOADER_DEVICE_NAME}3/size` -lt 4194304 ]; then
RAMCACHE=1
CLEARCACHE=1
fi
# Get actual IP
@@ -529,6 +529,253 @@ function synoinfoMenu() {
done
}
###############################################################################
# Extract linux and ramdisk files from the DSM .pat
function extractDsmFiles() {
PAT_URL="`readModelKey "${MODEL}" "builds.${BUILD}.pat.url"`"
PAT_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.hash"`"
RAMDISK_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.ramdisk-hash"`"
ZIMAGE_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.zimage-hash"`"
# If we have little disk space, clean cache folder
if [ ${CLEARCACHE} -eq 1 ]; then
echo "Cleaning cache"
rm -rf "${CACHE_PATH}/dl"
fi
mkdir -p "${CACHE_PATH}/dl"
SPACELEFT=`df --block-size=1 | awk '/'${LOADER_DEVICE_NAME}'3/{print$4}'` # Check disk space left
PAT_FILE="${MODEL}-${BUILD}.pat"
PAT_PATH="${CACHE_PATH}/dl/${PAT_FILE}"
EXTRACTOR_PATH="${CACHE_PATH}/extractor"
EXTRACTOR_BIN="syno_extract_system_patch"
OLDPAT_URL="https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat"
if [ -f "${PAT_PATH}" ]; then
echo "${PAT_FILE} cached."
else
echo "Downloading ${PAT_FILE}"
# Discover remote file size
FILESIZE=`curl --insecure -sLI "${PAT_URL}" | grep -i Content-Length | awk '{print$2}'`
if [ 0${FILESIZE} -ge ${SPACELEFT} ]; then
# No disk space to download, change it to RAMDISK
PAT_PATH="${TMP_PATH}/${PAT_FILE}"
fi
STATUS=`curl --insecure -w "%{http_code}" -L "${PAT_URL}" -o "${PAT_PATH}" --progress-bar`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
rm "${PAT_PATH}"
dialog --backtitle "`backtitle`" --title "Error downloading" --aspect 18 \
--msgbox "Check internet or cache disk space" 0 0
return 1
fi
fi
echo -n "Checking hash of ${PAT_FILE}: "
if [ "`sha256sum ${PAT_PATH} | awk '{print$1}'`" != "${PAT_HASH}" ]; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Hash of pat not match, try again!" 0 0
rm -f ${PAT_PATH}
return 1
fi
echo "OK"
rm -rf "${UNTAR_PAT_PATH}"
mkdir "${UNTAR_PAT_PATH}"
echo -n "Disassembling ${PAT_FILE}: "
header="$(od -bcN2 ${PAT_PATH} | head -1 | awk '{print $3}')"
case ${header} in
105)
echo "Uncompressed tar"
isencrypted="no"
;;
213)
echo "Compressed tar"
isencrypted="no"
;;
255)
echo "Encrypted"
isencrypted="yes"
;;
*)
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Could not determine if pat file is encrypted or not, maybe corrupted, try again!" \
0 0
return 1
;;
esac
SPACELEFT=`df --block-size=1 | awk '/'${LOADER_DEVICE_NAME}'3/{print$4}'` # Check disk space left
if [ "${isencrypted}" = "yes" ]; then
# Check existance of extractor
if [ -f "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}" ]; then
echo "Extractor cached."
else
# Extractor not exists, get it.
mkdir -p "${EXTRACTOR_PATH}"
# Check if old pat already downloaded
OLDPAT_PATH="${CACHE_PATH}/dl/DS3622xs+-42218.pat"
if [ ! -f "${OLDPAT_PATH}" ]; then
echo "Downloading old pat to extract synology .pat extractor..."
# Discover remote file size
FILESIZE=`curl --insecure -sLI "${OLDPAT_URL}" | grep -i Content-Length | awk '{print$2}'`
if [ 0${FILESIZE} -ge ${SPACELEFT} ]; then
# No disk space to download, change it to RAMDISK
OLDPAT_PATH="${TMP_PATH}/DS3622xs+-42218.pat"
fi
STATUS=`curl --insecure -w "%{http_code}" -L "${OLDPAT_URL}" -o "${OLDPAT_PATH}" --progress-bar`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
rm "${OLDPAT_PATH}"
dialog --backtitle "`backtitle`" --title "Error downloading" --aspect 18 \
--msgbox "Check internet or cache disk space" 0 0
return 1
fi
fi
# Extract DSM ramdisk file from PAT
rm -rf "${RAMDISK_PATH}"
mkdir -p "${RAMDISK_PATH}"
tar -xf "${OLDPAT_PATH}" -C "${RAMDISK_PATH}" rd.gz >"${LOG_FILE}" 2>&1
if [ $? -ne 0 ]; then
rm "${OLDPAT_PATH}"
rm -rf "${RAMDISK_PATH}"
dialog --backtitle "`backtitle`" --title "Error extracting" --textbox "${LOG_FILE}" 0 0
return 1
fi
rm -f "${TMP_PATH}/DS3622xs+-42218.pat"
# Extract all files from rd.gz
(cd "${RAMDISK_PATH}"; xz -dc < rd.gz | cpio -idm) >/dev/null 2>&1 || true
# Copy only necessary files
for f in libcurl.so.4 libmbedcrypto.so.5 libmbedtls.so.13 libmbedx509.so.1 libmsgpackc.so.2 libsodium.so libsynocodesign-ng-virtual-junior-wins.so.7; do
cp "${RAMDISK_PATH}/usr/lib/${f}" "${EXTRACTOR_PATH}"
done
cp "${RAMDISK_PATH}/usr/syno/bin/scemd" "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}"
rm -rf "${RAMDISK_PATH}"
fi
# Uses the extractor to untar pat file
echo "Extracting..."
LD_LIBRARY_PATH=${EXTRACTOR_PATH} "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}" "${PAT_PATH}" "${UNTAR_PAT_PATH}" || true
else
echo "Extracting..."
tar -xf "${PAT_PATH}" -C "${UNTAR_PAT_PATH}" >"${LOG_FILE}" 2>&1
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Error extracting" --textbox "${LOG_FILE}" 0 0
fi
fi
echo -n "Checking hash of zImage: "
HASH="`sha256sum ${UNTAR_PAT_PATH}/zImage | awk '{print$1}'`"
if [ "${HASH}" != "${ZIMAGE_HASH}" ]; then
sleep 1
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Hash of zImage not match, try again!" 0 0
return 1
fi
echo "OK"
writeConfigKey "zimage-hash" "${ZIMAGE_HASH}" "${USER_CONFIG_FILE}"
echo -n "Checking hash of ramdisk: "
HASH="`sha256sum ${UNTAR_PAT_PATH}/rd.gz | awk '{print$1}'`"
if [ "${HASH}" != "${RAMDISK_HASH}" ]; then
sleep 1
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Hash of ramdisk not match, try again!" 0 0
return 1
fi
echo "OK"
writeConfigKey "ramdisk-hash" "${RAMDISK_HASH}" "${USER_CONFIG_FILE}"
echo -n "Copying files: "
cp "${UNTAR_PAT_PATH}/grub_cksum.syno" "${BOOTLOADER_PATH}"
cp "${UNTAR_PAT_PATH}/GRUB_VER" "${BOOTLOADER_PATH}"
cp "${UNTAR_PAT_PATH}/grub_cksum.syno" "${SLPART_PATH}"
cp "${UNTAR_PAT_PATH}/GRUB_VER" "${SLPART_PATH}"
cp "${UNTAR_PAT_PATH}/zImage" "${ORI_ZIMAGE_FILE}"
cp "${UNTAR_PAT_PATH}/rd.gz" "${ORI_RDGZ_FILE}"
rm -rf "${UNTAR_PAT_PATH}"
echo "OK"
}
###############################################################################
# Where the magic happens!
function make() {
clear
PLATFORM="`readModelKey "${MODEL}" "platform"`"
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
# Check if all addon exists
while IFS="=" read ADDON PARAM; do
[ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KVER}"; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Addon ${ADDON} not found!" 0 0
return 1
fi
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
[ ! -f "${ORI_ZIMAGE_FILE}" -o ! -f "${ORI_RDGZ_FILE}" ] && extractDsmFiles
/opt/arpl/zimage-patch.sh
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "zImage not patched:\n`<"${LOG_FILE}"`" 0 0
return 1
fi
/opt/arpl/ramdisk-patch.sh
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Ramdisk not patched:\n`<"${LOG_FILE}"`" 0 0
return 1
fi
echo "Cleaning"
rm -rf "${UNTAR_PAT_PATH}"
echo "Ready!"
sleep 3
DIRTY=0
return 0
}
###############################################################################
# Advanced menu
function advancedMenu() {
NEXT="l"
while true; do
rm "${TMP_PATH}/menu"
if [ -n "${BUILD}" ]; then
echo "l \"Switch LKM version: \Z4${LKM}\Zn\"" >> "${TMP_PATH}/menu"
echo "o \"Modules\"" >> "${TMP_PATH}/menu"
fi
if loaderIsConfigured; then
echo "r \"Switch direct boot: \Z4${DIRECTBOOT}\Zn\"" >> "${TMP_PATH}/menu"
fi
echo "u \"Edit user config file manually\"" >> "${TMP_PATH}/menu"
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
dialog --default-item ${NEXT} --backtitle "`backtitle`" --title "Advanced" \
--colors --menu "Choose the option" 0 0 0 --file "${TMP_PATH}/menu" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && break
case `<"${TMP_PATH}/resp"` in
l) [ "${LKM}" = "dev" ] && LKM='prod' || LKM='dev'
writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}"
DIRTY=1
NEXT="o"
;;
o) selectModules; NEXT="r" ;;
r) [ "${DIRECTBOOT}" = "false" ] && DIRECTBOOT='true' || DIRECTBOOT='false'
writeConfigKey "directboot" "${DIRECTBOOT}" "${USER_CONFIG_FILE}"
NEXT="u"
;;
u) editUserConfig; NEXT="e" ;;
e) break ;;
esac
done
}
###############################################################################
# Permit user select the modules to include
function selectModules() {
@@ -608,207 +855,6 @@ function selectModules() {
done
}
###############################################################################
# Extract linux and ramdisk files from the DSM .pat
function extractDsmFiles() {
PAT_URL="`readModelKey "${MODEL}" "builds.${BUILD}.pat.url"`"
PAT_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.hash"`"
RAMDISK_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.ramdisk-hash"`"
ZIMAGE_HASH="`readModelKey "${MODEL}" "builds.${BUILD}.pat.zimage-hash"`"
if [ ${RAMCACHE} -eq 0 ]; then
OUT_PATH="${CACHE_PATH}/dl"
echo "Cache in disk"
else
OUT_PATH="${TMP_PATH}/dl"
echo "Cache in ram"
fi
mkdir -p "${OUT_PATH}"
PAT_FILE="${MODEL}-${BUILD}.pat"
PAT_PATH="${OUT_PATH}/${PAT_FILE}"
EXTRACTOR_PATH="${CACHE_PATH}/extractor"
EXTRACTOR_BIN="syno_extract_system_patch"
OLDPAT_URL="https://global.download.synology.com/download/DSM/release/7.0.1/42218/DSM_DS3622xs%2B_42218.pat"
OLDPAT_PATH="${OUT_PATH}/DS3622xs+-42218.pat"
if [ -f "${PAT_PATH}" ]; then
echo "${PAT_FILE} cached."
else
echo "Downloading ${PAT_FILE}"
STATUS=`curl --insecure -w "%{http_code}" -L "${PAT_URL}" -o "${PAT_PATH}" --progress-bar`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Error downloading" --aspect 18 \
--msgbox "Check internet or cache disk space" 0 0
return 1
fi
fi
echo -n "Checking hash of ${PAT_FILE}: "
if [ "`sha256sum ${PAT_PATH} | awk '{print$1}'`" != "${PAT_HASH}" ]; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Hash of pat not match, try again!" 0 0
rm -f ${PAT_PATH}
return 1
fi
echo "OK"
rm -rf "${UNTAR_PAT_PATH}"
mkdir "${UNTAR_PAT_PATH}"
echo -n "Disassembling ${PAT_FILE}: "
header="$(od -bcN2 ${PAT_PATH} | head -1 | awk '{print $3}')"
case ${header} in
105)
echo "Uncompressed tar"
isencrypted="no"
;;
213)
echo "Compressed tar"
isencrypted="no"
;;
255)
echo "Encrypted"
isencrypted="yes"
;;
*)
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Could not determine if pat file is encrypted or not, maybe corrupted, try again!" \
0 0
return 1
;;
esac
if [ "${isencrypted}" = "yes" ]; then
# Check existance of extractor
if [ -f "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}" ]; then
echo "Extractor cached."
else
# Extractor not exists, get it.
mkdir -p "${EXTRACTOR_PATH}"
# Check if old pat already downloaded
if [ ! -f "${OLDPAT_PATH}" ]; then
echo "Downloading old pat to extract synology .pat extractor..."
STATUS=`curl --insecure -w "%{http_code}" -L "${OLDPAT_URL}" -o "${OLDPAT_PATH}" --progress-bar`
if [ $? -ne 0 -o ${STATUS} -ne 200 ]; then
dialog --backtitle "`backtitle`" --title "Error downloading" --aspect 18 \
--msgbox "Check internet or cache disk space" 0 0
return 1
fi
fi
# Extract ramdisk from PAT
rm -rf "${RAMDISK_PATH}"
mkdir -p "${RAMDISK_PATH}"
tar -xf "${OLDPAT_PATH}" -C "${RAMDISK_PATH}" rd.gz >"${LOG_FILE}" 2>&1
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Error extracting" --textbox "${LOG_FILE}" 0 0
fi
# Extract all files from rd.gz
(cd "${RAMDISK_PATH}"; xz -dc < rd.gz | cpio -idm) >/dev/null 2>&1 || true
# Copy only necessary files
for f in libcurl.so.4 libmbedcrypto.so.5 libmbedtls.so.13 libmbedx509.so.1 libmsgpackc.so.2 libsodium.so libsynocodesign-ng-virtual-junior-wins.so.7; do
cp "${RAMDISK_PATH}/usr/lib/${f}" "${EXTRACTOR_PATH}"
done
cp "${RAMDISK_PATH}/usr/syno/bin/scemd" "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}"
rm -rf "${RAMDISK_PATH}"
fi
# Uses the extractor to untar pat file
echo "Extracting..."
LD_LIBRARY_PATH=${EXTRACTOR_PATH} "${EXTRACTOR_PATH}/${EXTRACTOR_BIN}" "${PAT_PATH}" "${UNTAR_PAT_PATH}" || true
else
echo "Extracting..."
tar -xf "${PAT_PATH}" -C "${UNTAR_PAT_PATH}" >"${LOG_FILE}" 2>&1
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Error extracting" --textbox "${LOG_FILE}" 0 0
fi
fi
echo -n "Checking hash of zImage: "
HASH="`sha256sum ${UNTAR_PAT_PATH}/zImage | awk '{print$1}'`"
if [ "${HASH}" != "${ZIMAGE_HASH}" ]; then
sleep 1
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Hash of zImage not match, try again!" 0 0
return 1
fi
echo "OK"
writeConfigKey "zimage-hash" "${ZIMAGE_HASH}" "${USER_CONFIG_FILE}"
echo -n "Checking hash of ramdisk: "
HASH="`sha256sum ${UNTAR_PAT_PATH}/rd.gz | awk '{print$1}'`"
if [ "${HASH}" != "${RAMDISK_HASH}" ]; then
sleep 1
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Hash of ramdisk not match, try again!" 0 0
return 1
fi
echo "OK"
writeConfigKey "ramdisk-hash" "${RAMDISK_HASH}" "${USER_CONFIG_FILE}"
echo -n "Copying files: "
cp "${UNTAR_PAT_PATH}/grub_cksum.syno" "${BOOTLOADER_PATH}"
cp "${UNTAR_PAT_PATH}/GRUB_VER" "${BOOTLOADER_PATH}"
cp "${UNTAR_PAT_PATH}/grub_cksum.syno" "${SLPART_PATH}"
cp "${UNTAR_PAT_PATH}/GRUB_VER" "${SLPART_PATH}"
cp "${UNTAR_PAT_PATH}/zImage" "${ORI_ZIMAGE_FILE}"
cp "${UNTAR_PAT_PATH}/rd.gz" "${ORI_RDGZ_FILE}"
echo "OK"
}
###############################################################################
# Where the magic happens!
function make() {
clear
PLATFORM="`readModelKey "${MODEL}" "platform"`"
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
# Check if all addon exists
while IFS="=" read ADDON PARAM; do
[ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KVER}"; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Addon ${ADDON} not found!" 0 0
return 1
fi
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
[ ! -f "${ORI_ZIMAGE_FILE}" -o ! -f "${ORI_RDGZ_FILE}" ] && extractDsmFiles
/opt/arpl/zimage-patch.sh
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "zImage not patched:\n`<"${LOG_FILE}"`" 0 0
return 1
fi
/opt/arpl/ramdisk-patch.sh
if [ $? -ne 0 ]; then
dialog --backtitle "`backtitle`" --title "Error" --aspect 18 \
--msgbox "Ramdisk not patched:\n`<"${LOG_FILE}"`" 0 0
return 1
fi
echo "Cleaning"
rm -rf "${UNTAR_PAT_PATH}"
echo "Ready!"
sleep 3
DIRTY=0
return 0
}
###############################################################################
# Calls boot.sh to boot into DSM kernel/ramdisk
function boot() {
[ ${DIRTY} -eq 1 ] && dialog --backtitle "`backtitle`" --title "Alert" \
--yesno "Config changed, would you like to rebuild the loader?" 0 0
if [ $? -eq 0 ]; then
make || return
fi
boot.sh
}
###############################################################################
# Permits user edit the user config
function editUserConfig() {
@@ -835,6 +881,17 @@ function editUserConfig() {
DIRTY=1
}
###############################################################################
# Calls boot.sh to boot into DSM kernel/ramdisk
function boot() {
[ ${DIRTY} -eq 1 ] && dialog --backtitle "`backtitle`" --title "Alert" \
--yesno "Config changed, would you like to rebuild the loader?" 0 0
if [ $? -eq 0 ]; then
make || return
fi
boot.sh
}
###############################################################################
# Shows available keymaps to user choose one
function keymapMenu() {
@@ -951,6 +1008,7 @@ function updateMenu() {
unzip /tmp/addons.zip -d /tmp/addons >/dev/null 2>&1
dialog --backtitle "`backtitle`" --title "Update addons" --aspect 18 \
--infobox "Installing new addons" 0 0
rm -Rf "${ADDONS_PATH}/"*
for PKG in `ls /tmp/addons/*.addon`; do
ADDON=`basename ${PKG} | sed 's|.addon||'`
rm -rf "${ADDONS_PATH}/${ADDON}"
@@ -1047,21 +1105,21 @@ while true; do
echo "a \"Addons\"" >> "${TMP_PATH}/menu"
echo "x \"Cmdline menu\"" >> "${TMP_PATH}/menu"
echo "i \"Synoinfo menu\"" >> "${TMP_PATH}/menu"
echo "l \"Switch LKM version: \Z4${LKM}\Zn\"" >> "${TMP_PATH}/menu"
echo "o \"Modules\"" >> "${TMP_PATH}/menu"
echo "d \"Build the loader\"" >> "${TMP_PATH}/menu"
fi
fi
echo "v \"Advanced menu\"" >> "${TMP_PATH}/menu"
if loaderIsConfigured; then
echo "r \"Switch direct boot: \Z4${DIRECTBOOT}\Zn\"">> "${TMP_PATH}/menu"
echo "b \"Boot the loader\" " >> "${TMP_PATH}/menu"
fi
echo "u \"Edit user config file manually\"" >> "${TMP_PATH}/menu"
echo "k \"Choose a keymap\" " >> "${TMP_PATH}/menu"
[ ${RAMCACHE} -eq 0 -a -d "${CACHE_PATH}/dl" ] && echo "c \"Clean disk cache\"" >> "${TMP_PATH}/menu"
if [ ${CLEARCACHE} -eq 0 -a -d "${CACHE_PATH}/dl" ]; then
echo "c \"Clean disk cache\"" >> "${TMP_PATH}/menu"
fi
echo "p \"Update menu\"" >> "${TMP_PATH}/menu"
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
dialog --clear --default-item ${NEXT} --backtitle "`backtitle`" --colors \
dialog --default-item ${NEXT} --backtitle "`backtitle`" --colors \
--menu "Choose the option" 0 0 0 --file "${TMP_PATH}/menu" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && break
@@ -1071,20 +1129,10 @@ while true; do
s) serialMenu; NEXT="a" ;;
a) addonMenu; NEXT="x" ;;
x) cmdlineMenu; NEXT="i" ;;
i) synoinfoMenu; NEXT="l" ;;
l) [ "${LKM}" = "dev" ] && LKM='prod' || LKM='dev'
writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}"
DIRTY=1
NEXT="o"
;;
o) selectModules; NEXT="d" ;;
d) make; NEXT="r" ;;
r) [ "${DIRECTBOOT}" = "false" ] && DIRECTBOOT='true' || DIRECTBOOT='false'
writeConfigKey "directboot" "${DIRECTBOOT}" "${USER_CONFIG_FILE}"
NEXT="b"
;;
i) synoinfoMenu; NEXT="d" ;;
d) make; NEXT="v" ;;
v) advancedMenu; NEXT="b" ;;
b) boot ;;
u) editUserConfig; NEXT="u" ;;
k) keymapMenu ;;
c) dialog --backtitle "`backtitle`" --title "Cleaning" --aspect 18 \
--prgbox "rm -rfv \"${CACHE_PATH}/dl\"" 0 0 ;;