fix ... 太多懒得写

This commit is contained in:
Ing 2025-02-27 21:59:13 +08:00
parent 996196c608
commit 88a556407d
28 changed files with 7550 additions and 7180 deletions

1
.gitignore vendored
View File

@ -10,6 +10,7 @@ rr*.vmdk
**.po~ **.po~
**.mo **.mo
downloads.md
tests tests
Changelog* Changelog*
sha256sum sha256sum

View File

@ -33,6 +33,26 @@ BTITLE+="$([ ${EFI} -eq 1 ] && echo " [UEFI]" || echo " [BIOS]")"
BTITLE+="$([ "${BUS}" = "usb" ] && echo " [${BUS^^} flashdisk]" || echo " [${BUS^^} DoM]")" BTITLE+="$([ "${BUS}" = "usb" ] && echo " [${BUS^^} flashdisk]" || echo " [${BUS^^} DoM]")"
printf "\033[1;33m%*s\033[0m\n" $(((${#BTITLE} + ${COLUMNS}) / 2)) "${BTITLE}" printf "\033[1;33m%*s\033[0m\n" $(((${#BTITLE} + ${COLUMNS}) / 2)) "${BTITLE}"
if [ -f ${PART1_PATH}/.upgraded ]; then
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
if [ -n "${MODEL}" ]; then
printf "\033[1;43m%s\033[0m\n" "$(TEXT "Reconfigure after upgrade ...")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
PATURL="$(readConfigKey "paturl" "${USER_CONFIG_FILE}")"
PATSUM="$(readConfigKey "patsum" "${USER_CONFIG_FILE}")"
./menu.sh modelMenu "${MODEL}" || {
echo -e "$(TEXT "Reconfiguration failed!")"
exit 1
}
if [ -n "${PRODUCTVER}" ] && [ -n "${PATURL}" ]; then
./menu.sh productversMenu "${PRODUCTVER}" "${PATURL}" "${PATSUM}" || {
echo -e "$(TEXT "Reconfiguration failed!")"
exit 1
}
fi
fi
rm -f ${PART1_PATH}/.upgraded
fi
# Check if DSM zImage changed, patch it if necessary # Check if DSM zImage changed, patch it if necessary
ZIMAGE_HASH="$(readConfigKey "zimage-hash" "${USER_CONFIG_FILE}")" ZIMAGE_HASH="$(readConfigKey "zimage-hash" "${USER_CONFIG_FILE}")"
if [ -f ${PART1_PATH}/.build ] || [ "$(sha256sum "${ORI_ZIMAGE_FILE}" | awk '{print $1}')" != "${ZIMAGE_HASH}" ]; then if [ -f ${PART1_PATH}/.build ] || [ "$(sha256sum "${ORI_ZIMAGE_FILE}" | awk '{print $1}')" != "${ZIMAGE_HASH}" ]; then
@ -61,13 +81,12 @@ MODELID="$(readConfigKey "modelid" "${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}")"
DT="$(readConfigKey "dt" "${USER_CONFIG_FILE}")"
KVER="$(readConfigKey "kver" "${USER_CONFIG_FILE}")"
KPRE="$(readConfigKey "kpre" "${USER_CONFIG_FILE}")"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")" LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
DT="$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")"
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")"
MEV="$(virt-what 2>/dev/null | head -1)" MEV="$(virt-what 2>/dev/null | head -1)"
DMI="$(dmesg 2>/dev/null | grep -i "DMI:" | head -1 | sed 's/\[.*\] DMI: //i')" DMI="$(dmesg 2>/dev/null | grep -i "DMI:" | head -1 | sed 's/\[.*\] DMI: //i')"
CPU="$(awk -F': ' '/model name/ {print $2}' /proc/cpuinfo | uniq)" CPU="$(awk -F': ' '/model name/ {print $2}' /proc/cpuinfo | uniq)"
@ -288,16 +307,18 @@ function _bootwait() {
DIRECT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")" DIRECT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")"
if [ "${DIRECT}" = "true" ] || [ "${MEV:-physical}" = "parallels" ]; then if [ "${DIRECT}" = "true" ] || [ "${MEV:-physical}" = "parallels" ]; then
grub-editenv ${USER_GRUBENVFILE} set rr_version="${WTITLE}" # grubenv file limit is 1024 bytes.
grub-editenv ${USER_GRUBENVFILE} set rr_booting="${BTITLE}" grub-editenv ${USER_RSYSENVFILE} create
grub-editenv ${USER_GRUBENVFILE} set dsm_model="${MODEL}(${PLATFORM})" grub-editenv ${USER_RSYSENVFILE} set rr_version="${WTITLE}"
grub-editenv ${USER_GRUBENVFILE} set dsm_version="${PRODUCTVER}(${BUILDNUM}$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}"))" grub-editenv ${USER_RSYSENVFILE} set rr_booting="${BTITLE}"
grub-editenv ${USER_GRUBENVFILE} set dsm_kernel="${KERNEL}" grub-editenv ${USER_RSYSENVFILE} set dsm_model="${MODEL}(${PLATFORM})"
grub-editenv ${USER_GRUBENVFILE} set dsm_lkm="${LKM}" grub-editenv ${USER_RSYSENVFILE} set dsm_version="${PRODUCTVER}(${BUILDNUM}$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}"))"
grub-editenv ${USER_GRUBENVFILE} set sys_mev="${MEV:-physical}" grub-editenv ${USER_RSYSENVFILE} set dsm_kernel="${KERNEL}"
grub-editenv ${USER_GRUBENVFILE} set sys_dmi="${DMI}" grub-editenv ${USER_RSYSENVFILE} set dsm_lkm="${LKM}"
grub-editenv ${USER_GRUBENVFILE} set sys_cpu="${CPU}" grub-editenv ${USER_RSYSENVFILE} set sys_mev="${MEV:-physical}"
grub-editenv ${USER_GRUBENVFILE} set sys_mem="${MEM}" grub-editenv ${USER_RSYSENVFILE} set sys_dmi="${DMI}"
grub-editenv ${USER_RSYSENVFILE} set sys_cpu="${CPU}"
grub-editenv ${USER_RSYSENVFILE} set sys_mem="${MEM}"
CMDLINE_DIRECT=$(echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g') # Escape special chars CMDLINE_DIRECT=$(echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g') # Escape special chars
grub-editenv ${USER_GRUBENVFILE} set dsm_cmdline="${CMDLINE_DIRECT}" grub-editenv ${USER_GRUBENVFILE} set dsm_cmdline="${CMDLINE_DIRECT}"
@ -309,16 +330,7 @@ if [ "${DIRECT}" = "true" ] || [ "${MEV:-physical}" = "parallels" ]; then
reboot reboot
exit 0 exit 0
else else
grub-editenv ${USER_GRUBENVFILE} unset rr_version rm -f ${USER_RSYSENVFILE} 2>/dev/null || true
grub-editenv ${USER_GRUBENVFILE} unset rr_booting
grub-editenv ${USER_GRUBENVFILE} unset dsm_model
grub-editenv ${USER_GRUBENVFILE} unset dsm_version
grub-editenv ${USER_GRUBENVFILE} unset dsm_kernel
grub-editenv ${USER_GRUBENVFILE} unset dsm_lkm
grub-editenv ${USER_GRUBENVFILE} unset sys_mev
grub-editenv ${USER_GRUBENVFILE} unset sys_dmi
grub-editenv ${USER_GRUBENVFILE} unset sys_cpu
grub-editenv ${USER_GRUBENVFILE} unset sys_mem
grub-editenv ${USER_GRUBENVFILE} unset dsm_cmdline grub-editenv ${USER_GRUBENVFILE} unset dsm_cmdline
grub-editenv ${USER_GRUBENVFILE} unset next_entry grub-editenv ${USER_GRUBENVFILE} unset next_entry
ETHX=$(ls /sys/class/net/ 2>/dev/null | grep -v lo) || true ETHX=$(ls /sys/class/net/ 2>/dev/null | grep -v lo) || true

View File

