This commit is contained in:
Ing 2024-02-04 17:20:31 +08:00
parent 0bdd33b41c
commit f8dfce09c7
17 changed files with 2556 additions and 2129 deletions

View File

@ -40,16 +40,13 @@ fi
# Check if DSM ramdisk changed, patch it if necessary # Check if DSM ramdisk changed, patch it if necessary
RAMDISK_HASH="$(readConfigKey "ramdisk-hash" "${USER_CONFIG_FILE}")" RAMDISK_HASH="$(readConfigKey "ramdisk-hash" "${USER_CONFIG_FILE}")"
RAMDISK_HASH_CUR="$(sha256sum "${ORI_RDGZ_FILE}" | awk '{print $1}')" if [ -f ${PART1_PATH}/.build -o "$(sha256sum "${ORI_RDGZ_FILE}" | awk '{print $1}')" != "${RAMDISK_HASH}" ]; then
if [ -f ${PART1_PATH}/.build -o "${RAMDISK_HASH_CUR}" != "${RAMDISK_HASH}" ]; then
echo -e "\033[1;43m$(TEXT "DSM Ramdisk changed")\033[0m" echo -e "\033[1;43m$(TEXT "DSM Ramdisk changed")\033[0m"
${WORK_PATH}/ramdisk-patch.sh ${WORK_PATH}/ramdisk-patch.sh
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo -e "\033[1;43m$(TEXT "Ramdisk not patched,\nPlease upgrade the bootloader version and try again.\nPatch error:\n")$(<"${LOG_FILE}")\033[0m" echo -e "\033[1;43m$(TEXT "Ramdisk not patched,\nPlease upgrade the bootloader version and try again.\nPatch error:\n")$(<"${LOG_FILE}")\033[0m"
exit 1 exit 1
fi fi
# Update SHA256 hash
writeConfigKey "ramdisk-hash" "${RAMDISK_HASH_CUR}" "${USER_CONFIG_FILE}"
fi fi
[ -f ${PART1_PATH}/.build ] && rm -f ${PART1_PATH}/.build [ -f ${PART1_PATH}/.build ] && rm -f ${PART1_PATH}/.build
@ -58,18 +55,20 @@ MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")" BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")" SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")" LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
DMI="$(dmesg | grep -i "DMI:" | sed 's/\[.*\] DMI: //i')" DMI="$(dmesg | grep -i "DMI:" | sed 's/\[.*\] DMI: //i')"
CPU="$(echo $(cat /proc/cpuinfo | grep 'model name' | uniq | awk -F':' '{print $2}'))" CPU="$(echo $(cat /proc/cpuinfo | grep 'model name' | uniq | awk -F':' '{print $2}'))"
MEM="$(free -m | grep -i mem | awk '{print$2}') MB" MEM="$(free -m | grep -i mem | awk '{print$2}') MB"
echo -e "$(TEXT "Model:") \033[1;36m${MODEL}\033[0m" echo -e "$(TEXT "Model: ") \033[1;36m${MODEL}\033[0m"
echo -e "$(TEXT "Build:") \033[1;36m${PRODUCTVER}(${BUILDNUM}$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}"))\033[0m" echo -e "$(TEXT "Version: ") \033[1;36m${PRODUCTVER}(${BUILDNUM}$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}"))\033[0m"
echo -e "$(TEXT "LKM: ") \033[1;36m${LKM}\033[0m" echo -e "$(TEXT "Kernel: ") \033[1;36m${KERNEL}\033[0m"
echo -e "$(TEXT "DMI: ") \033[1;36m${DMI}\033[0m" echo -e "$(TEXT "LKM: ") \033[1;36m${LKM}\033[0m"
echo -e "$(TEXT "CPU: ") \033[1;36m${CPU}\033[0m" echo -e "$(TEXT "DMI: ") \033[1;36m${DMI}\033[0m"
echo -e "$(TEXT "MEM: ") \033[1;36m${MEM}\033[0m" echo -e "$(TEXT "CPU: ") \033[1;36m${CPU}\033[0m"
echo -e "$(TEXT "MEM: ") \033[1;36m${MEM}\033[0m"
if [ ! -f "${WORK_PATH}/model-configs/${MODEL}.yml" ] || [ -z "$(readModelKey ${MODEL} "productvers.[${PRODUCTVER}]")" ]; then if [ ! -f "${WORK_PATH}/model-configs/${MODEL}.yml" ] || [ -z "$(readModelKey ${MODEL} "productvers.[${PRODUCTVER}]")" ]; then
echo -e "\033[1;33m*** $(printf "$(TEXT "The current version of bootloader does not support booting %s-%s, please upgrade and rebuild.")" "${MODEL}" "${PRODUCTVER}") ***\033[0m" echo -e "\033[1;33m*** $(printf "$(TEXT "The current version of bootloader does not support booting %s-%s, please upgrade and rebuild.")" "${MODEL}" "${PRODUCTVER}") ***\033[0m"

View File

@ -45,21 +45,24 @@ function checkAddonExist() {
############################################################################### ###############################################################################
# Install Addon into ramdisk image # Install Addon into ramdisk image
# 1 - Addon id # 1 - Addon id
# 2 - Platform
# 3 - Kernel Version
# Return ERROR if not installed
function installAddon() { function installAddon() {
if [ -z "${1}" ]; then if [ -z "${1}" ]; then
return 1 return 1
fi fi
ADDON="${1}" local ADDON="${1}"
mkdir -p "${TMP_PATH}/${ADDON}" mkdir -p "${TMP_PATH}/${ADDON}"
HAS_FILES=0 local HAS_FILES=0
# First check generic files # First check generic files
if [ -f "${ADDONS_PATH}/${ADDON}/all.tgz" ]; then if [ -f "${ADDONS_PATH}/${ADDON}/all.tgz" ]; then
tar -zxf "${ADDONS_PATH}/${ADDON}/all.tgz" -C "${TMP_PATH}/${ADDON}" tar -zxf "${ADDONS_PATH}/${ADDON}/all.tgz" -C "${TMP_PATH}/${ADDON}"
HAS_FILES=1 HAS_FILES=1
fi fi
# Now check specific platform files # Now check specific platform files
if [ -f "${ADDONS_PATH}/${ADDON}/${PLATFORM}-${KVER}.tgz" ]; then if [ -f "${ADDONS_PATH}/${ADDON}/${2}-${3}.tgz" ]; then
tar -zxf "${ADDONS_PATH}/${ADDON}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/${ADDON}" tar -zxf "${ADDONS_PATH}/${ADDON}/${2}-${3}.tgz" -C "${TMP_PATH}/${ADDON}"
HAS_FILES=1 HAS_FILES=1
fi fi
# If has files to copy, copy it, else return error # If has files to copy, copy it, else return error
@ -83,7 +86,7 @@ function untarAddon() {
rm -rf "${TMP_PATH}/addon" rm -rf "${TMP_PATH}/addon"
mkdir -p "${TMP_PATH}/addon" mkdir -p "${TMP_PATH}/addon"
tar -xaf "${1}" -C "${TMP_PATH}/addon" || return tar -xaf "${1}" -C "${TMP_PATH}/addon" || return
ADDON=$(readConfigKey "name" "${TMP_PATH}/addon/manifest.yml") local ADDON=$(readConfigKey "name" "${TMP_PATH}/addon/manifest.yml")
[ -z "${ADDON}" ] && return [ -z "${ADDON}" ] && return
rm -rf "${ADDONS_PATH}/${ADDON}" rm -rf "${ADDONS_PATH}/${ADDON}"
mv -f "${TMP_PATH}/addon" "${ADDONS_PATH}/${ADDON}" mv -f "${TMP_PATH}/addon" "${ADDONS_PATH}/${ADDON}"
@ -94,7 +97,7 @@ function untarAddon() {
# Detect if has new local plugins to install/reinstall # Detect if has new local plugins to install/reinstall
function updateAddons() { function updateAddons() {
for F in $(ls ${PART3_PATH}/*.addon 2>/dev/null); do for F in $(ls ${PART3_PATH}/*.addon 2>/dev/null); do
ADDON=$(basename "${F}" | sed 's|.addon||') local ADDON=$(basename "${F}" | sed 's|.addon||')
rm -rf "${ADDONS_PATH}/${ADDON}" rm -rf "${ADDONS_PATH}/${ADDON}"
mkdir -p "${ADDONS_PATH}/${ADDON}" mkdir -p "${ADDONS_PATH}/${ADDON}"
echo "Installing ${F} to ${ADDONS_PATH}/${ADDON}" echo "Installing ${F} to ${ADDONS_PATH}/${ADDON}"

View File

@ -24,7 +24,8 @@ RR_RAMDISK_FILE="${PART3_PATH}/initrd-rr"
MOD_ZIMAGE_FILE="${PART3_PATH}/zImage-dsm" MOD_ZIMAGE_FILE="${PART3_PATH}/zImage-dsm"
MOD_RDGZ_FILE="${PART3_PATH}/initrd-dsm" MOD_RDGZ_FILE="${PART3_PATH}/initrd-dsm"
LKM_PATH="${PART3_PATH}/lkms" CKS_PATH="${PART3_PATH}/cks"
LKMS_PATH="${PART3_PATH}/lkms"
ADDONS_PATH="${PART3_PATH}/addons" ADDONS_PATH="${PART3_PATH}/addons"
MODULES_PATH="${PART3_PATH}/modules" MODULES_PATH="${PART3_PATH}/modules"
USER_UP_PATH="${PART3_PATH}/users" USER_UP_PATH="${PART3_PATH}/users"

View File

@ -3,8 +3,8 @@
# 1 - Platform # 1 - Platform
# 2 - Kernel Version # 2 - Kernel Version
function getAllModules() { function getAllModules() {
PLATFORM=${1} local PLATFORM=${1}
KVER=${2} local KVER=${2}
if [ -z "${PLATFORM}" -o -z "${KVER}" ]; then if [ -z "${PLATFORM}" -o -z "${KVER}" ]; then
echo "" echo ""
@ -13,27 +13,71 @@ function getAllModules() {
# Unzip modules for temporary folder # Unzip modules for temporary folder
rm -rf "${TMP_PATH}/modules" rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules" mkdir -p "${TMP_PATH}/modules"
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
if [ "${KERNEL}" = "custom" ]; then
tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
else
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
fi
# Get list of all modules # Get list of all modules
for F in $(ls ${TMP_PATH}/modules/*.ko 2>/dev/null); do for F in $(ls ${TMP_PATH}/modules/*.ko 2>/dev/null); do
X=$(basename ${F}) local X=$(basename ${F})
M=${X:0:-3} local M=${X:0:-3}
DESC=$(modinfo ${F} | awk -F':' '/description:/{ print $2}' | awk '{sub(/^[ ]+/,""); print}') local DESC=$(modinfo ${F} | awk -F':' '/description:/{ print $2}' | awk '{sub(/^[ ]+/,""); print}')
[ -z "${DESC}" ] && DESC="${X}" [ -z "${DESC}" ] && DESC="${X}"
echo "${M} \"${DESC}\"" echo "${M} \"${DESC}\""
done done
rm -rf "${TMP_PATH}/modules" rm -rf "${TMP_PATH}/modules"
} }
###############################################################################
# Return list of all modules available
# 1 - Platform
# 2 - Kernel Version
# 3 - Module list
function installModules() {
local PLATFORM=${1}
local KVER=${2}
local MLIST=${3}
if [ -z "${PLATFORM}" -o -z "${KVER}" ]; then
echo ""
return 1
fi
# Unzip modules for temporary folder
rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules"
local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
if [ "${KERNEL}" = "custom" ]; then
tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
else
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
fi
local ODP="$(readConfigKey "odp" "${USER_CONFIG_FILE}")"
for F in $(ls "${TMP_PATH}/modules/"*.ko 2>/dev/null); do
local M=$(basename ${F})
[ "${ODP}" = "true" -a -f "${RAMDISK_PATH}/usr/lib/modules/${M}" ] && continue
if echo "${MLIST}" | grep -wq "${M:0:-3}"; then
cp -f "${F}" "${RAMDISK_PATH}/usr/lib/modules/${M}"
else
rm -f "${RAMDISK_PATH}/usr/lib/modules/${M}"
fi
done
mkdir -p "${RAMDISK_PATH}/usr/lib/firmware"
tar -zxf "${MODULES_PATH}/firmware.tgz" -C "${RAMDISK_PATH}/usr/lib/firmware"
# Clean
rm -rf "${TMP_PATH}/modules"
}
############################################################################### ###############################################################################
# add a ko of modules.tgz # add a ko of modules.tgz
# 1 - Platform # 1 - Platform
# 2 - Kernel Version # 2 - Kernel Version
# 3 - ko file # 3 - ko file
function addToModules() { function addToModules() {
PLATFORM=${1} local PLATFORM=${1}
KVER=${2} local KVER=${2}
KOFILE=${3} local KOFILE=${3}
if [ -z "${PLATFORM}" -o -z "${KVER}" -o -z "${KOFILE}" ]; then if [ -z "${PLATFORM}" -o -z "${KVER}" -o -z "${KOFILE}" ]; then
echo "" echo ""
@ -42,9 +86,18 @@ function addToModules() {
# Unzip modules for temporary folder # Unzip modules for temporary folder
rm -rf "${TMP_PATH}/modules" rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules" mkdir -p "${TMP_PATH}/modules"
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
if [ "${KERNEL}" = "custom" ]; then
tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
else
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
fi
cp -f ${KOFILE} ${TMP_PATH}/modules cp -f ${KOFILE} ${TMP_PATH}/modules
tar -zcf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" . if [ "${KERNEL}" = "custom" ]; then
tar -zcf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" .
else
tar -zcf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" .
fi
} }
############################################################################### ###############################################################################
@ -53,9 +106,9 @@ function addToModules() {
# 2 - Kernel Version # 2 - Kernel Version
# 3 - ko name # 3 - ko name
function delToModules() { function delToModules() {
PLATFORM=${1} local PLATFORM=${1}
KVER=${2} local KVER=${2}
KONAME=${3} local KONAME=${3}
if [ -z "${PLATFORM}" -o -z "${KVER}" -o -z "${KONAME}" ]; then if [ -z "${PLATFORM}" -o -z "${KVER}" -o -z "${KONAME}" ]; then
echo "" echo ""
@ -64,9 +117,18 @@ function delToModules() {
# Unzip modules for temporary folder # Unzip modules for temporary folder
rm -rf "${TMP_PATH}/modules" rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules" mkdir -p "${TMP_PATH}/modules"
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
if [ "${KERNEL}" = "custom" ]; then
tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
else
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
fi
rm -f ${TMP_PATH}/modules/${KONAME} rm -f ${TMP_PATH}/modules/${KONAME}
tar -zcf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" . if [ "${KERNEL}" = "true" ]; then
tar -zcf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" .
else
tar -zcf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" .
fi
} }
############################################################################### ###############################################################################
@ -86,9 +148,9 @@ function getdepends() {
fi fi
fi fi
} }
PLATFORM=${1} local PLATFORM=${1}
KVER=${2} local KVER=${2}
KONAME=${3} local KONAME=${3}
if [ -z "${PLATFORM}" -o -z "${KVER}" -o -z "${KONAME}" ]; then if [ -z "${PLATFORM}" -o -z "${KVER}" -o -z "${KONAME}" ]; then
echo "" echo ""
@ -97,8 +159,13 @@ function getdepends() {
# Unzip modules for temporary folder # Unzip modules for temporary folder
rm -rf "${TMP_PATH}/modules" rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules" mkdir -p "${TMP_PATH}/modules"
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
DPS=($(_getdepends ${KONAME} | tr ' ' '\n' | sort -u)) if [ "${KERNEL}" = "custom" ]; then
tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
else
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules"
fi
local DPS=($(_getdepends ${KONAME} | tr ' ' '\n' | sort -u))
echo ${DPS[@]} echo ${DPS[@]}
rm -rf "${TMP_PATH}/modules" rm -rf "${TMP_PATH}/modules"
} }

View File

@ -26,6 +26,8 @@ ETHX=$(ls /sys/class/net/ 2>/dev/null | grep -v lo) || true
if [ ! -f "${USER_CONFIG_FILE}" ]; then if [ ! -f "${USER_CONFIG_FILE}" ]; then
touch "${USER_CONFIG_FILE}" touch "${USER_CONFIG_FILE}"
fi fi
initConfigKey "kernel" "official" "${USER_CONFIG_FILE}"
initConfigKey "lkm" "prod" "${USER_CONFIG_FILE}" initConfigKey "lkm" "prod" "${USER_CONFIG_FILE}"
initConfigKey "dsmlogo" "true" "${USER_CONFIG_FILE}" initConfigKey "dsmlogo" "true" "${USER_CONFIG_FILE}"
initConfigKey "directboot" "false" "${USER_CONFIG_FILE}" initConfigKey "directboot" "false" "${USER_CONFIG_FILE}"
@ -195,8 +197,9 @@ if [ ${RAM:-0} -le 3500 ]; then
echo -e "\033[1;33m$(TEXT "You have less than 4GB of RAM, if errors occur in loader creation, please increase the amount of memory.")\033[0m\n" echo -e "\033[1;33m$(TEXT "You have less than 4GB of RAM, if errors occur in loader creation, please increase the amount of memory.")\033[0m\n"
fi fi
mkdir -p "${CKS_PATH}"
mkdir -p "${LKMS_PATH}"
mkdir -p "${ADDONS_PATH}" mkdir -p "${ADDONS_PATH}"
mkdir -p "${LKM_PATH}"
mkdir -p "${MODULES_PATH}" mkdir -p "${MODULES_PATH}"
updateAddons updateAddons

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -29,6 +29,7 @@ BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")" SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")" LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
KEYMAP="$(readConfigKey "keymap" "${USER_CONFIG_FILE}")" KEYMAP="$(readConfigKey "keymap" "${USER_CONFIG_FILE}")"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")" LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
DSMLOGO="$(readConfigKey "dsmlogo" "${USER_CONFIG_FILE}")" DSMLOGO="$(readConfigKey "dsmlogo" "${USER_CONFIG_FILE}")"
DIRECTBOOT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")" DIRECTBOOT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")"
@ -169,7 +170,7 @@ function modelMenu() {
[ "${DT}" = "true" ] && M_2="* " [ "${DT}" = "true" ] && M_2="* "
fi fi
if [ "${NVME}" = "2" ]; then if [ "${NVME}" = "2" ]; then
if echo ${models[@]} | grep -q ${M}; then if echo "${models[@]}" | grep -wq "${M}"; then
M_2="* " M_2="* "
fi fi
fi fi
@ -312,11 +313,11 @@ function productversMenu() {
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")" KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
while IFS=': ' read ADDON PARAM; do while IFS=': ' read ADDON PARAM; do
[ -z "${ADDON}" ] && continue [ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KVER}"; then if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then
deleteConfigKey "addons.\"${ADDON}\"" "${USER_CONFIG_FILE}" deleteConfigKey "addons.\"${ADDON}\"" "${USER_CONFIG_FILE}"
fi fi
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}") done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
# Rebuild modules # Rewrite modules
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do while read ID DESC; do
writeConfigKey "modules.\"${ID}\"" "" "${USER_CONFIG_FILE}" writeConfigKey "modules.\"${ID}\"" "" "${USER_CONFIG_FILE}"
@ -444,7 +445,7 @@ function ParsePat() {
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")" KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
while IFS=': ' read ADDON PARAM; do while IFS=': ' read ADDON PARAM; do
[ -z "${ADDON}" ] && continue [ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KVER}"; then if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then
deleteConfigKey "addons.\"${ADDON}\"" "${USER_CONFIG_FILE}" deleteConfigKey "addons.\"${ADDON}\"" "${USER_CONFIG_FILE}"
fi fi
done < <(readConfigMap "addons" "${USER_CONFIG_FILE}") done < <(readConfigMap "addons" "${USER_CONFIG_FILE}")
@ -601,7 +602,7 @@ function addonMenu() {
fi fi
ADDON="$(untarAddon "${TMP_UP_PATH}/${USER_FILE}")" ADDON="$(untarAddon "${TMP_UP_PATH}/${USER_FILE}")"
if [ -n "${ADDON}" ]; then if [ -n "${ADDON}" ]; then
[ -f "${PART3_PATH}/addons/VERSION" ] && rm -f "${PART3_PATH}/addons/VERSION" [ -f "${ADDONS_PATH}/VERSION" ] && rm -f "${ADDONS_PATH}/VERSION"
DIALOG --title "$(TEXT "Addons")" \ DIALOG --title "$(TEXT "Addons")" \
--msgbox "$(printf "$(TEXT "Addon '%s' added to loader, Please enable it in 'Add an addon' menu.")" "${ADDON}")" 0 0 --msgbox "$(printf "$(TEXT "Addon '%s' added to loader, Please enable it in 'Add an addon' menu.")" "${ADDON}")" 0 0
else else
@ -734,7 +735,7 @@ function moduleMenu() {
popd popd
if [ -n "${USER_FILE}" -a "${USER_FILE##*.}" = "ko" ]; then if [ -n "${USER_FILE}" -a "${USER_FILE##*.}" = "ko" ]; then
addToModules ${PLATFORM} "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" "${TMP_UP_PATH}/${USER_FILE}" addToModules ${PLATFORM} "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" "${TMP_UP_PATH}/${USER_FILE}"
[ -f "${PART3_PATH}/modules/VERSION" ] && rm -f "${PART3_PATH}/modules/VERSION" [ -f "${MODULES_PATH}/VERSION" ] && rm -f "${MODULES_PATH}/VERSION"
DIALOG --title "$(TEXT "Modules")" \ DIALOG --title "$(TEXT "Modules")" \
--msgbox "$(printf "$(TEXT "Module '%s' added to %s-%s")" "${USER_FILE}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}")" 0 0 --msgbox "$(printf "$(TEXT "Module '%s' added to %s-%s")" "${USER_FILE}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}")" 0 0
rm -f "${TMP_UP_PATH}/${USER_FILE}" rm -f "${TMP_UP_PATH}/${USER_FILE}"
@ -2257,11 +2258,20 @@ function updateRR() {
rm -Rf "${VALUE}" rm -Rf "${VALUE}"
mkdir -p "${VALUE}" mkdir -p "${VALUE}"
tar -zxf "${TMP_PATH}/$(basename "${KEY}").tgz" -C "${VALUE}" tar -zxf "${TMP_PATH}/$(basename "${KEY}").tgz" -C "${VALUE}"
if [ "$(realpath "${VALUE}")" = "$(realpath "${MODULES_PATH}")" ]; then
if [ -n "${PLATFORM}" -a -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do
writeConfigKey "modules.\"${ID}\"" "" "${USER_CONFIG_FILE}"
done < <(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}")
fi
fi
else else
mkdir -p "$(dirname "${VALUE}")" mkdir -p "$(dirname "${VALUE}")"
mv -f "${TMP_PATH}/$(basename "${KEY}")" "${VALUE}" mv -f "${TMP_PATH}/$(basename "${KEY}")" "${VALUE}"
fi fi
done < <(readConfigMap "replace" "${TMP_PATH}/update-list.yml") done < <(readConfigMap "replace" "${TMP_PATH}/update-list.yml")
touch ${PART1_PATH}/.build
DIALOG --title "${T}" \ DIALOG --title "${T}" \
--msgbox "$(printf "$(TEXT "RR updated with success to %s!\nReboot?")" "${TAG}")" 0 0 --msgbox "$(printf "$(TEXT "RR updated with success to %s!\nReboot?")" "${TAG}")" 0 0
rebootTo config rebootTo config
@ -2301,8 +2311,11 @@ function updateExts() {
done < <(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}") done < <(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}")
fi fi
elif [ "${1}" = "LKMs" ]; then elif [ "${1}" = "LKMs" ]; then
rm -rf "${LKM_PATH}/"* rm -rf "${LKMS_PATH}/"*
unzip "${TMP_PATH}/rp-lkms.zip" -d "${LKM_PATH}" >/dev/null 2>&1 unzip "${TMP_PATH}/rp-lkms.zip" -d "${LKMS_PATH}" >/dev/null 2>&1
elif [ "${1}" = "CKs" ]; then
rm -rf "${CKS_PATH}/"*
unzip "${TMP_PATH}/rr-cks.zip" -d "${CKS_PATH}" >/dev/null 2>&1
fi fi
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
if [ ! "${2}" = "0" ]; then if [ ! "${2}" = "0" ]; then
@ -2318,21 +2331,23 @@ function updateExts() {
function updateMenu() { function updateMenu() {
while true; do while true; do
CUR_RR_VER="${RR_VERSION:-0}" CUR_RR_VER="${RR_VERSION:-0}"
CUR_ADDONS_VER="$(cat "${PART3_PATH}/addons/VERSION" 2>/dev/null)" CUR_ADDONS_VER="$(cat "${ADDONS_PATH}/VERSION" 2>/dev/null)"
CUR_MODULES_VER="$(cat "${PART3_PATH}/modules/VERSION" 2>/dev/null)" CUR_MODULES_VER="$(cat "${MODULES_PATH}/VERSION" 2>/dev/null)"
CUR_LKMS_VER="$(cat "${PART3_PATH}/lkms/VERSION" 2>/dev/null)" CUR_LKMS_VER="$(cat "${LKMS_PATH}/VERSION" 2>/dev/null)"
CUR_CKS_VER="$(cat "${CKS_PATH}/VERSION" 2>/dev/null)"
rm -f "${TMP_PATH}/menu" rm -f "${TMP_PATH}/menu"
echo "a \"$(TEXT "Update all")\"" >>"${TMP_PATH}/menu" echo "a \"$(TEXT "Update all")\"" >>"${TMP_PATH}/menu"
echo "r \"$(TEXT "Update RR")(${CUR_RR_VER:-None})\"" >>"${TMP_PATH}/menu" echo "r \"$(TEXT "Update RR")(${CUR_RR_VER:-None})\"" >>"${TMP_PATH}/menu"
echo "d \"$(TEXT "Update addons")(${CUR_ADDONS_VER:-None})\"" >>"${TMP_PATH}/menu" echo "d \"$(TEXT "Update addons")(${CUR_ADDONS_VER:-None})\"" >>"${TMP_PATH}/menu"
echo "m \"$(TEXT "Update modules")(${CUR_MODULES_VER:-None})\"" >>"${TMP_PATH}/menu" echo "m \"$(TEXT "Update modules")(${CUR_MODULES_VER:-None})\"" >>"${TMP_PATH}/menu"
echo "l \"$(TEXT "Update LKMs")(${CUR_LKMS_VER:-None})\"" >>"${TMP_PATH}/menu" echo "l \"$(TEXT "Update LKMs")(${CUR_LKMS_VER:-None})\"" >>"${TMP_PATH}/menu"
echo "c \"$(TEXT "Update CKs")(${CUR_CKS_VER:-None})\"" >>"${TMP_PATH}/menu"
echo "u \"$(TEXT "Local upload")\"" >>"${TMP_PATH}/menu" echo "u \"$(TEXT "Local upload")\"" >>"${TMP_PATH}/menu"
echo "b \"$(TEXT "Pre Release:") \Z4${PRERELEASE}\Zn\"" >>"${TMP_PATH}/menu" echo "b \"$(TEXT "Pre Release:") \Z4${PRERELEASE}\Zn\"" >>"${TMP_PATH}/menu"
echo "e \"$(TEXT "Exit")\"" >>"${TMP_PATH}/menu" echo "e \"$(TEXT "Exit")\"" >>"${TMP_PATH}/menu"
DIALOG --title "$(TEXT "Update")" \ DIALOG --title "$(TEXT "Update")" \
--menu "$(TEXT "Manually uploading update.zip,addons.zip,modules.zip,rp-lkms.zip to /tmp/ will skip the download.")" 0 0 0 --file "${TMP_PATH}/menu" \ --menu "$(TEXT "Manually uploading update.zip,addons.zip,modules.zip,rp-lkms.zip,rr-cks.zip to /tmp/ will skip the download.")" 0 0 0 --file "${TMP_PATH}/menu" \
2>${TMP_PATH}/resp 2>${TMP_PATH}/resp
[ $? -ne 0 ] && return [ $? -ne 0 ] && return
case "$(<${TMP_PATH}/resp)" in case "$(<${TMP_PATH}/resp)" in
@ -2352,6 +2367,11 @@ function updateMenu() {
downloadExts "LKMs" "${CUR_LKMS_VER:-None}" "https://github.com/XXXXXX/rr-lkms" "rp-lkms" "1" downloadExts "LKMs" "${CUR_LKMS_VER:-None}" "https://github.com/XXXXXX/rr-lkms" "rp-lkms" "1"
fi fi
[ -f "${TMP_PATH}/rp-lkms.zip" ] && updateExts "LKMs" "1" [ -f "${TMP_PATH}/rp-lkms.zip" ] && updateExts "LKMs" "1"
T="$(printf "$(TEXT "Update %s")" "$(TEXT "CKs")")"
if [ ! -f "${TMP_PATH}/rp-cks.zip" ]; then
downloadExts "CKs" "${CUR_CKS_VER:-None}" "https://github.com/XXXXXX/rr-cks" "rr-cks" "1"
fi
[ -f "${TMP_PATH}/rr-cks.zip" ] && updateExts "CKs" "1"
T="$(printf "$(TEXT "Update %s")" "$(TEXT "RR")")" T="$(printf "$(TEXT "Update %s")" "$(TEXT "RR")")"
if [ ! -f "${TMP_PATH}/update.zip" ]; then if [ ! -f "${TMP_PATH}/update.zip" ]; then
downloadExts "RR" "${CUR_RR_VER:-None}" "https://github.com/XXXXXX/rr" "update" "0" downloadExts "RR" "${CUR_RR_VER:-None}" "https://github.com/XXXXXX/rr" "update" "0"
@ -2390,11 +2410,19 @@ function updateMenu() {
fi fi
updateExts "LKMs" "0" updateExts "LKMs" "0"
;; ;;
c)
T="$(printf "$(TEXT "Update %s")" "$(TEXT "CKs")")"
if [ ! -f "${TMP_PATH}/rr-cks.zip" ]; then
downloadExts "CKs" "${CUR_CKS_VER:-None}" "https://github.com/XXXXXX/rr-cks" "rr-cks" "0"
[ $? -ne 0 ] && continue
fi
updateExts "CKs" "0"
;;
u) u)
if ! tty | grep -q "/dev/pts" || [ -z "${SSH_TTY}" ]; then if ! tty | grep -q "/dev/pts" || [ -z "${SSH_TTY}" ]; then
MSG="" MSG=""
MSG+="$(TEXT "This feature is only available when accessed via ssh (Requires a terminal that supports ZModem protocol).\n")" MSG+="$(TEXT "This feature is only available when accessed via ssh (Requires a terminal that supports ZModem protocol).\n")"
MSG+="$(TEXT "Or upload update.zip, addons.zip, modules.zip, rp-lkms.zip to /tmp/ via DUFS will skip the download.\n")" MSG+="$(TEXT "Or upload update.zip, addons.zip, modules.zip, rp-lkms.zip,rr-cks.zip to /tmp/ via DUFS will skip the download.\n")"
DIALOG --title "$(TEXT "Update")" \ DIALOG --title "$(TEXT "Update")" \
--msgbox "${MSG}" 0 0 --msgbox "${MSG}" 0 0
return return
@ -2405,9 +2433,10 @@ function updateMenu() {
MSG+="$(TEXT "Upload addons*.zip will update Addons.\n")" MSG+="$(TEXT "Upload addons*.zip will update Addons.\n")"
MSG+="$(TEXT "Upload modules*.zip will update Modules.\n")" MSG+="$(TEXT "Upload modules*.zip will update Modules.\n")"
MSG+="$(TEXT "Upload rp-lkms*.zip will update LKMs.\n")" MSG+="$(TEXT "Upload rp-lkms*.zip will update LKMs.\n")"
MSG+="$(TEXT "Upload rr-cks*.zip will update CKs.\n")"
DIALOG --title "$(TEXT "Update")" \ DIALOG --title "$(TEXT "Update")" \
--msgbox "${MSG}" 0 0 --msgbox "${MSG}" 0 0
EXTS=(update*.zip addons*.zip modules*.zip rp-lkms*.zip) EXTS=(update*.zip addons*.zip modules*.zip rp-lkms*.zip rr-cks*.zip)
TMP_UP_PATH="${TMP_PATH}/users" TMP_UP_PATH="${TMP_PATH}/users"
USER_FILE="" USER_FILE=""
rm -rf "${TMP_UP_PATH}" rm -rf "${TMP_UP_PATH}"
@ -2441,6 +2470,10 @@ function updateMenu() {
rm -f "${TMP_PATH}/rp-lkms.zip" rm -f "${TMP_PATH}/rp-lkms.zip"
mv -f "${TMP_UP_PATH}/${USER_FILE}" "${TMP_PATH}/rp-lkms.zip" mv -f "${TMP_UP_PATH}/${USER_FILE}" "${TMP_PATH}/rp-lkms.zip"
updateExts "LKMs" "0" updateExts "LKMs" "0"
elif [[ "${USER_FILE}" = rr-cks*.zip ]]; then
rm -f "${TMP_PATH}/rr-cks.zip"
mv -f "${TMP_UP_PATH}/${USER_FILE}" "${TMP_PATH}/rr-cks.zip"
updateExts "CKs" "0"
else else
DIALOG --title "$(TEXT "Update")" \ DIALOG --title "$(TEXT "Update")" \
--msgbox "$(TEXT "Not a valid file, please try again!")" 0 0 --msgbox "$(TEXT "Not a valid file, please try again!")" 0 0
@ -2488,6 +2521,13 @@ while true; do
fi fi
echo "u \"$(TEXT "Parse pat")\"" >>"${TMP_PATH}/menu" echo "u \"$(TEXT "Parse pat")\"" >>"${TMP_PATH}/menu"
if [ -n "${PRODUCTVER}" ]; then if [ -n "${PRODUCTVER}" ]; then
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
if [ -f "${CKS_PATH}/bzImage-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.gz" ] &&
[ -f "${CKS_PATH}/modules-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.tgz" ]; then
echo "s \"$(TEXT "Kernel:") \Z4${KERNEL}\Zn\"" >>"${TMP_PATH}/menu"
fi
echo "a \"$(TEXT "Addons menu")\"" >>"${TMP_PATH}/menu" echo "a \"$(TEXT "Addons menu")\"" >>"${TMP_PATH}/menu"
echo "o \"$(TEXT "Modules menu")\"" >>"${TMP_PATH}/menu" echo "o \"$(TEXT "Modules menu")\"" >>"${TMP_PATH}/menu"
echo "x \"$(TEXT "Cmdline menu")\"" >>"${TMP_PATH}/menu" echo "x \"$(TEXT "Cmdline menu")\"" >>"${TMP_PATH}/menu"
@ -2528,6 +2568,25 @@ while true; do
ParsePat ParsePat
NEXT="d" NEXT="d"
;; ;;
s)
DIALOG --title "$(TEXT "Main menu")" \
--infobox "$(TEXT "Change ...")" 0 0
[ ! "${KERNEL}" = "custom" ] && KERNEL='custom' || KERNEL='official'
writeConfigKey "kernel" "${KERNEL}" "${USER_CONFIG_FILE}"
if [ "${ODP}" = "true" ]; then
ODP="false"
writeConfigKey "odp" "${ODP}" "${USER_CONFIG_FILE}"
fi
if [ -n "${PLATFORM}" -a -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do
writeConfigKey "modules.\"${ID}\"" "" "${USER_CONFIG_FILE}"
done < <(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}")
fi
touch ${PART1_PATH}/.build
NEXT="o"
;;
a) a)
addonMenu addonMenu
NEXT="d" NEXT="d"

View File

@ -4,6 +4,7 @@
. ${WORK_PATH}/include/functions.sh . ${WORK_PATH}/include/functions.sh
. ${WORK_PATH}/include/addons.sh . ${WORK_PATH}/include/addons.sh
. ${WORK_PATH}/include/modules.sh
set -o pipefail # Get exit code from process piped set -o pipefail # Get exit code from process piped
@ -29,6 +30,7 @@ MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")" BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")" SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")" LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")" SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")"
LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")" LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
@ -51,7 +53,7 @@ if [ -n "${PRODUCTVER}" -a -n "${BUILDNUM}" -a -n "${SMALLNUM}" ] &&
PATSUM="" PATSUM=""
# Clean old pat file # Clean old pat file
rm -f "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat" 2>/dev/null || true rm -f "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat" 2>/dev/null || true
fi fi
# Update new buildnumber # Update new buildnumber
PRODUCTVER=${majorversion}.${minorversion} PRODUCTVER=${majorversion}.${minorversion}
BUILDNUM=${buildnumber} BUILDNUM=${buildnumber}
@ -127,30 +129,15 @@ echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc.defaults/synoinfo.conf'" >>"${TMP_
sed -e "/@@@CONFIG-GENERATED@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post" sed -e "/@@@CONFIG-GENERATED@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e '}' -i "${RAMDISK_PATH}/sbin/init.post"
rm -f "${TMP_PATH}/rp.txt" rm -f "${TMP_PATH}/rp.txt"
# Extract ck modules to ramdisk
echo -n "." echo -n "."
# Extract modules to ramdisk installModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" "${!MODULES[@]}"
rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules"
tar -zxf "${MODULES_PATH}/${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.tgz" -C "${TMP_PATH}/modules"
for F in $(ls "${TMP_PATH}/modules/"*.ko 2>/dev/null); do
M=$(basename ${F})
[ "${ODP}" = "true" -a -f "${RAMDISK_PATH}/usr/lib/modules/${M}" ] && continue
if arrayExistItem "${M:0:-3}" "${!MODULES[@]}"; then
cp -f "${F}" "${RAMDISK_PATH}/usr/lib/modules/${M}"
else
rm -f "${RAMDISK_PATH}/usr/lib/modules/${M}"
fi
done
mkdir -p "${RAMDISK_PATH}/usr/lib/firmware"
tar -zxf "${MODULES_PATH}/firmware.tgz" -C "${RAMDISK_PATH}/usr/lib/firmware"
# Clean
rm -rf "${TMP_PATH}/modules"
echo -n "." echo -n "."
# Copying fake modprobe # Copying fake modprobe
cp -f "${WORK_PATH}/patch/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe" cp -f "${WORK_PATH}/patch/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe"
# Copying LKM to /usr/lib/modules # Copying LKM to /usr/lib/modules
gzip -dc "${LKM_PATH}/rp-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}-${LKM}.ko.gz" >"${RAMDISK_PATH}/usr/lib/modules/rp.ko" gzip -dc "${LKMS_PATH}/rp-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}-${LKM}.ko.gz" >"${RAMDISK_PATH}/usr/lib/modules/rp.ko"
# Addons # Addons
echo -n "." echo -n "."
@ -168,24 +155,24 @@ echo "export KEYMAP=${KEYMAP}" >>"${RAMDISK_PATH}/addons/addons.sh"
chmod +x "${RAMDISK_PATH}/addons/addons.sh" chmod +x "${RAMDISK_PATH}/addons/addons.sh"
# Required addons: restore # Required addons: restore
installAddon revert installAddon "revert" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"
echo "/addons/revert.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/revert.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
# Required addons: eudev, disks, localrss, wol # Required addons: eudev, disks, localrss, wol
installAddon eudev installAddon "eudev" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"
echo "/addons/eudev.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/eudev.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
installAddon disks installAddon "disks" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"
echo "/addons/disks.sh \${1} ${HDDSORT} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/disks.sh \${1} ${HDDSORT} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
[ -f "${USER_UP_PATH}/${MODEL}.dts" ] && cp -f "${USER_UP_PATH}/${MODEL}.dts" "${RAMDISK_PATH}/addons/model.dts" [ -f "${USER_UP_PATH}/${MODEL}.dts" ] && cp -f "${USER_UP_PATH}/${MODEL}.dts" "${RAMDISK_PATH}/addons/model.dts"
installAddon localrss installAddon "localrss" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"
echo "/addons/localrss.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/localrss.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
installAddon wol installAddon "wol" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"
echo "/addons/wol.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog echo "/addons/wol.sh \${1} " >>"${RAMDISK_PATH}/addons/addons.sh" 2>"${LOG_FILE}" || dieLog
# User addons # User addons
for ADDON in ${!ADDONS[@]}; do for ADDON in ${!ADDONS[@]}; do
PARAMS=${ADDONS[${ADDON}]} PARAMS=${ADDONS[${ADDON}]}
if ! installAddon ${ADDON}; then if ! installAddon "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then
echo "ADDON ${ADDON} not found!" | tee -a "${LOG_FILE}" echo "ADDON ${ADDON} not found!" | tee -a "${LOG_FILE}"
exit 1 exit 1
fi fi
@ -222,6 +209,7 @@ fi
#fi #fi
# Call user patch scripts # Call user patch scripts
echo -n "."
for F in $(ls -1 ${SCRIPTS_PATH}/*.sh 2>/dev/null); do for F in $(ls -1 ${SCRIPTS_PATH}/*.sh 2>/dev/null); do
echo "Calling ${F}" >>"${LOG_FILE}" 2>&1 echo "Calling ${F}" >>"${LOG_FILE}" 2>&1
. "${F}" >>"${LOG_FILE}" 2>&1 || dieLog . "${F}" >>"${LOG_FILE}" 2>&1 || dieLog
@ -238,4 +226,9 @@ fi
# Clean # Clean
rm -rf "${RAMDISK_PATH}" rm -rf "${RAMDISK_PATH}"
# Update SHA256 hash
echo -n "."
RAMDISK_HASH_CUR="$(sha256sum "${ORI_RDGZ_FILE}" | awk '{print $1}')"
writeConfigKey "ramdisk-hash" "${RAMDISK_HASH_CUR}" "${USER_CONFIG_FILE}"
echo echo

View File

@ -12,17 +12,32 @@ set -o pipefail # Get exit code from process piped
echo -n "Patching zImage" echo -n "Patching zImage"
rm -f "${MOD_ZIMAGE_FILE}" rm -f "${MOD_ZIMAGE_FILE}"
echo -n "."
# Extract vmlinux KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
${WORK_PATH}/bzImage-to-vmlinux.sh "${ORI_ZIMAGE_FILE}" "${TMP_PATH}/vmlinux" >"${LOG_FILE}" 2>&1 || dieLog if [ "${KERNEL}" = "custom" ]; then
echo -n "." echo -n "."
# Patch boot params and ramdisk check MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
${WORK_PATH}/kpatch "${TMP_PATH}/vmlinux" "${TMP_PATH}/vmlinux-mod" >"${LOG_FILE}" 2>&1 || dieLog PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
echo -n "." PLATFORM="$(readModelKey "${MODEL}" "platform")"
# rebuild zImage KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
${WORK_PATH}/vmlinux-to-bzImage.sh "${TMP_PATH}/vmlinux-mod" "${MOD_ZIMAGE_FILE}" >"${LOG_FILE}" 2>&1 || dieLog KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
# Extract bzImage
gzip -dc "${CKS_PATH}/bzImage-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.gz" >"${MOD_ZIMAGE_FILE}"
else
echo -n "."
# Extract vmlinux
${WORK_PATH}/bzImage-to-vmlinux.sh "${ORI_ZIMAGE_FILE}" "${TMP_PATH}/vmlinux" >"${LOG_FILE}" 2>&1 || dieLog
echo -n "."
# Patch boot params and ramdisk check
${WORK_PATH}/kpatch "${TMP_PATH}/vmlinux" "${TMP_PATH}/vmlinux-mod" >"${LOG_FILE}" 2>&1 || dieLog
echo -n "."
# rebuild zImage
${WORK_PATH}/vmlinux-to-bzImage.sh "${TMP_PATH}/vmlinux-mod" "${MOD_ZIMAGE_FILE}" >"${LOG_FILE}" 2>&1 || dieLog
fi
echo -n "." echo -n "."
# Update HASH of new DSM zImage # Update HASH of new DSM zImage
HASH="$(sha256sum ${ORI_ZIMAGE_FILE} | awk '{print$1}')" HASH="$(sha256sum ${ORI_ZIMAGE_FILE} | awk '{print$1}')"
writeConfigKey "zimage-hash" "${HASH}" "${USER_CONFIG_FILE}" writeConfigKey "zimage-hash" "${HASH}" "${USER_CONFIG_FILE}"
echo echo

0
files/p3/cks/.gitkeep Normal file
View File

View File

@ -36,6 +36,7 @@ echo "Copying files"
sudo cp -Rf "files/p1/"* "/tmp/files/p1" sudo cp -Rf "files/p1/"* "/tmp/files/p1"
sudo cp -Rf "files/p3/"* "/tmp/files/p3" sudo cp -Rf "files/p3/"* "/tmp/files/p3"
# Get extractor, LKM, addons and Modules # Get extractor, LKM, addons and Modules
getCKs "/tmp/files/p3/cks" true
getLKMs "/tmp/files/p3/lkms" true getLKMs "/tmp/files/p3/lkms" true
getAddons "/tmp/files/p3/addons" true getAddons "/tmp/files/p3/addons" true
getModules "/tmp/files/p3/modules" true getModules "/tmp/files/p3/modules" true

View File

@ -94,6 +94,35 @@ function getBuildroot() {
echo "Getting Buildroot end" echo "Getting Buildroot end"
} }
# Get latest CKs
# $1 path
# $2 (true|false[d]) include prerelease
function getCKs() {
echo "Getting CKs begin"
local DEST_PATH="${1:-cks}"
local CACHE_FILE="/tmp/rr-cks.zip"
rm -f "${CACHE_FILE}"
if [ "${2}" = "true" ]; then
TAG=$(curl -skLH "Authorization: token ${TOKEN}" "https://api.github.com/repos/RROrg/rr-cks/releases" | jq -r ".[0].tag_name")
else
TAG=$(curl -skLH "Authorization: token ${TOKEN}" "https://api.github.com/repos/RROrg/rr-cks/releases/latest" | jq -r ".tag_name")
fi
while read ID NAME; do
if [ "${NAME}" = "rr-cks.zip" ]; then
STATUS=$(curl -w "%{http_code}" -kLH "Authorization: token ${TOKEN}" -H "Accept: application/octet-stream" "https://api.github.com/repos/RROrg/rr-cks/releases/assets/${ID}" -o "${CACHE_FILE}")
echo "TAG=${TAG}; Status=${STATUS}"
[ ${STATUS:-0} -ne 200 ] && exit 1
fi
done < <(curl -skLH "Authorization: Bearer ${TOKEN}" "https://api.github.com/repos/RROrg/rr-cks/releases/tags/${TAG}" | jq -r '.assets[] | "\(.id) \(.name)"')
[ ! -f "${CACHE_FILE}" ] && exit 1
# Unzip CKs
rm -rf "${DEST_PATH}"
mkdir -p "${DEST_PATH}"
unzip "${CACHE_FILE}" -d "${DEST_PATH}"
rm -f "${CACHE_FILE}"
echo "Getting CKs end"
}
# Get latest LKMs # Get latest LKMs
# $1 path # $1 path
# $2 (true|false[d]) include prerelease # $2 (true|false[d]) include prerelease