mirror of
https://github.com/fbelavenuto/arpl.git
synced 2026-01-04 07:32:06 +08:00
Compare commits
20 Commits
v1.0-beta7
...
v1.0-beta8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2edab6d5dd | ||
|
|
39522773e5 | ||
|
|
8a36f91e90 | ||
|
|
5ef0c6bdcf | ||
|
|
094ad9c715 | ||
|
|
3010935eda | ||
|
|
e74366f17c | ||
|
|
9e2644c293 | ||
|
|
66ff2e6ace | ||
|
|
04935c7a14 | ||
|
|
0ba4c0332f | ||
|
|
d194e501a8 | ||
|
|
e5ee612511 | ||
|
|
2c6f55070d | ||
|
|
a03716086b | ||
|
|
1abd0fa4b7 | ||
|
|
c3dbe8fce7 | ||
|
|
9d0eb20e8a | ||
|
|
dfe345fe76 | ||
|
|
26a6f25428 |
@@ -150,9 +150,9 @@ echo -e "\033[1;37mLoading DSM kernel...\033[0m"
|
|||||||
# Executes DSM kernel via KEXEC
|
# Executes DSM kernel via KEXEC
|
||||||
if [ "${EFI_BUG}" = "yes" -a ${EFI} -eq 1 ]; then
|
if [ "${EFI_BUG}" = "yes" -a ${EFI} -eq 1 ]; then
|
||||||
echo -e "\033[1;33mWarning, running kexec with --noefi param, strange things will happen!!\033[0m"
|
echo -e "\033[1;33mWarning, running kexec with --noefi param, strange things will happen!!\033[0m"
|
||||||
kexec --noefi -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDLINE_LINE}" >"${LOG_FILE}" 2>&1 || dieLog
|
kexec --args-linux --noefi -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDLINE_LINE}" >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
else
|
else
|
||||||
kexec -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDLINE_LINE}" >"${LOG_FILE}" 2>&1 || dieLog
|
kexec --args-linux -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDLINE_LINE}" >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
fi
|
fi
|
||||||
/sbin/swapoff -a >/dev/null 2>&1 || true
|
/sbin/swapoff -a >/dev/null 2>&1 || true
|
||||||
/bin/umount -a -r >/dev/null 2>&1 || true
|
/bin/umount -a -r >/dev/null 2>&1 || true
|
||||||
|
|||||||
BIN
files/board/arpl/overlayfs/opt/arpl/bzImage-template-v5.gz
Normal file
BIN
files/board/arpl/overlayfs/opt/arpl/bzImage-template-v5.gz
Normal file
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
|
|
||||||
ARPL_VERSION="1.0-beta7"
|
ARPL_VERSION="1.0-beta8"
|
||||||
|
|
||||||
# Define paths
|
# Define paths
|
||||||
TMP_PATH="/tmp"
|
TMP_PATH="/tmp"
|
||||||
|
|||||||
@@ -147,6 +147,14 @@ function arrayExistItem() {
|
|||||||
return ${EXISTS}
|
return ${EXISTS}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Get values in .conf K=V file
|
||||||
|
# 1 - key
|
||||||
|
# 2 - file
|
||||||
|
function _get_conf_kv() {
|
||||||
|
grep "${1}" "${2}" | sed "s|^${1}=\"\(.*\)\"$|\1|g"
|
||||||
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Replace/remove/add values in .conf K=V file
|
# Replace/remove/add values in .conf K=V file
|
||||||
# 1 - name
|
# 1 - name
|
||||||
@@ -168,3 +176,18 @@ function _set_conf_kv() {
|
|||||||
# Add if doesn't exist
|
# Add if doesn't exist
|
||||||
echo "$1=\"$2\"" >> $3
|
echo "$1=\"$2\"" >> $3
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Find and mount the DSM root filesystem
|
||||||
|
# (based on pocopico's TCRP code)
|
||||||
|
function findAndMountDSMRoot() {
|
||||||
|
[ $(mount | grep -i "${DSMROOT_PATH}" | wc -l) -gt 0 ] && return 0
|
||||||
|
dsmrootdisk="$(blkid /dev/sd* | grep -i raid | awk '{print $1 " " $4}' | grep UUID | grep sd[a-z]1 | head -1 | awk -F ":" '{print $1}')"
|
||||||
|
[ -z "${dsmrootdisk}" ] && return -1
|
||||||
|
[ $(mount | grep -i "${DSMROOT_PATH}" | wc -l) -eq 0 ] && mount -t ext4 $dsmrootdisk "${DSMROOT_PATH}"
|
||||||
|
if [ $(mount | grep -i "${DSMROOT_PATH}" | wc -l) -eq 0 ]; then
|
||||||
|
echo "Failed to mount"
|
||||||
|
return -1
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ fsck.ext2 -p ${LOADER_DISK}3 >/dev/null 2>&1 || true
|
|||||||
mkdir -p ${BOOTLOADER_PATH}
|
mkdir -p ${BOOTLOADER_PATH}
|
||||||
mkdir -p ${SLPART_PATH}
|
mkdir -p ${SLPART_PATH}
|
||||||
mkdir -p ${CACHE_PATH}
|
mkdir -p ${CACHE_PATH}
|
||||||
|
mkdir -p ${DSMROOT_PATH}
|
||||||
# Mount the partitions
|
# Mount the partitions
|
||||||
mount ${LOADER_DISK}1 ${BOOTLOADER_PATH} || die "Can't mount ${BOOTLOADER_PATH}"
|
mount ${LOADER_DISK}1 ${BOOTLOADER_PATH} || die "Can't mount ${BOOTLOADER_PATH}"
|
||||||
mount ${LOADER_DISK}2 ${SLPART_PATH} || die "Can't mount ${SLPART_PATH}"
|
mount ${LOADER_DISK}2 ${SLPART_PATH} || die "Can't mount ${SLPART_PATH}"
|
||||||
|
|||||||
Binary file not shown.
@@ -61,74 +61,83 @@ function backtitle() {
|
|||||||
###############################################################################
|
###############################################################################
|
||||||
# Shows available models to user choose one
|
# Shows available models to user choose one
|
||||||
function modelMenu() {
|
function modelMenu() {
|
||||||
RESTRICT=1
|
if [ -z "${1}" ]; then
|
||||||
FLGBETA=0
|
RESTRICT=1
|
||||||
dialog --backtitle "`backtitle`" --title "Model" --aspect 18 \
|
FLGBETA=0
|
||||||
--infobox "Reading models" 0 0
|
dialog --backtitle "`backtitle`" --title "Model" --aspect 18 \
|
||||||
while true; do
|
--infobox "Reading models" 0 0
|
||||||
echo "" > "${TMP_PATH}/menu"
|
while true; do
|
||||||
FLGNEX=0
|
echo "" > "${TMP_PATH}/menu"
|
||||||
while read M; do
|
FLGNEX=0
|
||||||
M="`basename ${M}`"
|
while read M; do
|
||||||
M="${M::-4}"
|
M="`basename ${M}`"
|
||||||
PLATFORM=`readModelKey "${M}" "platform"`
|
M="${M::-4}"
|
||||||
DT="`readModelKey "${M}" "dt"`"
|
PLATFORM=`readModelKey "${M}" "platform"`
|
||||||
BETA="`readModelKey "${M}" "beta"`"
|
DT="`readModelKey "${M}" "dt"`"
|
||||||
[ "${BETA}" = "true" -a ${FLGBETA} -eq 0 ] && continue
|
BETA="`readModelKey "${M}" "beta"`"
|
||||||
# Check id model is compatible with CPU
|
[ "${BETA}" = "true" -a ${FLGBETA} -eq 0 ] && continue
|
||||||
COMPATIBLE=1
|
# Check id model is compatible with CPU
|
||||||
if [ ${RESTRICT} -eq 1 ]; then
|
COMPATIBLE=1
|
||||||
for F in `readModelArray "${M}" "flags"`; do
|
if [ ${RESTRICT} -eq 1 ]; then
|
||||||
if ! grep -q "^flags.*${F}.*" /proc/cpuinfo; then
|
for F in `readModelArray "${M}" "flags"`; do
|
||||||
COMPATIBLE=0
|
if ! grep -q "^flags.*${F}.*" /proc/cpuinfo; then
|
||||||
FLGNEX=1
|
COMPATIBLE=0
|
||||||
break
|
FLGNEX=1
|
||||||
fi
|
break
|
||||||
done
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
[ "${DT}" = "true" ] && DT="-DT" || DT=""
|
||||||
|
[ ${COMPATIBLE} -eq 1 ] && echo "${M} \"\Zb${PLATFORM}${DT}\Zn\" " >> "${TMP_PATH}/menu"
|
||||||
|
done < <(find "${MODEL_CONFIG_PATH}" -maxdepth 1 -name \*.yml | sort)
|
||||||
|
[ ${FLGNEX} -eq 1 ] && echo "f \"\Z1Disable flags restriction\Zn\"" >> "${TMP_PATH}/menu"
|
||||||
|
[ ${FLGBETA} -eq 0 ] && echo "b \"\Z1Show beta models\Zn\"" >> "${TMP_PATH}/menu"
|
||||||
|
dialog --backtitle "`backtitle`" --colors --menu "Choose the model" 0 0 0 \
|
||||||
|
--file "${TMP_PATH}/menu" 2>${TMP_PATH}/resp
|
||||||
|
[ $? -ne 0 ] && return
|
||||||
|
resp=$(<${TMP_PATH}/resp)
|
||||||
|
[ -z "${resp}" ] && return
|
||||||
|
if [ "${resp}" = "f" ]; then
|
||||||
|
RESTRICT=0
|
||||||
|
continue
|
||||||
fi
|
fi
|
||||||
[ "${DT}" = "true" ] && DT="-DT" || DT=""
|
if [ "${resp}" = "b" ]; then
|
||||||
[ ${COMPATIBLE} -eq 1 ] && echo "${M} \"\Zb${PLATFORM}${DT}\Zn\" " >> "${TMP_PATH}/menu"
|
FLGBETA=1
|
||||||
done < <(find "${MODEL_CONFIG_PATH}" -maxdepth 1 -name \*.yml | sort)
|
continue
|
||||||
[ ${FLGNEX} -eq 1 ] && echo "f \"\Z1Disable flags restriction\Zn\"" >> "${TMP_PATH}/menu"
|
fi
|
||||||
[ ${FLGBETA} -eq 0 ] && echo "b \"\Z1Show beta models\Zn\"" >> "${TMP_PATH}/menu"
|
break
|
||||||
dialog --backtitle "`backtitle`" --colors --menu "Choose the model" 0 0 0 \
|
done
|
||||||
--file "${TMP_PATH}/menu" 2>${TMP_PATH}/resp
|
else
|
||||||
[ $? -ne 0 ] && return
|
resp="${1}"
|
||||||
resp=$(<${TMP_PATH}/resp)
|
fi
|
||||||
[ -z "${resp}" ] && return
|
# If user change model, clean buildnumber and S/N
|
||||||
if [ "${resp}" = "f" ]; then
|
if [ "${MODEL}" != "${resp}" ]; then
|
||||||
RESTRICT=0
|
MODEL=${resp}
|
||||||
continue
|
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
|
||||||
fi
|
BUILD=""
|
||||||
if [ "${resp}" = "b" ]; then
|
writeConfigKey "build" "${BUILD}" "${USER_CONFIG_FILE}"
|
||||||
FLGBETA=1
|
SN=""
|
||||||
continue
|
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
|
||||||
fi
|
# Delete old files
|
||||||
# If user change model, clean buildnumber and S/N
|
rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}"
|
||||||
if [ "${MODEL}" != "${resp}" ]; then
|
DIRTY=1
|
||||||
MODEL=${resp}
|
fi
|
||||||
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
|
|
||||||
BUILD=""
|
|
||||||
writeConfigKey "build" "${BUILD}" "${USER_CONFIG_FILE}"
|
|
||||||
SN=""
|
|
||||||
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
|
|
||||||
# Delete old files
|
|
||||||
rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}"
|
|
||||||
DIRTY=1
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Shows available buildnumbers from a model to user choose one
|
# Shows available buildnumbers from a model to user choose one
|
||||||
function buildMenu() {
|
function buildMenu() {
|
||||||
ITEMS="`readConfigEntriesArray "builds" "${MODEL_CONFIG_PATH}/${MODEL}.yml" | sort -r`"
|
ITEMS="`readConfigEntriesArray "builds" "${MODEL_CONFIG_PATH}/${MODEL}.yml" | sort -r`"
|
||||||
dialog --clear --no-items --backtitle "`backtitle`" \
|
if [ -z "${1}" ]; then
|
||||||
--menu "Choose a build number" 0 0 0 ${ITEMS} 2>${TMP_PATH}/resp
|
dialog --clear --no-items --backtitle "`backtitle`" \
|
||||||
[ $? -ne 0 ] && return
|
--menu "Choose a build number" 0 0 0 ${ITEMS} 2>${TMP_PATH}/resp
|
||||||
resp=$(<${TMP_PATH}/resp)
|
[ $? -ne 0 ] && return
|
||||||
[ -z "${resp}" ] && return
|
resp=$(<${TMP_PATH}/resp)
|
||||||
|
[ -z "${resp}" ] && return
|
||||||
|
else
|
||||||
|
if ! arrayExistItem "${1}" ${ITEMS}; then return; fi
|
||||||
|
resp="${1}"
|
||||||
|
fi
|
||||||
if [ "${BUILD}" != "${resp}" ]; then
|
if [ "${BUILD}" != "${resp}" ]; then
|
||||||
dialog --backtitle "`backtitle`" --title "Build Number" \
|
dialog --backtitle "`backtitle`" --title "Build Number" \
|
||||||
--infobox "Reconfiguring Synoinfo, Addons and Modules" 0 0
|
--infobox "Reconfiguring Synoinfo, Addons and Modules" 0 0
|
||||||
@@ -637,13 +646,13 @@ function extractDsmFiles() {
|
|||||||
rm -rf "${RAMDISK_PATH}"
|
rm -rf "${RAMDISK_PATH}"
|
||||||
mkdir -p "${RAMDISK_PATH}"
|
mkdir -p "${RAMDISK_PATH}"
|
||||||
tar -xf "${OLDPAT_PATH}" -C "${RAMDISK_PATH}" rd.gz >"${LOG_FILE}" 2>&1
|
tar -xf "${OLDPAT_PATH}" -C "${RAMDISK_PATH}" rd.gz >"${LOG_FILE}" 2>&1
|
||||||
|
[ ${CLEARCACHE} -eq 1 ] && rm -f "${OLDPAT_PATH}"
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
rm "${OLDPAT_PATH}"
|
rm -f "${OLDPAT_PATH}"
|
||||||
rm -rf "${RAMDISK_PATH}"
|
rm -rf "${RAMDISK_PATH}"
|
||||||
dialog --backtitle "`backtitle`" --title "Error extracting" --textbox "${LOG_FILE}" 0 0
|
dialog --backtitle "`backtitle`" --title "Error extracting" --textbox "${LOG_FILE}" 0 0
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
rm -f "${TMP_PATH}/DS3622xs+-42218.pat"
|
|
||||||
# Extract all files from rd.gz
|
# Extract all files from rd.gz
|
||||||
(cd "${RAMDISK_PATH}"; xz -dc < rd.gz | cpio -idm) >/dev/null 2>&1 || true
|
(cd "${RAMDISK_PATH}"; xz -dc < rd.gz | cpio -idm) >/dev/null 2>&1 || true
|
||||||
# Copy only necessary files
|
# Copy only necessary files
|
||||||
@@ -753,6 +762,7 @@ function advancedMenu() {
|
|||||||
echo "r \"Switch direct boot: \Z4${DIRECTBOOT}\Zn\"" >> "${TMP_PATH}/menu"
|
echo "r \"Switch direct boot: \Z4${DIRECTBOOT}\Zn\"" >> "${TMP_PATH}/menu"
|
||||||
fi
|
fi
|
||||||
echo "u \"Edit user config file manually\"" >> "${TMP_PATH}/menu"
|
echo "u \"Edit user config file manually\"" >> "${TMP_PATH}/menu"
|
||||||
|
echo "t \"Try to recovery a DSM installed system\"" >> "${TMP_PATH}/menu"
|
||||||
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
|
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
|
||||||
|
|
||||||
dialog --default-item ${NEXT} --backtitle "`backtitle`" --title "Advanced" \
|
dialog --default-item ${NEXT} --backtitle "`backtitle`" --title "Advanced" \
|
||||||
@@ -771,11 +781,55 @@ function advancedMenu() {
|
|||||||
NEXT="u"
|
NEXT="u"
|
||||||
;;
|
;;
|
||||||
u) editUserConfig; NEXT="e" ;;
|
u) editUserConfig; NEXT="e" ;;
|
||||||
|
t) tryRecoveryDSM ;;
|
||||||
e) break ;;
|
e) break ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Try to recovery a DSM already installed
|
||||||
|
function tryRecoveryDSM() {
|
||||||
|
dialog --backtitle "`backtitle`" --title "Try recovery DSM" --aspect 18 \
|
||||||
|
--infobox "Trying to recovery a DSM installed system" 0 0
|
||||||
|
if findAndMountDSMRoot; then
|
||||||
|
MODEL=""
|
||||||
|
BUILD=""
|
||||||
|
if [ -f "${DSMROOT_PATH}/.syno/patch/VERSION" ]; then
|
||||||
|
eval `cat ${DSMROOT_PATH}/.syno/patch/VERSION | grep unique`
|
||||||
|
eval `cat ${DSMROOT_PATH}/.syno/patch/VERSION | grep base`
|
||||||
|
if [ -n "${unique}" ] ; then
|
||||||
|
while read F; do
|
||||||
|
M="`basename ${F}`"
|
||||||
|
M="${M::-4}"
|
||||||
|
UNIQUE=`readModelKey "${M}" "unique"`
|
||||||
|
[ "${unique}" = "${UNIQUE}" ] || continue
|
||||||
|
# Found
|
||||||
|
modelMenu "${M}"
|
||||||
|
done < <(find "${MODEL_CONFIG_PATH}" -maxdepth 1 -name \*.yml | sort)
|
||||||
|
if [ -n "${MODEL}" ]; then
|
||||||
|
buildMenu ${base}
|
||||||
|
if [ -n "${BUILD}" ]; then
|
||||||
|
cp "${DSMROOT_PATH}/.syno/patch/zImage" "${SLPART_PATH}"
|
||||||
|
cp "${DSMROOT_PATH}/.syno/patch/rd.gz" "${SLPART_PATH}"
|
||||||
|
MSG="Found a installation:\nModel: ${MODEL}\nBuildnumber: ${BUILD}"
|
||||||
|
SN=`_get_conf_kv SN "${DSMROOT_PATH}/etc/synoinfo.conf"`
|
||||||
|
if [ -n "${SN}" ]; then
|
||||||
|
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
|
||||||
|
MSG+="\nSerial: ${SN}"
|
||||||
|
fi
|
||||||
|
dialog --backtitle "`backtitle`" --title "Try recovery DSM" \
|
||||||
|
--aspect 18 --msgbox "${MSG}" 0 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
dialog --backtitle "`backtitle`" --title "Try recovery DSM" --aspect 18 \
|
||||||
|
--msgbox "Unfortunately I couldn't mount the DSM partition!" 0 0
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Permit user select the modules to include
|
# Permit user select the modules to include
|
||||||
function selectModules() {
|
function selectModules() {
|
||||||
@@ -980,7 +1034,7 @@ function updateMenu() {
|
|||||||
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
|
dialog --backtitle "`backtitle`" --title "Update arpl" --aspect 18 \
|
||||||
--yesno "Arpl updated with success to ${TAG}!\nReboot?" 0 0
|
--yesno "Arpl updated with success to ${TAG}!\nReboot?" 0 0
|
||||||
[ $? -ne 0 ] && continue
|
[ $? -ne 0 ] && continue
|
||||||
reboot
|
arpl-reboot.sh config
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -1117,11 +1171,11 @@ while true; do
|
|||||||
echo "b \"Boot the loader\" " >> "${TMP_PATH}/menu"
|
echo "b \"Boot the loader\" " >> "${TMP_PATH}/menu"
|
||||||
fi
|
fi
|
||||||
echo "k \"Choose a keymap\" " >> "${TMP_PATH}/menu"
|
echo "k \"Choose a keymap\" " >> "${TMP_PATH}/menu"
|
||||||
if [ ${CLEARCACHE} -eq 0 -a -d "${CACHE_PATH}/dl" ]; then
|
if [ ${CLEARCACHE} -eq 1 -a -d "${CACHE_PATH}/dl" ]; then
|
||||||
echo "c \"Clean disk cache\"" >> "${TMP_PATH}/menu"
|
echo "c \"Clean disk cache\"" >> "${TMP_PATH}/menu"
|
||||||
fi
|
fi
|
||||||
echo "p \"Update menu\"" >> "${TMP_PATH}/menu"
|
echo "p \"Update menu\"" >> "${TMP_PATH}/menu"
|
||||||
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
|
echo "e \"Exit\"" >> "${TMP_PATH}/menu"
|
||||||
|
|
||||||
dialog --default-item ${NEXT} --backtitle "`backtitle`" --colors \
|
dialog --default-item ${NEXT} --backtitle "`backtitle`" --colors \
|
||||||
--menu "Choose the option" 0 0 0 --file "${TMP_PATH}/menu" \
|
--menu "Choose the option" 0 0 0 --file "${TMP_PATH}/menu" \
|
||||||
|
|||||||
@@ -19,8 +19,8 @@ beta: true
|
|||||||
dom: 2
|
dom: 2
|
||||||
serial:
|
serial:
|
||||||
prefix:
|
prefix:
|
||||||
- "0000"
|
- "2270"
|
||||||
middle: "XXX"
|
middle: "TRR"
|
||||||
suffix: "alpha"
|
suffix: "alpha"
|
||||||
disks: 6
|
disks: 6
|
||||||
dt: true
|
dt: true
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ serial:
|
|||||||
- "2040"
|
- "2040"
|
||||||
- "20C0"
|
- "20C0"
|
||||||
- "2150"
|
- "2150"
|
||||||
middle: "SBR"
|
middle: "TQR"
|
||||||
suffix: "alpha"
|
suffix: "alpha"
|
||||||
disks: 4
|
disks: 4
|
||||||
builds:
|
builds:
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
id: "SA6400"
|
||||||
|
synoinfo: &synoinfo
|
||||||
|
support_disk_compatibility: "no"
|
||||||
|
support_memory_compatibility: "no"
|
||||||
|
support_led_brightness_adjustment: "no"
|
||||||
|
rss_server: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
|
||||||
|
rss_server_ssl: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.xml"
|
||||||
|
rss_server_v2: "https://raw.githubusercontent.com/fbelavenuto/arpl/main/rss.json"
|
||||||
|
cmdline: &cmdline
|
||||||
|
SMBusHddDynamicPower: 1
|
||||||
|
synoboot2:
|
||||||
|
syno_ttyS0: "serial,0x3f8"
|
||||||
|
syno_ttyS1: "serial,0x2f8"
|
||||||
|
vender_format_version: 2
|
||||||
|
platform: "epyc7002"
|
||||||
|
unique: "synology_epyc7002_sa6400"
|
||||||
|
beta: true
|
||||||
|
dom: 2
|
||||||
|
serial:
|
||||||
|
prefix:
|
||||||
|
- "0000"
|
||||||
|
middle: "XXX"
|
||||||
|
suffix: "alpha"
|
||||||
|
disks: 16
|
||||||
|
dt: true
|
||||||
|
builds:
|
||||||
|
42962:
|
||||||
|
ver: "7.1.1"
|
||||||
|
kver: "5.10.55"
|
||||||
|
rd-compressed: false
|
||||||
|
efi-bug: no
|
||||||
|
cmdline:
|
||||||
|
<<: *cmdline
|
||||||
|
synoinfo:
|
||||||
|
<<: *synoinfo
|
||||||
|
pat:
|
||||||
|
url: "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_SA6400_42962.pat"
|
||||||
|
hash: "83fc408380ebb1381224261de6220b873d7b62a99e715557509ae9553f618a71"
|
||||||
|
ramdisk-hash: "d4efe45fc4dd71758fe365f7eb39d24982d1440b00986259cab9a03577982f68"
|
||||||
|
zimage-hash: "d5b8af848fc585695e35bd1c4f4c953fd8e54435b2799face4f8f350bac6df93"
|
||||||
|
md5-hash: "fdbbea86e280a8f754339a064f9ad2df"
|
||||||
|
patch:
|
||||||
|
- "ramdisk-common-disable-root-pwd.patch"
|
||||||
|
- "ramdisk-common-init-script.patch"
|
||||||
|
- "ramdisk-common-etc-rc.patch"
|
||||||
|
- "ramdisk-42951-post-init-script.patch"
|
||||||
@@ -13,6 +13,12 @@ echo -n "Patching Ramdisk"
|
|||||||
# Remove old rd.gz patched
|
# Remove old rd.gz patched
|
||||||
rm -f "${MOD_RDGZ_FILE}"
|
rm -f "${MOD_RDGZ_FILE}"
|
||||||
|
|
||||||
|
# Check disk space left
|
||||||
|
LOADER_DISK="`blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1`"
|
||||||
|
LOADER_DEVICE_NAME=`echo ${LOADER_DISK} | sed 's|/dev/||'`
|
||||||
|
SPACELEFT=`df --block-size=1 | awk '/'${LOADER_DEVICE_NAME}'3/{print$4}'`
|
||||||
|
[ ${SPACELEFT} -le 268435456 ] && rm -rf "${CACHE_PATH}/dl"
|
||||||
|
|
||||||
# Unzipping ramdisk
|
# Unzipping ramdisk
|
||||||
echo -n "."
|
echo -n "."
|
||||||
rm -rf "${RAMDISK_PATH}" # Force clean
|
rm -rf "${RAMDISK_PATH}" # Force clean
|
||||||
@@ -25,6 +31,7 @@ mkdir -p "${RAMDISK_PATH}"
|
|||||||
MODEL="`readConfigKey "model" "${USER_CONFIG_FILE}"`"
|
MODEL="`readConfigKey "model" "${USER_CONFIG_FILE}"`"
|
||||||
BUILD="`readConfigKey "build" "${USER_CONFIG_FILE}"`"
|
BUILD="`readConfigKey "build" "${USER_CONFIG_FILE}"`"
|
||||||
LKM="`readConfigKey "lkm" "${USER_CONFIG_FILE}"`"
|
LKM="`readConfigKey "lkm" "${USER_CONFIG_FILE}"`"
|
||||||
|
SN="`readConfigKey "sn" "${USER_CONFIG_FILE}"`"
|
||||||
|
|
||||||
if [ ${BUILD} -ne ${buildnumber} ]; then
|
if [ ${BUILD} -ne ${buildnumber} ]; then
|
||||||
echo -e "\033[A\n\033[1;32mBuild number changed from \033[1;31m${BUILD}\033[1;32m to \033[1;31m${buildnumber}\033[0m"
|
echo -e "\033[A\n\033[1;32mBuild number changed from \033[1;31m${BUILD}\033[1;32m to \033[1;31m${buildnumber}\033[0m"
|
||||||
@@ -72,6 +79,8 @@ echo -n "."
|
|||||||
for KEY in ${!SYNOINFO[@]}; do
|
for KEY in ${!SYNOINFO[@]}; do
|
||||||
_set_conf_kv "${KEY}" "${SYNOINFO[${KEY}]}" "${RAMDISK_PATH}/etc/synoinfo.conf" >"${LOG_FILE}" 2>&1 || dieLog
|
_set_conf_kv "${KEY}" "${SYNOINFO[${KEY}]}" "${RAMDISK_PATH}/etc/synoinfo.conf" >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
done
|
done
|
||||||
|
# Add serial number to synoinfo.conf, to help to recovery a installed DSM
|
||||||
|
_set_conf_kv "SN" "${SN}" "${RAMDISK_PATH}/etc/synoinfo.conf" >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
|
|
||||||
# Patch /sbin/init.post
|
# Patch /sbin/init.post
|
||||||
echo -n "."
|
echo -n "."
|
||||||
@@ -80,9 +89,11 @@ sed -e "/@@@CONFIG-MANIPULATORS-TOOLS@@@/ {" -e "r ${TMP_PATH}/rp.txt" -e 'd' -e
|
|||||||
rm "${TMP_PATH}/rp.txt"
|
rm "${TMP_PATH}/rp.txt"
|
||||||
touch "${TMP_PATH}/rp.txt"
|
touch "${TMP_PATH}/rp.txt"
|
||||||
for KEY in ${!SYNOINFO[@]}; do
|
for KEY in ${!SYNOINFO[@]}; do
|
||||||
echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc/synoinfo.conf'" >> "${TMP_PATH}/rp.txt"
|
echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc/synoinfo.conf'" >> "${TMP_PATH}/rp.txt"
|
||||||
echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc.defaults/synoinfo.conf'" >> "${TMP_PATH}/rp.txt"
|
echo "_set_conf_kv '${KEY}' '${SYNOINFO[${KEY}]}' '/tmpRoot/etc.defaults/synoinfo.conf'" >> "${TMP_PATH}/rp.txt"
|
||||||
done
|
done
|
||||||
|
echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc/synoinfo.conf'" >> "${TMP_PATH}/rp.txt"
|
||||||
|
echo "_set_conf_kv 'SN' '${SN}' '/tmpRoot/etc.defaults/synoinfo.conf'" >> "${TMP_PATH}/rp.txt"
|
||||||
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 "${TMP_PATH}/rp.txt"
|
rm "${TMP_PATH}/rp.txt"
|
||||||
|
|
||||||
|
|||||||
@@ -1,21 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# Based on code and ideas from @jumkey
|
||||||
|
|
||||||
. /opt/arpl/include/functions.sh
|
. /opt/arpl/include/functions.sh
|
||||||
|
|
||||||
#zImage_head 16494
|
MODEL="`readConfigKey "model" "${USER_CONFIG_FILE}"`"
|
||||||
#payload(
|
BUILD="`readConfigKey "build" "${USER_CONFIG_FILE}"`"
|
||||||
# vmlinux.bin x
|
KVER="`readModelKey "${MODEL}" "builds.${BUILD}.kver"`"
|
||||||
# padding 0xf00000-x
|
|
||||||
# vmlinux.bin size 4
|
|
||||||
#) 0xf00004
|
|
||||||
#zImage_tail(
|
|
||||||
# unknown 72
|
|
||||||
# run_size 4
|
|
||||||
# unknown 30
|
|
||||||
# vmlinux.bin size 4
|
|
||||||
# unknown 114460
|
|
||||||
#) 114570
|
|
||||||
#crc32 4
|
|
||||||
|
|
||||||
# Adapted from: scripts/Makefile.lib
|
# Adapted from: scripts/Makefile.lib
|
||||||
# Usage: size_append FILE [FILE2] [FILEn]...
|
# Usage: size_append FILE [FILE2] [FILEn]...
|
||||||
@@ -51,12 +41,41 @@ size_le () {
|
|||||||
SCRIPT_DIR=`dirname $0`
|
SCRIPT_DIR=`dirname $0`
|
||||||
VMLINUX_MOD=${1}
|
VMLINUX_MOD=${1}
|
||||||
ZIMAGE_MOD=${2}
|
ZIMAGE_MOD=${2}
|
||||||
gzip -cd "${SCRIPT_DIR}/zImage_template.gz" > "${ZIMAGE_MOD}"
|
if [ ${KVER:0:1} -eq 4 ]; then
|
||||||
|
# Kernel version 4.x
|
||||||
|
#zImage_head 16494
|
||||||
|
#payload(
|
||||||
|
# vmlinux.bin x
|
||||||
|
# padding 0xf00000-x
|
||||||
|
# vmlinux.bin size 4
|
||||||
|
#) 0xf00004
|
||||||
|
#zImage_tail(
|
||||||
|
# unknown 72
|
||||||
|
# run_size 4
|
||||||
|
# unknown 30
|
||||||
|
# vmlinux.bin size 4
|
||||||
|
# unknown 114460
|
||||||
|
#) 114570
|
||||||
|
#crc32 4
|
||||||
|
gzip -cd "${SCRIPT_DIR}/bzImage-template-v4.gz" > "${ZIMAGE_MOD}"
|
||||||
|
|
||||||
dd if="${VMLINUX_MOD}" of="${ZIMAGE_MOD}" bs=16494 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
dd if="${VMLINUX_MOD}" of="${ZIMAGE_MOD}" bs=16494 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=15745134 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=15745134 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
|
file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=15745244 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
|
|
||||||
RUN_SIZE=`objdump -h ${VMLINUX_MOD} | sh "${SCRIPT_DIR}/calc_run_size.sh"`
|
RUN_SIZE=`objdump -h ${VMLINUX_MOD} | sh "${SCRIPT_DIR}/calc_run_size.sh"`
|
||||||
size_le $RUN_SIZE | dd of=$ZIMAGE_MOD bs=15745210 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
size_le ${RUN_SIZE} | dd of=${ZIMAGE_MOD} bs=15745210 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=15745244 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
size_le $(($((16#`crc32 "${ZIMAGE_MOD}" | awk '{print$1}'`)) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
size_le $(($((16#`crc32 "${ZIMAGE_MOD}" | awk '{print$1}'`)) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog
|
else
|
||||||
|
# Kernel version 5.x
|
||||||
|
gzip -cd "${SCRIPT_DIR}/bzImage-template-v5.gz" > "${ZIMAGE_MOD}"
|
||||||
|
|
||||||
|
lzma -9c ${VMLINUX_MOD} > ${TMP_PATH}/vmlinux-mod.lzma
|
||||||
|
dd if="${TMP_PATH}/vmlinux-mod.lzma" of="${ZIMAGE_MOD}" bs=15377 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
|
file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=8377991 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
|
file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=8420412 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
|
|
||||||
|
RUN_SIZE=`objdump -h ${VMLINUX_MOD} | sh "${SCRIPT_DIR}/calc_run_size.sh"`
|
||||||
|
size_le ${RUN_SIZE} | dd of=${ZIMAGE_MOD} bs=8420408 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
|
size_le $(($((16#`crc32 "${ZIMAGE_MOD}" | awk '{print$1}'`)) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog
|
||||||
|
fi
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ export EDITOR="/bin/nano"
|
|||||||
export BOOTLOADER_PATH="/mnt/p1"
|
export BOOTLOADER_PATH="/mnt/p1"
|
||||||
export SLPART_PATH="/mnt/p2" # Synologic partition
|
export SLPART_PATH="/mnt/p2" # Synologic partition
|
||||||
export CACHE_PATH="/mnt/p3"
|
export CACHE_PATH="/mnt/p3"
|
||||||
|
export DSMROOT_PATH="/mnt/dsmroot"
|
||||||
export PATH="${PATH}:/opt/arpl"
|
export PATH="${PATH}:/opt/arpl"
|
||||||
|
|
||||||
if [ ! -f ${HOME}/.initialized ]; then
|
if [ ! -f ${HOME}/.initialized ]; then
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
1.0-beta7
|
1.0-beta8
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
files/board/arpl/p3/modules/epyc7002-5.10.55.tgz
Normal file
BIN
files/board/arpl/p3/modules/epyc7002-5.10.55.tgz
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
kpatch/kpatch
Executable file
BIN
kpatch/kpatch
Executable file
Binary file not shown.
@@ -60,6 +60,7 @@ void errorMsg(char *fmt, ...) {
|
|||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
vfprintf(stderr, fmt, args);
|
vfprintf(stderr, fmt, args);
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
fprintf(stderr, "\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -307,15 +308,39 @@ int main(int argc, char *argv[]) {
|
|||||||
Elf_Scn *section;
|
Elf_Scn *section;
|
||||||
GElf_Shdr sectionHeader;
|
GElf_Shdr sectionHeader;
|
||||||
char *sectionName;
|
char *sectionName;
|
||||||
|
char *fileIn = NULL, *fileOut = NULL;
|
||||||
|
int onlyBoot = 0, onlyRD = 0, onlyCMOS = 0, c;
|
||||||
|
|
||||||
if (argc != 3) {
|
if (argc < 3) {
|
||||||
errorMsg("Use: kpatch <vmlinux> <output>\n");
|
errorMsg("Use: kpatch (option) <vmlinux> <output>\nOptions:\n -b Only bootparams\n -r Only ramdisk\n -c Only CMOS");
|
||||||
|
}
|
||||||
|
c = 1;
|
||||||
|
while (c < argc) {
|
||||||
|
if (strcmp(argv[c], "-b") == 0) {
|
||||||
|
onlyBoot = 1;
|
||||||
|
} else if (strcmp(argv[c], "-r") == 0) {
|
||||||
|
onlyRD = 1;
|
||||||
|
} else if (strcmp(argv[c], "-c") == 0) {
|
||||||
|
onlyCMOS = 1;
|
||||||
|
} else if (fileIn == NULL) {
|
||||||
|
fileIn = argv[c];
|
||||||
|
} else {
|
||||||
|
fileOut = argv[c];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
++c;
|
||||||
|
}
|
||||||
|
if (NULL == fileIn) {
|
||||||
|
errorMsg("Please give a input filename");
|
||||||
|
}
|
||||||
|
if (NULL == fileOut) {
|
||||||
|
errorMsg("Please give a output filename");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (elf_version(EV_CURRENT) == EV_NONE)
|
if (elf_version(EV_CURRENT) == EV_NONE)
|
||||||
elfErrno();
|
elfErrno();
|
||||||
|
|
||||||
if ((fd = open(argv[1], O_RDONLY)) == -1)
|
if ((fd = open(fileIn, O_RDONLY)) == -1)
|
||||||
errorNum();
|
errorNum();
|
||||||
|
|
||||||
if ((elfHandle = elf_begin(fd, ELF_C_READ, NULL)) == NULL)
|
if ((elfHandle = elf_begin(fd, ELF_C_READ, NULL)) == NULL)
|
||||||
@@ -367,10 +392,22 @@ int main(int argc, char *argv[]) {
|
|||||||
printf("Found .init.text offset @ %lX\n", initTextOffs);
|
printf("Found .init.text offset @ %lX\n", initTextOffs);
|
||||||
printf("Found .rodata address @ %lX\n", rodataAddr);
|
printf("Found .rodata address @ %lX\n", rodataAddr);
|
||||||
printf("Found .rodata offset @ %lX\n", rodataOffs);
|
printf("Found .rodata offset @ %lX\n", rodataOffs);
|
||||||
patchBootParams();
|
if (onlyBoot == 0 && onlyCMOS == 0 && onlyRD == 0) {
|
||||||
patchRamdiskCheck();
|
patchBootParams();
|
||||||
patchCmosWrite();
|
patchRamdiskCheck();
|
||||||
if ((fd = open(argv[2], O_WRONLY | O_CREAT, 0644)) == -1) {
|
patchCmosWrite();
|
||||||
|
} else {
|
||||||
|
if (onlyBoot == 1) {
|
||||||
|
patchBootParams();
|
||||||
|
}
|
||||||
|
if (onlyRD == 1) {
|
||||||
|
patchRamdiskCheck();
|
||||||
|
}
|
||||||
|
if (onlyCMOS == 1) {
|
||||||
|
patchCmosWrite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ((fd = open(fileOut, O_WRONLY | O_CREAT, 0644)) == -1) {
|
||||||
errorNum();
|
errorNum();
|
||||||
}
|
}
|
||||||
if (fileSize != write(fd, fileData, fileSize)) {
|
if (fileSize != write(fd, fileData, fileSize)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user