@ -15,6 +15,7 @@ LOG_FILE="${TMP_PATH}/log.txt"
USER_GRUB_CONFIG="${PART1_PATH}/boot/grub/grub.cfg" USER_GRUB_CONFIG="${PART1_PATH}/boot/grub/grub.cfg"
USER_GRUBENVFILE="${PART1_PATH}/boot/grub/grubenv" USER_GRUBENVFILE="${PART1_PATH}/boot/grub/grubenv"
USER_RSYSENVFILE="${PART1_PATH}/boot/grub/rsysenv"
USER_CONFIG_FILE="${PART1_PATH}/user-config.yml" USER_CONFIG_FILE="${PART1_PATH}/user-config.yml"
USER_LOCALE_FILE="${PART1_PATH}/.locale" USER_LOCALE_FILE="${PART1_PATH}/.locale"
@ -24,6 +25,7 @@ ORI_RDGZ_FILE="${PART2_PATH}/rd.gz"
RR_BZIMAGE_FILE="${PART3_PATH}/bzImage-rr" RR_BZIMAGE_FILE="${PART3_PATH}/bzImage-rr"
RR_RAMDISK_FILE="${PART3_PATH}/initrd-rr" RR_RAMDISK_FILE="${PART3_PATH}/initrd-rr"
RR_RAMUSER_FILE="${PART3_PATH}/initrd-rru" RR_RAMUSER_FILE="${PART3_PATH}/initrd-rru"
MC_RAMDISK_FILE="${PART3_PATH}/microcode.img"
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"

View File

@ -271,6 +271,9 @@ def getpats4mv(model, version):
continue continue
V = __fullversion(f"{S['build_ver']}-{S['build_num']}-{S['nano']}") V = __fullversion(f"{S['build_ver']}-{S['build_num']}-{S['nano']}")
if V not in pats: if V not in pats:
reqPat = session.head(S['files'][0]['url'].split('?')[0], timeout=10, verify=False)
if reqPat.status_code == 403:
continue
pats[V] = { pats[V] = {
'url': S['files'][0]['url'].split('?')[0], 'url': S['files'][0]['url'].split('?')[0],
'sum': S['files'][0]['checksum'] 'sum': S['files'][0]['checksum']

View File

@ -4,15 +4,15 @@
# 2 - Kernel Version # 2 - Kernel Version
function unpackModules() { function unpackModules() {
local PLATFORM=${1} local PLATFORM=${1}
local KVER=${2} local PKVER=${2}
local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
rm -rf "${TMP_PATH}/modules" rm -rf "${TMP_PATH}/modules"
mkdir -p "${TMP_PATH}/modules" mkdir -p "${TMP_PATH}/modules"
if [ "${KERNEL}" = "custom" ]; then if [ "${KERNEL}" = "custom" ]; then
tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" tar -zxf "${CKS_PATH}/modules-${PLATFORM}-${PKVER}.tgz" -C "${TMP_PATH}/modules"
else else
tar -zxf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" tar -zxf "${MODULES_PATH}/${PLATFORM}-${PKVER}.tgz" -C "${TMP_PATH}/modules"
fi fi
} }
@ -22,13 +22,13 @@ function unpackModules() {
# 2 - Kernel Version # 2 - Kernel Version
function packagModules() { function packagModules() {
local PLATFORM=${1} local PLATFORM=${1}
local KVER=${2} local PKVER=${2}
local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" local KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
if [ "${KERNEL}" = "custom" ]; then if [ "${KERNEL}" = "custom" ]; then
tar -zcf "${CKS_PATH}/modules-${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" . tar -zcf "${CKS_PATH}/modules-${PLATFORM}-${PKVER}.tgz" -C "${TMP_PATH}/modules" .
else else
tar -zcf "${MODULES_PATH}/${PLATFORM}-${KVER}.tgz" -C "${TMP_PATH}/modules" . tar -zcf "${MODULES_PATH}/${PLATFORM}-${PKVER}.tgz" -C "${TMP_PATH}/modules" .
fi fi
} }
@ -38,13 +38,13 @@ function packagModules() {
# 2 - Kernel Version # 2 - Kernel Version
function getAllModules() { function getAllModules() {
local PLATFORM=${1} local PLATFORM=${1}
local KVER=${2} local PKVER=${2}
if [ -z "${PLATFORM}" ] || [ -z "${KVER}" ]; then if [ -z "${PLATFORM}" ] || [ -z "${PKVER}" ]; then
return 1 return 1
fi fi
unpackModules "${PLATFORM}" "${KVER}" unpackModules "${PLATFORM}" "${PKVER}"
for F in $(ls ${TMP_PATH}/modules/*.ko 2>/dev/null); do for F in $(ls ${TMP_PATH}/modules/*.ko 2>/dev/null); do
local X=$(basename "${F}") local X=$(basename "${F}")
@ -64,16 +64,16 @@ function getAllModules() {
# 3 - Module list # 3 - Module list
function installModules() { function installModules() {
local PLATFORM=${1} local PLATFORM=${1}
local KVER=${2} local PKVER=${2}
shift 2 shift 2
local MLIST="${@}" local MLIST="${@}"
if [ -z "${PLATFORM}" ] || [ -z "${KVER}" ]; then if [ -z "${PLATFORM}" ] || [ -z "${PKVER}" ]; then
echo "ERROR: installModules: Platform or Kernel Version not defined" >"${LOG_FILE}" echo "ERROR: installModules: Platform or Kernel Version not defined" >"${LOG_FILE}"
return 1 return 1
fi fi
unpackModules "${PLATFORM}" "${KVER}" unpackModules "${PLATFORM}" "${PKVER}"
local ODP="$(readConfigKey "odp" "${USER_CONFIG_FILE}")" local ODP="$(readConfigKey "odp" "${USER_CONFIG_FILE}")"
for F in $(ls "${TMP_PATH}/modules/"*.ko 2>/dev/null); do for F in $(ls "${TMP_PATH}/modules/"*.ko 2>/dev/null); do
@ -108,19 +108,19 @@ function installModules() {
# 3 - ko file # 3 - ko file
function addToModules() { function addToModules() {
local PLATFORM=${1} local PLATFORM=${1}
local KVER=${2} local PKVER=${2}
local KOFILE=${3} local KOFILE=${3}
if [ -z "${PLATFORM}" ] || [ -z "${KVER}" ] || [ -z "${KOFILE}" ]; then if [ -z "${PLATFORM}" ] || [ -z "${PKVER}" ] || [ -z "${KOFILE}" ]; then
echo "" echo ""
return 1 return 1
fi fi
unpackModules "${PLATFORM}" "${KVER}" unpackModules "${PLATFORM}" "${PKVER}"
cp -f "${KOFILE}" "${TMP_PATH}/modules" cp -f "${KOFILE}" "${TMP_PATH}/modules"
packagModules "${PLATFORM}" "${KVER}" packagModules "${PLATFORM}" "${PKVER}"
} }
############################################################################### ###############################################################################
@ -130,19 +130,19 @@ function addToModules() {
# 3 - ko name # 3 - ko name
function delToModules() { function delToModules() {
local PLATFORM=${1} local PLATFORM=${1}
local KVER=${2} local PKVER=${2}
local KONAME=${3} local KONAME=${3}
if [ -z "${PLATFORM}" ] || [ -z "${KVER}" ] || [ -z "${KONAME}" ]; then if [ -z "${PLATFORM}" ] || [ -z "${PKVER}" ] || [ -z "${KONAME}" ]; then
echo "" echo ""
return 1 return 1
fi fi
unpackModules "${PLATFORM}" "${KVER}" unpackModules "${PLATFORM}" "${PKVER}"
rm -f "${TMP_PATH}/modules/${KONAME}" rm -f "${TMP_PATH}/modules/${KONAME}"
packagModules "${PLATFORM}" "${KVER}" packagModules "${PLATFORM}" "${PKVER}"
} }
############################################################################### ###############################################################################
@ -164,15 +164,15 @@ function getdepends() {
} }
local PLATFORM=${1} local PLATFORM=${1}
local KVER=${2} local PKVER=${2}
local KONAME=${3} local KONAME=${3}
if [ -z "${PLATFORM}" ] || [ -z "${KVER}" ] || [ -z "${KONAME}" ]; then if [ -z "${PLATFORM}" ] || [ -z "${PKVER}" ] || [ -z "${KONAME}" ]; then
echo "" echo ""
return 1 return 1
fi fi
unpackModules "${PLATFORM}" "${KVER}" unpackModules "${PLATFORM}" "${PKVER}"
local DPS=($(_getdepends "${KONAME}" | tr ' ' '\n' | sort -u)) local DPS=($(_getdepends "${KONAME}" | tr ' ' '\n' | sort -u))
echo "${DPS[@]}" echo "${DPS[@]}"

View File

@ -52,6 +52,9 @@ initConfigKey "modelid" "" "${USER_CONFIG_FILE}"
initConfigKey "productver" "" "${USER_CONFIG_FILE}" initConfigKey "productver" "" "${USER_CONFIG_FILE}"
initConfigKey "buildnum" "" "${USER_CONFIG_FILE}" initConfigKey "buildnum" "" "${USER_CONFIG_FILE}"
initConfigKey "smallnum" "" "${USER_CONFIG_FILE}" initConfigKey "smallnum" "" "${USER_CONFIG_FILE}"
initConfigKey "dt" "" "${USER_CONFIG_FILE}"
initConfigKey "kver" "" "${USER_CONFIG_FILE}"
initConfigKey "kpre" "" "${USER_CONFIG_FILE}"
initConfigKey "paturl" "" "${USER_CONFIG_FILE}" initConfigKey "paturl" "" "${USER_CONFIG_FILE}"
initConfigKey "patsum" "" "${USER_CONFIG_FILE}" initConfigKey "patsum" "" "${USER_CONFIG_FILE}"
initConfigKey "sn" "" "${USER_CONFIG_FILE}" initConfigKey "sn" "" "${USER_CONFIG_FILE}"
@ -75,18 +78,6 @@ fi
initConfigKey "modules" "{}" "${USER_CONFIG_FILE}" initConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
initConfigKey "modblacklist" "evbug,cdc_ether" "${USER_CONFIG_FILE}" initConfigKey "modblacklist" "evbug,cdc_ether" "${USER_CONFIG_FILE}"
# for update
if [ -f "${PART2_PATH}/GRUB_VER" ]; then
PLATFORMTMP="$(_get_conf_kv "PLATFORM" "${PART2_PATH}/GRUB_VER")"
MODELTMP="$(_get_conf_kv "MODEL" "${PART2_PATH}/GRUB_VER")"
[ -z "$(readConfigKey "platform" "${USER_CONFIG_FILE}")" ] &&
writeConfigKey "platform" "${PLATFORMTMP,,}" "${USER_CONFIG_FILE}"
[ -z "$(readConfigKey "model" "${USER_CONFIG_FILE}")" ] &&
writeConfigKey "model" "$(echo "${MODELTMP}" | sed 's/d$/D/; s/rp$/RP/; s/rp+/RP+/')" "${USER_CONFIG_FILE}"
[ -z "$(readConfigKey "modelid" "${USER_CONFIG_FILE}")" ] &&
writeConfigKey "modelid" "${MODELTMP}" "${USER_CONFIG_FILE}"
fi
if [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then if [ ! "LOCALBUILD" = "${LOADER_DISK}" ]; then
if arrayExistItem "sortnetif:" "$(readConfigMap "addons" "${USER_CONFIG_FILE}")"; then if arrayExistItem "sortnetif:" "$(readConfigMap "addons" "${USER_CONFIG_FILE}")"; then
_sort_netif "$(readConfigKey "addons.sortnetif" "${USER_CONFIG_FILE}")" _sort_netif "$(readConfigKey "addons.sortnetif" "${USER_CONFIG_FILE}")"

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

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

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

@ -42,6 +42,9 @@ MODELID="$(readConfigKey "modelid" "${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}")"
DT="$(readConfigKey "dt" "${USER_CONFIG_FILE}")"
KVER="$(readConfigKey "kver" "${USER_CONFIG_FILE}")"
KPRE="$(readConfigKey "kpre" "${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}")" KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
@ -188,12 +191,13 @@ function modelMenu() {
resp="${1}" resp="${1}"
fi fi
# If user change model, clean build* and pat* and SN local BASEMODEL="${MODEL}"
if [ "${MODEL}" != "${resp}" ]; then MODEL="${resp}"
PLATFORM="$(grep -w "${resp}" "${TMP_PATH}/modellist" | awk '{print $2}' | head -1)" writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
MODEL="${resp}" PLATFORM="$(grep -w "${MODEL}" "${TMP_PATH}/modellist" | awk '{print $2}' | head -1)"
writeConfigKey "platform" "${PLATFORM}" "${USER_CONFIG_FILE}" writeConfigKey "platform" "${PLATFORM}" "${USER_CONFIG_FILE}"
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
if [ "${MODEL}" != "${BASEMODEL}" ]; then
MODELID="" MODELID=""
PRODUCTVER="" PRODUCTVER=""
BUILDNUM="" BUILDNUM=""
@ -217,8 +221,22 @@ function modelMenu() {
# Remove old files # Remove old files
rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}" >/dev/null 2>&1 || true rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}" >/dev/null 2>&1 || true
rm -f "${PART1_PATH}/grub_cksum.syno" "${PART1_PATH}/GRUB_VER" "${PART2_PATH}/"* >/dev/null 2>&1 || true rm -f "${PART1_PATH}/grub_cksum.syno" "${PART1_PATH}/GRUB_VER" "${PART2_PATH}/"* >/dev/null 2>&1 || true
touch ${PART1_PATH}/.build rm -f "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat" >/dev/null 2>&1 || true
else
if [ -z "${SN}" ]; then
SN="$(generateSerial "${MODEL}")"
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
fi
if [ -z "${MAC1}" ]; then
NETIF_NUM=2
MACS=($(generateMacAddress "${MODEL}" ${NETIF_NUM}))
for I in $(seq 1 ${NETIF_NUM}); do
eval MAC${I}="${MACS[$((${I} - 1))]}"
writeConfigKey "mac${I}" "${MACS[$((${I} - 1))]}" "${USER_CONFIG_FILE}"
done
fi
fi fi
touch ${PART1_PATH}/.build
rm -f "${TMP_PATH}/modellist" rm -f "${TMP_PATH}/modellist"
return 0 return 0
} }
@ -312,53 +330,71 @@ function productversMenu() {
paturl="${2}" paturl="${2}"
patsum="${3}" patsum="${3}"
fi fi
[ "${paturl:0:1}" = "#" ] && patsum="${paturl}"
[ -z "${paturl}" ] || [ -z "${patsum}" ] && return 1 [ -z "${paturl}" ] || [ -z "${patsum}" ] && return 1
writeConfigKey "paturl" "${paturl}" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "${patsum}" "${USER_CONFIG_FILE}"
PRODUCTVER=${selver}
writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
BUILDNUM=""
SMALLNUM=""
writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
if [ -z "${1}" ]; then if [ -z "${1}" ]; then
DIALOG --title "$(TEXT "Product Version")" \ DIALOG --title "$(TEXT "Product Version")" \
--infobox "$(TEXT "Reconfiguring Synoinfo, Addons and Modules ...")" 0 0 --infobox "$(TEXT "Reconfiguring Synoinfo, Addons and Modules ...")" 0 0
fi fi
# Delete synoinfo and reload model/build synoinfo local BASEPATURL="$(readConfigKey "paturl" "${USER_CONFIG_FILE}")"
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}" local BASEPATSUM="$(readConfigKey "patsum" "${USER_CONFIG_FILE}")"
while IFS=': ' read -r KEY VALUE; do
writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}" PRODUCTVER=${selver}
done <<<$(readConfigMap "platforms.${PLATFORM}.synoinfo" "${WORK_PATH}/platforms.yml") writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
if [ "${BASEPATURL}" != "${paturl}" ] || [ "${BASEPATSUM}" != "${patsum}" ]; then
BUILDNUM=""
SMALLNUM=""
writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
fi
writeConfigKey "paturl" "${paturl}" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "${patsum}" "${USER_CONFIG_FILE}"
DT="$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")"
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")" KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")" KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")"
writeConfigKey "dt" "${DT}" "${USER_CONFIG_FILE}"
writeConfigKey "kver" "${KVER}" "${USER_CONFIG_FILE}"
writeConfigKey "kpre" "${KPRE}" "${USER_CONFIG_FILE}"
# Check kernel # Check kernel
if [ -f "${CKS_PATH}/bzImage-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.gz" ] && if [ -f "${CKS_PATH}/bzImage-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}.gz" ] &&
[ -f "${CKS_PATH}/modules-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.tgz" ]; then [ -f "${CKS_PATH}/modules-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}.tgz" ]; then
: :
else else
KERNEL='official' KERNEL='official'
writeConfigKey "kernel" "${KERNEL}" "${USER_CONFIG_FILE}" writeConfigKey "kernel" "${KERNEL}" "${USER_CONFIG_FILE}"
fi fi
# Check usbasinternal # Check usbasinternal
if [ "true" = "$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")" ]; then if [ "true" = "${DT}" ]; then
USBASINTERNAL='false' USBASINTERNAL='false'
writeConfigKey "usbasinternal" "${USBASINTERNAL}" "${USER_CONFIG_FILE}" writeConfigKey "usbasinternal" "${USBASINTERNAL}" "${USER_CONFIG_FILE}"
fi fi
# Delete synoinfo and reload model/build synoinfo
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
while IFS=': ' read -r KEY VALUE; do
writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}"
done <<<$(readConfigMap "platforms.${PLATFORM}.synoinfo" "${WORK_PATH}/platforms.yml")
# Check addons # Check addons
while IFS=': ' read -r ADDON PARAM; do while IFS=': ' read -r ADDON PARAM; do
[ -z "${ADDON}" ] && continue [ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KPRE:+${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}")
# Rewrite modules # Rewrite modules
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
mergeConfigModules "$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}" mergeConfigModules "$(getAllModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
# Remove old files
rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}" >/dev/null 2>&1 || true if [ "${BASEPATURL}" != "${paturl}" ] || [ "${BASEPATSUM}" != "${patsum}" ]; then
rm -f "${PART1_PATH}/grub_cksum.syno" "${PART1_PATH}/GRUB_VER" "${PART2_PATH}/"* >/dev/null 2>&1 || true # Remove old files
rm -f "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat" >/dev/null 2>&1 || true rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}" >/dev/null 2>&1 || true
rm -f "${PART1_PATH}/grub_cksum.syno" "${PART1_PATH}/GRUB_VER" "${PART2_PATH}/"* >/dev/null 2>&1 || true
rm -f "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat" >/dev/null 2>&1 || true
fi
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
return 0 return 0
} }
@ -412,10 +448,28 @@ function setConfigFromDSM() {
writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}" writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}" writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}" writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "paturl" "#" "${USER_CONFIG_FILE}" writeConfigKey "paturl" "#" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "#" "${USER_CONFIG_FILE}" writeConfigKey "patsum" "#" "${USER_CONFIG_FILE}"
DT="$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")"
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")"
writeConfigKey "dt" "${DT}" "${USER_CONFIG_FILE}"
writeConfigKey "kver" "${KVER}" "${USER_CONFIG_FILE}"
writeConfigKey "kpre" "${KPRE}" "${USER_CONFIG_FILE}"
# Check kernel
if [ -f "${CKS_PATH}/bzImage-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}.gz" ] &&
[ -f "${CKS_PATH}/modules-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}.tgz" ]; then
:
else
KERNEL='official'
writeConfigKey "kernel" "${KERNEL}" "${USER_CONFIG_FILE}"
fi
# Check usbasinternal
if [ "true" = "${DT}" ]; then
USBASINTERNAL='false'
writeConfigKey "usbasinternal" "${USBASINTERNAL}" "${USER_CONFIG_FILE}"
fi
# Delete synoinfo and reload model/build synoinfo # Delete synoinfo and reload model/build synoinfo
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}" writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
while IFS=': ' read -r KEY VALUE; do while IFS=': ' read -r KEY VALUE; do
@ -423,17 +477,16 @@ function setConfigFromDSM() {
done <<<$(readConfigMap "platforms.${PLATFORM}.synoinfo" "${WORK_PATH}/platforms.yml") done <<<$(readConfigMap "platforms.${PLATFORM}.synoinfo" "${WORK_PATH}/platforms.yml")
# Check addons # Check addons
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")"
while IFS=': ' read -r ADDON PARAM; do while IFS=': ' read -r ADDON PARAM; do
[ -z "${ADDON}" ] && continue [ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then if ! checkAddonExist "${ADDON}" "${PLATFORM}" "${KPRE:+${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 # Rebuild modules
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
mergeConfigModules "$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}" mergeConfigModules "$(getAllModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
return 0 return 0
} }
@ -497,7 +550,7 @@ function ParsePat() {
fi fi
writeConfigKey "paturl" "#PARSEPAT" "${USER_CONFIG_FILE}" writeConfigKey "paturl" "#PARSEPAT" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "" "${USER_CONFIG_FILE}" writeConfigKey "patsum" "#PARSEPAT" "${USER_CONFIG_FILE}"
copyDSMFiles "${UNTAR_PAT_PATH}" copyDSMFiles "${UNTAR_PAT_PATH}"
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
@ -521,6 +574,11 @@ function ParsePat() {
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}")"
DT="$(readConfigKey "dt" "${USER_CONFIG_FILE}")"
KVER="$(readConfigKey "kver" "${USER_CONFIG_FILE}")"
KPRE="$(readConfigKey "kpre" "${USER_CONFIG_FILE}")"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
USBASINTERNAL="$(readConfigKey "usbasinternal" "${USER_CONFIG_FILE}")"
SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")" SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")"
MAC1="$(readConfigKey "mac1" "${USER_CONFIG_FILE}")" MAC1="$(readConfigKey "mac1" "${USER_CONFIG_FILE}")"
MAC2="$(readConfigKey "mac2" "${USER_CONFIG_FILE}")" MAC2="$(readConfigKey "mac2" "${USER_CONFIG_FILE}")"
@ -531,9 +589,6 @@ function ParsePat() {
############################################################################### ###############################################################################
# Manage addons # Manage addons
function addonMenu() { function addonMenu() {
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")"
NEXT="a" NEXT="a"
while true; do while true; do
unset ADDONS unset ADDONS
@ -560,7 +615,7 @@ function addonMenu() {
while read -r ADDON DESC; do while read -r ADDON DESC; do
arrayExistItem "${ADDON}" "${!ADDONS[@]}" && continue # Check if addon has already been added arrayExistItem "${ADDON}" "${!ADDONS[@]}" && continue # Check if addon has already been added
echo "${ADDON} \"${DESC}\"" >>"${TMP_PATH}/menu" echo "${ADDON} \"${DESC}\"" >>"${TMP_PATH}/menu"
done <<<$(availableAddons "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}") done <<<$(availableAddons "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}")
if [ ! -f "${TMP_PATH}/menu" ]; then if [ ! -f "${TMP_PATH}/menu" ]; then
DIALOG --title "$(TEXT "Addons")" \ DIALOG --title "$(TEXT "Addons")" \
--msgbox "$(TEXT "No available addons to add")" 0 0 --msgbox "$(TEXT "No available addons to add")" 0 0
@ -618,7 +673,7 @@ function addonMenu() {
MSG+="${MODULE}" MSG+="${MODULE}"
fi fi
MSG+=": \Z5${DESC}\Zn\n" MSG+=": \Z5${DESC}\Zn\n"
done <<<$(availableAddons "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}") done <<<$(availableAddons "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}")
DIALOG --title "$(TEXT "Addons")" \ DIALOG --title "$(TEXT "Addons")" \
--msgbox "${MSG}" 0 0 --msgbox "${MSG}" 0 0
;; ;;
@ -673,8 +728,6 @@ function addonMenu() {
############################################################################### ###############################################################################
function moduleMenu() { function moduleMenu() {
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")"
NEXT="c" NEXT="c"
# loop menu # loop menu
while true; do while true; do
@ -698,7 +751,7 @@ function moduleMenu() {
while true; do while true; do
DIALOG --title "$(TEXT "Modules")" \ DIALOG --title "$(TEXT "Modules")" \
--infobox "$(TEXT "Reading modules ...")" 0 0 --infobox "$(TEXT "Reading modules ...")" 0 0
ALLMODULES=$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}") ALLMODULES=$(getAllModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}")
unset USERMODULES unset USERMODULES
declare -A USERMODULES declare -A USERMODULES
while IFS=': ' read -r KEY VALUE; do while IFS=': ' read -r KEY VALUE; do
@ -750,7 +803,7 @@ function moduleMenu() {
--infobox "$(TEXT "Selecting loaded modules")" 0 0 --infobox "$(TEXT "Selecting loaded modules")" 0 0
KOLIST="" KOLIST=""
for I in $(lsmod 2>/dev/null | awk -F' ' '{print $1}' | grep -v 'Module'); do for I in $(lsmod 2>/dev/null | awk -F' ' '{print $1}' | grep -v 'Module'); do
KOLIST+="$(getdepends "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" "${I}") ${I} " KOLIST+="$(getdepends "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" "${I}") ${I} "
done done
KOLIST=($(echo ${KOLIST} | tr ' ' '\n' | sort -u)) KOLIST=($(echo ${KOLIST} | tr ' ' '\n' | sort -u))
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
@ -790,10 +843,10 @@ function moduleMenu() {
done done
popd popd
if [ -n "${USER_FILE}" ] && [ "${USER_FILE##*.}" = "ko" ]; then if [ -n "${USER_FILE}" ] && [ "${USER_FILE##*.}" = "ko" ]; then
addToModules ${PLATFORM} "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" "${TMP_UP_PATH}/${USER_FILE}" addToModules ${PLATFORM} "${KPRE:+${KPRE}-}${KVER}" "${TMP_UP_PATH}/${USER_FILE}"
[ -f "${MODULES_PATH}/VERSION" ] && rm -f "${MODULES_PATH}/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}" "${KPRE:+${KPRE}-}${KVER}")" 0 0
rm -f "${TMP_UP_PATH}/${USER_FILE}" rm -f "${TMP_UP_PATH}/${USER_FILE}"
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
else else
@ -802,7 +855,7 @@ function moduleMenu() {
fi fi
;; ;;
i) i)
DEPS="$(getdepends "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" i915) i915" DEPS="$(getdepends "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" i915) i915"
DELS=() DELS=()
while IFS=': ' read -r KEY VALUE; do while IFS=': ' read -r KEY VALUE; do
[ -z "${KEY}" ] && continue [ -z "${KEY}" ] && continue
@ -1228,7 +1281,7 @@ function extractPatFiles() {
rm -rf "${EXT_PATH}" rm -rf "${EXT_PATH}"
mkdir -p "${EXT_PATH}" mkdir -p "${EXT_PATH}"
printf "$(TEXT "Disassembling %s: ")" "$(basename "${PAT_PATH}")" printf "$(TEXT "Disassembling %s:")" "$(basename "${PAT_PATH}")"
RET=0 RET=0
if [ "${isencrypted}" = "yes" ]; then if [ "${isencrypted}" = "yes" ]; then
@ -1328,7 +1381,7 @@ function extractDsmFiles() {
printf "$(TEXT "%s cached.")" "${PAT_FILE}" printf "$(TEXT "%s cached.")" "${PAT_FILE}"
fi fi
printf "$(TEXT "Checking hash of %s: ")" "${PAT_FILE}" printf "$(TEXT "Checking hash of %s:")" "${PAT_FILE}"
if [ "$(md5sum ${PAT_PATH} | awk '{print $1}')" != "${PATSUM}" ]; then if [ "$(md5sum ${PAT_PATH} | awk '{print $1}')" != "${PATSUM}" ]; then
rm -f ${PAT_PATH} rm -f ${PAT_PATH}
echo -e "$(TEXT "md5 hash of pat not match, Please reget pat data from the version menu and try again!")" >"${LOG_FILE}" echo -e "$(TEXT "md5 hash of pat not match, Please reget pat data from the version menu and try again!")" >"${LOG_FILE}"
@ -1338,21 +1391,21 @@ function extractDsmFiles() {
rm -rf "${UNTAR_PAT_PATH}" rm -rf "${UNTAR_PAT_PATH}"
mkdir -p "${UNTAR_PAT_PATH}" mkdir -p "${UNTAR_PAT_PATH}"
printf "$(TEXT "Disassembling %s: ")" "${PAT_FILE}" printf "$(TEXT "Disassembling %s:")" "${PAT_FILE}"
extractPatFiles "${PAT_PATH}" "${UNTAR_PAT_PATH}" extractPatFiles "${PAT_PATH}" "${UNTAR_PAT_PATH}"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
rm -rf "${UNTAR_PAT_PATH}" rm -rf "${UNTAR_PAT_PATH}"
return 1 return 1
fi fi
echo -n "$(TEXT "Setting hash: ")" echo -n "$(TEXT "Setting hash:")"
ZIMAGE_HASH="$(sha256sum ${UNTAR_PAT_PATH}/zImage | awk '{print $1}')" ZIMAGE_HASH="$(sha256sum ${UNTAR_PAT_PATH}/zImage | awk '{print $1}')"
writeConfigKey "zimage-hash" "${ZIMAGE_HASH}" "${USER_CONFIG_FILE}" writeConfigKey "zimage-hash" "${ZIMAGE_HASH}" "${USER_CONFIG_FILE}"
RAMDISK_HASH="$(sha256sum ${UNTAR_PAT_PATH}/rd.gz | awk '{print $1}')" RAMDISK_HASH="$(sha256sum ${UNTAR_PAT_PATH}/rd.gz | awk '{print $1}')"
writeConfigKey "ramdisk-hash" "${RAMDISK_HASH}" "${USER_CONFIG_FILE}" writeConfigKey "ramdisk-hash" "${RAMDISK_HASH}" "${USER_CONFIG_FILE}"
echo "$(TEXT "OK")" echo "$(TEXT "OK")"
echo -n "$(TEXT "Copying files: ")" echo -n "$(TEXT "Copying files:")"
copyDSMFiles "${UNTAR_PAT_PATH}" copyDSMFiles "${UNTAR_PAT_PATH}"
rm -rf "${UNTAR_PAT_PATH}" rm -rf "${UNTAR_PAT_PATH}"
echo "$(TEXT "OK")" echo "$(TEXT "OK")"
@ -1377,6 +1430,19 @@ function make() {
return 1 return 1
fi fi
if [ -f ${PART1_PATH}/.upgraded ]; then
echo "$(TEXT "Reconfigure after upgrade ...")"
PATURL="$(readConfigKey "paturl" "${USER_CONFIG_FILE}")"
PATSUM="$(readConfigKey "patsum" "${USER_CONFIG_FILE}")"
modelMenu "${MODEL}"
productversMenu "${PRODUCTVER}" "${PATURL}" "${PATSUM}"
if [ $? -ne 0 ]; then
echo -e "$(TEXT "Reconfiguration failed!")" >"${LOG_FILE}"
return 1
fi
rm -f ${PART1_PATH}/.upgraded
fi
${WORK_PATH}/zimage-patch.sh || { ${WORK_PATH}/zimage-patch.sh || {
printf "%s\n%s\n%s:\n%s\n" "$(TEXT "DSM zImage not patched")" "$(TEXT "Please upgrade the bootloader version and try again.")" "$(TEXT "Error")" "$(cat "${LOG_FILE}")" >"${LOG_FILE}" printf "%s\n%s\n%s:\n%s\n" "$(TEXT "DSM zImage not patched")" "$(TEXT "Please upgrade the bootloader version and try again.")" "$(TEXT "Error")" "$(cat "${LOG_FILE}")" >"${LOG_FILE}"
return 1 return 1
@ -1446,7 +1512,7 @@ function customDTS() {
echo "e \"$(TEXT "Exit")\"" echo "e \"$(TEXT "Exit")\""
} >"${TMP_PATH}/menu" } >"${TMP_PATH}/menu"
DIALOG --title "$(TEXT "Custom DTS")" \ DIALOG --title "$(TEXT "Custom DTS")" \
--menu "$(TEXT "Custom dts: ") ${CUSTOMDTS}" 0 0 0 --file "${TMP_PATH}/menu" \ --menu "$(TEXT "Custom dts:") ${CUSTOMDTS}" 0 0 0 --file "${TMP_PATH}/menu" \
2>${TMP_PATH}/resp 2>${TMP_PATH}/resp
[ $? -ne 0 ] && return [ $? -ne 0 ] && return
case "$(cat ${TMP_PATH}/resp)" in case "$(cat ${TMP_PATH}/resp)" in
@ -2206,6 +2272,7 @@ function tryRecoveryDSM() {
__umountDSMRootDisk __umountDSMRootDisk
DIALOG --title "$(TEXT "Settings")" \ DIALOG --title "$(TEXT "Settings")" \
--msgbox "$(TEXT "Found a backup of the user's configuration, and restored it. Please rebuild and boot.")" 0 0 --msgbox "$(TEXT "Found a backup of the user's configuration, and restored it. Please rebuild and boot.")" 0 0
touch ${PART1_PATH}/.upgraded
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
exec "${0}" exec "${0}"
return return
@ -2229,7 +2296,7 @@ function tryRecoveryDSM() {
fi fi
writeConfigKey "paturl" "#RECOVERY" "${USER_CONFIG_FILE}" writeConfigKey "paturl" "#RECOVERY" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "" "${USER_CONFIG_FILE}" writeConfigKey "patsum" "#RECOVERY" "${USER_CONFIG_FILE}"
copyDSMFiles "${TMP_PATH}/mdX/.syno/patch" copyDSMFiles "${TMP_PATH}/mdX/.syno/patch"
__umountDSMRootDisk __umountDSMRootDisk
@ -2702,6 +2769,23 @@ function setProxy() {
return return
} }
###############################################################################
# Change root password
function createMicrocode() {
rm -rf ${TMP_PATH}/kernel
if [ -d /usr/lib/firmware/amd-ucode ]; then
mkdir -p ${TMP_PATH}/kernel/x86/microcode
cat /usr/lib/firmware/amd-ucode/microcode_amd*.bin >${TMP_PATH}/kernel/x86/microcode/AuthenticAMD.bin
fi
if [ -d /usr/lib/firmware/intel-ucode ]; then
mkdir -p ${TMP_PATH}/kernel/x86/microcode
cat /usr/lib/firmware/intel-ucode/* >${TMP_PATH}/kernel/x86/microcode/GenuineIntel.bin
fi
if [ -d ${TMP_PATH}/kernel/x86/microcode ]; then
(cd ${TMP_PATH} && find kernel 2>/dev/null | cpio -o -H newc -R root:root >"${MC_RAMDISK_FILE}") >/dev/null 2>&1
fi
}
############################################################################### ###############################################################################
# Change root password # Change root password
function changePassword() { function changePassword() {
@ -2900,6 +2984,8 @@ function advancedMenu() {
echo "d \"$(TEXT "Custom DTS")\"" echo "d \"$(TEXT "Custom DTS")\""
echo "u \"$(TEXT "USB disk as internal disk:") \Z4${USBASINTERNAL}\Zn\"" echo "u \"$(TEXT "USB disk as internal disk:") \Z4${USBASINTERNAL}\Zn\""
fi fi
AU=$(readConfigMap "addons" "${USER_CONFIG_FILE}" | grep -q "blockupdate" && echo "false" || echo "true")
echo "j \"$(TEXT "DSM automatic update:") \Z4${AU}\Zn\""
echo "w \"$(TEXT "Timeout of boot wait:") \Z4${BOOTWAIT}\Zn\"" echo "w \"$(TEXT "Timeout of boot wait:") \Z4${BOOTWAIT}\Zn\""
if [ "${DIRECTBOOT}" = "false" ]; then if [ "${DIRECTBOOT}" = "false" ]; then
echo "i \"$(TEXT "Timeout of get IP in boot:") \Z4${BOOTIPWAIT}\Zn\"" echo "i \"$(TEXT "Timeout of get IP in boot:") \Z4${BOOTIPWAIT}\Zn\""
@ -2986,7 +3072,7 @@ function advancedMenu() {
NEXT="m" NEXT="m"
;; ;;
d) d)
if [ "true" = "$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")" ]; then if [ "true" = "${DT}" ]; then
customDTS customDTS
else else
DIALOG --title "$(TEXT "Advanced")" \ DIALOG --title "$(TEXT "Advanced")" \
@ -2995,7 +3081,7 @@ function advancedMenu() {
NEXT="e" NEXT="e"
;; ;;
u) u)
if [ "true" = "$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")" ]; then if [ "true" = "${DT}" ]; then
DIALOG --title "$(TEXT "Advanced")" \ DIALOG --title "$(TEXT "Advanced")" \
--msgbox "$(TEXT "USB disk as internal disk is not supported for current model.")" 0 0 --msgbox "$(TEXT "USB disk as internal disk is not supported for current model.")" 0 0
NEXT="e" NEXT="e"
@ -3005,6 +3091,16 @@ function advancedMenu() {
NEXT="u" NEXT="u"
fi fi
;; ;;
j)
AU=$(readConfigMap "addons" "${USER_CONFIG_FILE}" | grep -q "blockupdate" && echo "false" || echo "true")
if [ "${AU}" = "true" ]; then
writeConfigKey "addons.\"blockupdate\"" "" "${USER_CONFIG_FILE}"
else
deleteConfigKey "addons.\"blockupdate\"" "${USER_CONFIG_FILE}"
fi
touch ${PART1_PATH}/.build
NEXT="j"
;;
w) w)
ITEMS="$(echo -e "1 \n5 \n10 \n30 \n60 \n")" ITEMS="$(echo -e "1 \n5 \n10 \n30 \n60 \n")"
DIALOG --title "$(TEXT "Advanced")" \ DIALOG --title "$(TEXT "Advanced")" \
@ -3161,8 +3257,10 @@ function settingsMenu() {
fi fi
echo "1 \"$(TEXT "Set global proxy")\"" echo "1 \"$(TEXT "Set global proxy")\""
echo "2 \"$(TEXT "Set github proxy")\"" echo "2 \"$(TEXT "Set github proxy")\""
echo "3 \"$(TEXT "Change root password # Only RR")\"" UPDMC="$([ -f "${MC_RAMDISK_FILE}" ] && echo "true" || echo "false")"
echo "4 \"$(TEXT "Change ports of TTYD/DUFS/HTTP")\"" echo "3 \"$(TEXT "Update microcode:") \Z4${UPDMC}\Zn\""
echo "4 \"$(TEXT "Change root password # Only RR")\""
echo "5 \"$(TEXT "Change ports of TTYD/DUFS/HTTP")\""
echo "! \"$(TEXT "Vigorously miracle")\"" echo "! \"$(TEXT "Vigorously miracle")\""
echo "e \"$(TEXT "Exit")\"" echo "e \"$(TEXT "Exit")\""
} >"${TMP_PATH}/menu" } >"${TMP_PATH}/menu"
@ -3249,13 +3347,23 @@ function settingsMenu() {
NEXT="e" NEXT="e"
;; ;;
3) 3)
changePassword UPDMC="$([ -f "${MC_RAMDISK_FILE}" ] && echo "true" || echo "false")"
if [ "${UPDMC}" = "true" ]; then
rm -f "${MC_RAMDISK_FILE}"
else
createMicrocode
fi
NEXT="e" NEXT="e"
;; ;;
4) 4)
changePassword
NEXT="e"
;;
5)
changePorts changePorts
NEXT="e" NEXT="e"
;; ;;
!) !)
MSG="" MSG=""
MSG+=" \n" MSG+=" \n"
@ -3440,9 +3548,11 @@ function updateRR() {
SIZENEW=0 SIZENEW=0
SIZEOLD=0 SIZEOLD=0
while IFS=': ' read -r KEY VALUE; do while IFS=': ' read -r KEY VALUE; do
VALUE="${VALUE#/}" # Remove leading slash
VALUE="${VALUE%/}" # Remove trailing slash
if [ "${KEY: -1}" = "/" ]; then if [ "${KEY: -1}" = "/" ]; then
rm -rf "${TMP_PATH}/update/${VALUE}" rm -rf "${TMP_PATH}/update/${VALUE}"
mkdir -p "${TMP_PATH}/update/${VALUE}" mkdir -p "${TMP_PATH}/update/${VALUE}/"
tar -zxf "${TMP_PATH}/update/$(basename "${KEY}").tgz" -C "${TMP_PATH}/update/${VALUE}" >"${LOG_FILE}" 2>&1 tar -zxf "${TMP_PATH}/update/$(basename "${KEY}").tgz" -C "${TMP_PATH}/update/${VALUE}" >"${LOG_FILE}" 2>&1
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
MSG="$(printf "%s\n%s:\n%s\n" "$(TEXT "Error extracting update file.")" "$(TEXT "Error")" "$(cat "${LOG_FILE}")")" MSG="$(printf "%s\n%s:\n%s\n" "$(TEXT "Error extracting update file.")" "$(TEXT "Error")" "$(cat "${LOG_FILE}")")"
@ -3456,11 +3566,11 @@ function updateRR() {
fi fi
rm "${TMP_PATH}/update/$(basename "${KEY}").tgz" rm "${TMP_PATH}/update/$(basename "${KEY}").tgz"
else else
mkdir -p "${TMP_PATH}/update/$(dirname "${VALUE}")" mkdir -p "${TMP_PATH}/update/$(dirname "/${VALUE}")"
mv -f "${TMP_PATH}/update/$(basename "${KEY}")" "${TMP_PATH}/update/${VALUE}" mv -f "${TMP_PATH}/update/$(basename "${KEY}")" "${TMP_PATH}/update/${VALUE}"
fi fi
FSNEW=$(du -sm "${TMP_PATH}/update/${VALUE}" 2>/dev/null | awk '{print $1}') FSNEW=$(du -sm "${TMP_PATH}/update/${VALUE}" 2>/dev/null | awk '{print $1}')
FSOLD=$(du -sm "${VALUE}" 2>/dev/null | awk '{print $1}') FSOLD=$(du -sm "/${VALUE}" 2>/dev/null | awk '{print $1}')
SIZENEW=$((${SIZENEW} + ${FSNEW:-0})) SIZENEW=$((${SIZENEW} + ${FSNEW:-0}))
SIZEOLD=$((${SIZEOLD} + ${FSOLD:-0})) SIZEOLD=$((${SIZEOLD} + ${FSOLD:-0}))
done <<<$(readConfigMap "replace" "${TMP_PATH}/update/update-list.yml") done <<<$(readConfigMap "replace" "${TMP_PATH}/update/update-list.yml")
@ -3490,26 +3600,25 @@ function updateRR() {
[ -d "${F}" ] && rm -rf "${F}" [ -d "${F}" ] && rm -rf "${F}"
done <<<$(readConfigArray "remove" "${TMP_PATH}/update/update-list.yml") done <<<$(readConfigArray "remove" "${TMP_PATH}/update/update-list.yml")
while IFS=': ' read -r KEY VALUE; do while IFS=': ' read -r KEY VALUE; do
VALUE="${VALUE#/}" # Remove leading slash
VALUE="${VALUE%/}" # Remove trailing slash
if [ "${KEY: -1}" = "/" ]; then if [ "${KEY: -1}" = "/" ]; then
rm -rf "${VALUE}"/* rm -rf "/${VALUE}/"*
mkdir -p "${VALUE}" mkdir -p "/${VALUE}/"
cp -rf "${TMP_PATH}/update/${VALUE}"/* "${VALUE}" cp -rf "${TMP_PATH}/update/${VALUE}/". "/${VALUE}/"
if [ "$(realpath "${VALUE}")" = "$(realpath "${MODULES_PATH}")" ]; then if [ "$(realpath "/${VALUE}/")" = "$(realpath "${MODULES_PATH}")" ]; then
if [ -n "${MODEL}" ] && [ -n "${PRODUCTVER}" ]; then if [ -n "${PLATFORM}" ] && [ -n "${PRODUCTVER}" ] && [ -n "${KVER}" ]; then
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")" mergeConfigModules "$(getAllModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
if [ -n "${PLATFORM}" ] && [ -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
mergeConfigModules "$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
fi
fi fi
fi fi
else else
mkdir -p "$(dirname "${VALUE}")" mkdir -p "$(dirname "/${VALUE}")"
cp -f "${TMP_PATH}/update/${VALUE}" "${VALUE}" cp -f "${TMP_PATH}/update/${VALUE}" "/${VALUE}"
fi fi
done <<<$(readConfigMap "replace" "${TMP_PATH}/update/update-list.yml") done <<<$(readConfigMap "replace" "${TMP_PATH}/update/update-list.yml")
rm -rf "${TMP_PATH}/update" rm -rf "${TMP_PATH}/update"
touch ${PART1_PATH}/.upgraded
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
sync sync
MSG="$(printf "$(TEXT "%s updated with success!\n")$(TEXT "Reboot?")" "$(TEXT "RR")")" MSG="$(printf "$(TEXT "%s updated with success!\n")$(TEXT "Reboot?")" "$(TEXT "RR")")"
@ -3632,13 +3741,9 @@ function updateModules() {
rm -rf "${MODULES_PATH}/"* rm -rf "${MODULES_PATH}/"*
cp -rf "${TMP_PATH}/update/"* "${MODULES_PATH}/" cp -rf "${TMP_PATH}/update/"* "${MODULES_PATH}/"
if [ -n "${MODEL}" ] && [ -n "${PRODUCTVER}" ]; then if [ -n "${PLATFORM}" ] && [ -n "${PRODUCTVER}" ] && [ -n "${KVER}" ]; then
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")" mergeConfigModules "$(getAllModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
if [ -n "${PLATFORM}" ] && [ -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
mergeConfigModules "$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
fi
fi fi
rm -rf "${TMP_PATH}/update" rm -rf "${TMP_PATH}/update"
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
@ -3754,13 +3859,9 @@ function updateCKs() {
rm -rf "${CKS_PATH}/"* rm -rf "${CKS_PATH}/"*
cp -rf "${TMP_PATH}/update/"* "${CKS_PATH}/" cp -rf "${TMP_PATH}/update/"* "${CKS_PATH}/"
if [ -n "${MODEL}" ] && [ -n "${PRODUCTVER}" ] && [ "${KERNEL}" = "custom" ]; then if [ "${KERNEL}" = "custom" ] && [ -n "${PLATFORM}" ] && [ -n "${PRODUCTVER}" ] && [ -n "${KVER}" ]; then
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")" mergeConfigModules "$(getAllModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
if [ -n "${PLATFORM}" ] && [ -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
mergeConfigModules "$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
fi
fi fi
rm -rf "${TMP_PATH}/update" rm -rf "${TMP_PATH}/update"
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
@ -3995,10 +4096,8 @@ else
fi fi
echo "u \"$(TEXT "Parse pat")\"" echo "u \"$(TEXT "Parse pat")\""
if [ -n "${PRODUCTVER}" ]; then if [ -n "${PRODUCTVER}" ]; then
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")" if [ -f "${CKS_PATH}/bzImage-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}.gz" ] &&
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")" [ -f "${CKS_PATH}/modules-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}.tgz" ]; then
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\"" echo "s \"$(TEXT "Kernel:") \Z4${KERNEL}\Zn\""
fi fi
echo "a \"$(TEXT "Addons menu")\"" echo "a \"$(TEXT "Addons menu")\""
@ -4007,10 +4106,8 @@ else
echo "i \"$(TEXT "Synoinfo menu")\"" echo "i \"$(TEXT "Synoinfo menu")\""
fi fi
echo "v \"$(TEXT "Advanced menu")\"" echo "v \"$(TEXT "Advanced menu")\""
if [ -n "${MODEL}" ]; then if [ -n "${MODEL}" ] && [ -n "${PRODUCTVER}" ]; then
if [ -n "${PRODUCTVER}" ]; then echo "d \"$(TEXT "Build the loader")\""
echo "d \"$(TEXT "Build the loader")\""
fi
fi fi
if loaderIsConfigured; then if loaderIsConfigured; then
echo "q \"$(TEXT "Direct boot:") \Z4${DIRECTBOOT}\Zn\"" echo "q \"$(TEXT "Direct boot:") \Z4${DIRECTBOOT}\Zn\""
@ -4052,10 +4149,9 @@ else
fi fi
if [ -n "${PLATFORM}" ] && [ -n "${KVER}" ]; then if [ -n "${PLATFORM}" ] && [ -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
mergeConfigModules "$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}" mergeConfigModules "$(getAllModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" | awk '{print $1}')" "${USER_CONFIG_FILE}"
fi fi
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
NEXT="o" NEXT="o"
;; ;;
a) a)

View File

@ -25,9 +25,9 @@ PATSUM="$(readConfigKey "patsum" "${USER_CONFIG_FILE}")"
ODP="$(readConfigKey "odp" "${USER_CONFIG_FILE}")" # official drivers priorities ODP="$(readConfigKey "odp" "${USER_CONFIG_FILE}")" # official drivers priorities
HDDSORT="$(readConfigKey "hddsort" "${USER_CONFIG_FILE}")" HDDSORT="$(readConfigKey "hddsort" "${USER_CONFIG_FILE}")"
# Read model data DT="$(readConfigKey "dt" "${USER_CONFIG_FILE}")"
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")" KVER="$(readConfigKey "kver" "${USER_CONFIG_FILE}")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")" KPRE="$(readConfigKey "kpre" "${USER_CONFIG_FILE}")"
# Sanity check # Sanity check
if [ -z "${PLATFORM}" ] || [ -z "${KVER}" ]; then if [ -z "${PLATFORM}" ] || [ -z "${KVER}" ]; then
@ -145,12 +145,12 @@ rm -f "${TMP_PATH}/rp.txt"
# Extract ck modules to ramdisk # Extract ck modules to ramdisk
echo -n "." echo -n "."
installModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" "${!MODULES[@]}" || exit 1 installModules "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" "${!MODULES[@]}" || exit 1
# Copying fake modprobe # Copying fake modprobe
[ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 5 ] && cp -f "${WORK_PATH}/patch/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe" [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 5 ] && 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 "${LKMS_PATH}/rp-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}-${LKM}.ko.gz" >"${RAMDISK_PATH}/usr/lib/modules/rp.ko" 2>"${LOG_FILE}" || exit 1 gzip -dc "${LKMS_PATH}/rp-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}-${LKM}.ko.gz" >"${RAMDISK_PATH}/usr/lib/modules/rp.ko" 2>"${LOG_FILE}" || exit 1
# Addons # Addons
echo -n "." echo -n "."
@ -179,14 +179,14 @@ for ADDON in "redpill" "revert" "misc" "eudev" "disks" "localrss" "notify" "wol"
PARAMS=${HDDSORT} PARAMS=${HDDSORT}
[ -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"
fi fi
installAddon "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" || exit 1 installAddon "${ADDON}" "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" || exit 1
echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>>"${LOG_FILE}" || exit 1 echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>>"${LOG_FILE}" || exit 1
done done
# User addons # User addons
for ADDON in "${!ADDONS[@]}"; do for ADDON in "${!ADDONS[@]}"; do
PARAMS=${ADDONS[${ADDON}]} PARAMS=${ADDONS[${ADDON}]}
installAddon "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" || exit 1 installAddon "${ADDON}" "${PLATFORM}" "${KPRE:+${KPRE}-}${KVER}" || exit 1
echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>>"${LOG_FILE}" || exit 1 echo "/addons/${ADDON}.sh \${1} ${PARAMS}" >>"${RAMDISK_PATH}/addons/addons.sh" 2>>"${LOG_FILE}" || exit 1
done done

View File

@ -16,14 +16,14 @@ echo -n "Patching zImage"
rm -f "${MOD_ZIMAGE_FILE}" rm -f "${MOD_ZIMAGE_FILE}"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
if [ "${KERNEL}" = "custom" ]; then if [ "${KERNEL}" = "custom" ]; then
echo -n "." echo -n "."
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")" PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" KVER="$(readConfigKey "kver" "${USER_CONFIG_FILE}")"
KVER="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kver" "${WORK_PATH}/platforms.yml")" KPRE="$(readConfigKey "kpre" "${USER_CONFIG_FILE}")"
KPRE="$(readConfigKey "platforms.${PLATFORM}.productvers.\"${PRODUCTVER}\".kpre" "${WORK_PATH}/platforms.yml")"
# Extract bzImage # Extract bzImage
gzip -dc "${CKS_PATH}/bzImage-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.gz" >"${MOD_ZIMAGE_FILE}" gzip -dc "${CKS_PATH}/bzImage-${PLATFORM}-${KPRE:+${KPRE}-}${KVER}.gz" >"${MOD_ZIMAGE_FILE}"
echo -n "..." echo -n "..."
else else
echo -n "." echo -n "."

View File

@ -0,0 +1,20 @@
# GRUB gfxpayload blacklist. The format is a sequence of lines of the
# following form, using lower-case hexadecimal for all ID components:
#
# vVENDORdDEVICEsvSUBVENDORsdSUBDEVICEbcBASECLASSscSUBCLASS
#
# Blacklist lines are regex-matched (currently using Lua's string.find with
# the line surrounded by ^ and $) against a corresponding PCI ID string. In
# practice this means that you can replace any part of the ID string with .*
# to match anything.
#
# There is no need to customise this file locally. If you need to disable
# gfxpayload=keep on your system, just add this line (uncommented) to
# /etc/default/grub:
#
# GRUB_GFXPAYLOAD_LINUX=text
v15add0710.*
v15add0405.*
v80eedbeef.*
v1002d6738.*

View File

@ -3,7 +3,7 @@ set timeout="5"
set timeout_style="menu" set timeout_style="menu"
if [ -s ${prefix}/grubenv ]; then if [ -s ${prefix}/grubenv ]; then
load_env --skip-sig load_env --skip-sig --file=${prefix}/grubenv
fi fi
if [ "${next_entry}" ]; then if [ "${next_entry}" ]; then
@ -79,9 +79,15 @@ function gfxmode {
set RR_CMDLINE="earlyprintk earlycon=uart8250,io,0x3f8,115200n8 console=ttyS0,115200n8 root=/dev/ram rootwait intremap=off amd_iommu_intr=legacy net.ifnames=0 panic=5 split_lock_detect=off pcie_aspm=off intel_pstate=disable amd_pstate=disable nox2apic nomodeset nowatchdog" set RR_CMDLINE="earlyprintk earlycon=uart8250,io,0x3f8,115200n8 console=ttyS0,115200n8 root=/dev/ram rootwait intremap=off amd_iommu_intr=legacy net.ifnames=0 panic=5 split_lock_detect=off pcie_aspm=off intel_pstate=disable amd_pstate=disable nox2apic nomodeset nowatchdog"
search --set=root --label "RR3" search --set=root --label "RR3"
if [ -e /initrd-rru ]; then set RRU=/initrd-rru; fi
if [ -e /microcode.img ]; then set MCI=/microcode.img; fi
if [ -s /zImage-dsm -a -s /initrd-dsm ]; then if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
if [ "${default}" = "direct" ]; then if [ "${default}" = "direct" ]; then
set timeout="1" set timeout="1"
if [ -s ${prefix}/rsysenv ]; then
load_env --skip-sig --file=${prefix}/rsysenv
fi
menuentry 'Boot DSM kernel directly' ${menuentry_id_option} direct { menuentry 'Boot DSM kernel directly' ${menuentry_id_option} direct {
gfxmode gfxmode
echo "RRVersion: ${rr_version}" echo "RRVersion: ${rr_version}"
@ -102,7 +108,7 @@ if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
echo "Loading DSM kernel..." echo "Loading DSM kernel..."
linux /zImage-dsm ${dsm_cmdline} linux /zImage-dsm ${dsm_cmdline}
echo "Loading DSM initramfs..." echo "Loading DSM initramfs..."
initrd /initrd-dsm initrd ${MCI} /initrd-dsm
echo "Booting..." echo "Booting..."
echo "Access http://find.synology.com/ to connect the DSM via web." echo "Access http://find.synology.com/ to connect the DSM via web."
} }
@ -112,11 +118,7 @@ if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
echo "Loading kernel..." echo "Loading kernel..."
linux /bzImage-rr ${RR_CMDLINE} ${rr_cmdline} linux /bzImage-rr ${RR_CMDLINE} ${rr_cmdline}
echo "Loading initramfs..." echo "Loading initramfs..."
if [ -e /initrd-rru ]; then initrd ${MCI} /initrd-rr ${RRU}
initrd /initrd-rr /initrd-rru
else
initrd /initrd-rr
fi
echo "Booting..." echo "Booting..."
} }
menuentry 'Boot Recovery' ${menuentry_id_option} recovery { menuentry 'Boot Recovery' ${menuentry_id_option} recovery {
@ -124,11 +126,7 @@ if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
echo "Loading kernel..." echo "Loading kernel..."
linux /bzImage-rr ${RR_CMDLINE} ${rr_cmdline} recovery linux /bzImage-rr ${RR_CMDLINE} ${rr_cmdline} recovery
echo "Loading initramfs..." echo "Loading initramfs..."
if [ -e /initrd-rru ]; then initrd ${MCI} /initrd-rr ${RRU}
initrd /initrd-rr /initrd-rru
else
initrd /initrd-rr
fi
echo "Booting..." echo "Booting..."
} }
menuentry 'Force re-install DSM' ${menuentry_id_option} junior { menuentry 'Force re-install DSM' ${menuentry_id_option} junior {
@ -136,11 +134,7 @@ if [ -s /zImage-dsm -a -s /initrd-dsm ]; then
echo "Loading kernel..." echo "Loading kernel..."
linux /bzImage-rr ${RR_CMDLINE} ${rr_cmdline} force_junior linux /bzImage-rr ${RR_CMDLINE} ${rr_cmdline} force_junior
echo "Loading initramfs..." echo "Loading initramfs..."
if [ -e /initrd-rru ]; then initrd ${MCI} /initrd-rr ${RRU}
initrd /initrd-rr /initrd-rru
else
initrd /initrd-rr
fi
echo "Booting..." echo "Booting..."
} }
fi fi
@ -150,11 +144,7 @@ menuentry 'Configure loader' ${menuentry_id_option} config {
echo "Loading kernel..." echo "Loading kernel..."
linux /bzImage-rr earlycon=uart8250,io,0x3f8,115200n8 console=ttyS0,115200n8 ${RR_CMDLINE} ${rr_cmdline} IWANTTOCHANGETHECONFIG linux /bzImage-rr earlycon=uart8250,io,0x3f8,115200n8 console=ttyS0,115200n8 ${RR_CMDLINE} ${rr_cmdline} IWANTTOCHANGETHECONFIG
echo "Loading initramfs..." echo "Loading initramfs..."
if [ -e /initrd-rru ]; then initrd ${MCI} /initrd-rr ${RRU}
initrd /initrd-rr /initrd-rru
else
initrd /initrd-rr
fi
echo "Booting..." echo "Booting..."
} }
@ -163,11 +153,7 @@ menuentry 'Configure loader (verbose)' ${menuentry_id_option} verbose {
echo "Loading kernel..." echo "Loading kernel..."
linux /bzImage-rr ${RR_CMDLINE} ${rr_cmdline} earlycon=tty2 console=tty2 IWANTTOCHANGETHECONFIG linux /bzImage-rr ${RR_CMDLINE} ${rr_cmdline} earlycon=tty2 console=tty2 IWANTTOCHANGETHECONFIG
echo "Loading initramfs..." echo "Loading initramfs..."
if [ -e /initrd-rru ]; then initrd ${MCI} /initrd-rr ${RRU}
initrd /initrd-rr /initrd-rru
else
initrd /initrd-rr
fi
echo "Booting..." echo "Booting..."
} }

View File

@ -197,6 +197,9 @@ def getpats(workpath, jsonpath, xlsxpath):
continue continue
V = __fullversion(f"{S['build_ver']}-{S['build_num']}-{S['nano']}") V = __fullversion(f"{S['build_ver']}-{S['build_num']}-{S['nano']}")
if V not in pats[M]: if V not in pats[M]:
reqPat = session.head(S['files'][0]['url'].split('?')[0], timeout=10, verify=False)
if reqPat.status_code == 403:
continue
pats[M][V] = { pats[M][V] = {
'url': S['files'][0]['url'].split('?')[0], 'url': S['files'][0]['url'].split('?')[0],
'sum': S['files'][0]['checksum'] 'sum': S['files'][0]['checksum']