Compare commits

..

45 Commits

Author SHA1 Message Date
Fabio Belavenuto
8b9e4c7cec Merge pull request #393 from fbelavenuto/bins
Updating addons/lkms/modules
2022-12-07 10:16:36 -03:00
Fabio Belavenuto
40537993ff Updating addons/lkms/modules 2022-12-07 10:15:58 -03:00
Fabio Belavenuto
e1c6bd55c9 Merge pull request #390 from fbelavenuto/adding-version-p1
Adding version to a file in p1
2022-12-06 16:02:33 -03:00
Fabio Belavenuto
23820c56c3 Adding version to a file in p1 2022-12-06 16:02:18 -03:00
Fabio Belavenuto
675324c25b Merge pull request #384 from fbelavenuto/new-menu-adv
Adding a "advanced menu"
2022-12-05 08:57:59 -03:00
Fabio Belavenuto
71dc04fc1d Adding a "advanced menu" 2022-12-05 08:57:46 -03:00
Fabio Belavenuto
328dcbbd59 Merge pull request #376 from fbelavenuto/b7
Starting beta7: Improving disk space check
2022-12-01 13:17:25 -03:00
Fabio Belavenuto
db1001f2ad Starting beta7: Improving disk space check 2022-12-01 13:17:04 -03:00
Fabio Belavenuto
029b97b981 Merge pull request #372 from fbelavenuto/resolve-314
Resolving #314
2022-11-30 16:02:39 -03:00
Fabio Belavenuto
950166fc7d Resolving #314 2022-11-30 16:02:11 -03:00
Fabio Belavenuto
5afb934769 Merge pull request #371 from fbelavenuto/eudev-hwdb
Adding eudev with hwdb
2022-11-30 15:09:36 -03:00
Fabio Belavenuto
d1deb55921 Adding eudev with hwdb 2022-11-30 15:09:16 -03:00
Fabio Belavenuto
cc8c6a3812 Merge pull request #370 from fbelavenuto/rss-923
adding RSS for 923+ beta model
2022-11-30 14:14:13 -03:00
Fabio Belavenuto
523bbfbc50 adding RSS for 923+ beta model 2022-11-30 14:13:54 -03:00
Fabio Belavenuto
2d76ba320f Merge pull request #369 from fbelavenuto/old-eudev
Using old but functional eudev
2022-11-30 14:07:40 -03:00
Fabio Belavenuto
5495484c9a Using old but functional eudev 2022-11-30 14:07:26 -03:00
Fabio Belavenuto
7b67dd0456 Merge pull request #368 from fbelavenuto/beta6
Starting beta6 - fixing eudev and docker imgs
2022-11-30 13:43:06 -03:00
Fabio Belavenuto
aa0976ca4f Starting beta6 - fixing eudev and docker imgs 2022-11-30 13:39:07 -03:00
Fabio Belavenuto
f7c0b4fcd5 Merge pull request #366 from fbelavenuto/bin-update
Bin update
2022-11-30 09:07:02 -03:00
Fabio Belavenuto
08af5fd185 Bin update 2022-11-30 09:06:21 -03:00
Fabio Belavenuto
7ef9a87347 Merge pull request #364 from fbelavenuto/fix-toolkit
Fixing toolkit
2022-11-29 15:45:08 -03:00
Fabio Belavenuto
b21e1e4924 Fixing toolkit 2022-11-29 15:44:34 -03:00
Fabio Belavenuto
56c214c2a8 Merge pull request #363 from fbelavenuto/beta5
Starting beta5, update addons/modules
2022-11-29 12:34:41 -03:00
Fabio Belavenuto
d903e4237b Starting beta5, update addons/modules 2022-11-29 12:34:04 -03:00
Fabio Belavenuto
6f238af8c1 Merge pull request #358 from fbelavenuto/binaries
Update binaries
2022-11-28 11:12:18 -03:00
Fabio Belavenuto
3b490c9c86 Update binaries 2022-11-28 11:12:00 -03:00
Fabio Belavenuto
a0120f8d5d Merge pull request #357 from fbelavenuto/latest-binaries
Latest addons/modules/lkms
2022-11-28 10:53:54 -03:00
Fabio Belavenuto
e4622f92d7 Latest addons/modules/lkms 2022-11-28 10:47:08 -03:00
Fabio Belavenuto
3898e3c3d9 Merge pull request #356 from fbelavenuto/new-ds923+
Adding DS923+
2022-11-28 10:45:32 -03:00
Fabio Belavenuto
a8534dccf5 Adding DS923+ 2022-11-28 10:45:19 -03:00
Fabio Belavenuto
c00c94fdfd Merge pull request #355 from fbelavenuto/docker-toolkit
New docker image syno-toolkit
2022-11-28 10:44:19 -03:00
Fabio Belavenuto
f6dbd4b8cd New docker image syno-toolkit 2022-11-28 10:44:00 -03:00
Fabio Belavenuto
efb54e1345 Merge pull request #354 from fbelavenuto/351-the-installer-will-overwrite-dsm-loader-when-direct-boot-is-true
Fixing directboot DoM EFI variables
2022-11-28 09:01:36 -03:00
Fabio Belavenuto
d220958442 Fixing directboot DoM EFI variables 2022-11-28 09:01:16 -03:00
Fabio Belavenuto
d95a88f513 Merge pull request #349 from fbelavenuto/r1000
Adding r1000 platform into docker image
2022-11-25 16:38:59 -03:00
Fabio Belavenuto
36fca1cb0d Adding r1000 platform into docker image 2022-11-25 16:38:33 -03:00
Fabio Belavenuto
d91468ba66 Merge pull request #348 from fbelavenuto/r1000
Adding r1000 platform
2022-11-25 13:23:00 -03:00
Fabio Belavenuto
a136b3e3ec Adding r1000 platform 2022-11-25 13:22:21 -03:00
Fabio Belavenuto
ea43525e6b Update arpl_defconfig 2022-11-22 09:02:38 -03:00
Fabio Belavenuto
8fe46adb66 Merge pull request #342 from fbelavenuto/more-timeout
Changed IP timeout to 30 secs
2022-11-22 08:49:56 -03:00
Fabio Belavenuto
35d66d37cf Changed IP timeout to 30 secs 2022-11-22 08:49:40 -03:00
Fabio Belavenuto
55d3cf0bde Merge pull request #333 from fbelavenuto/i915
Added i915 addons
2022-11-18 17:21:11 -03:00
Fabio Belavenuto
8411febf6d Added i915 addons 2022-11-18 17:20:47 -03:00
Fabio Belavenuto
227e1f19a7 Merge pull request #332 from fbelavenuto/igc-1.2.8
Updated igc to 1.2.8
2022-11-18 16:48:21 -03:00
Fabio Belavenuto
2fadc03782 Updated igc to 1.2.8 2022-11-18 16:47:43 -03:00
83 changed files with 549 additions and 266 deletions

View File

@@ -77,6 +77,7 @@ jobs:
# Copy files
echo "Copying files"
sed 's/^ARPL_VERSION=.*/ARPL_VERSION="'${VERSION}'"/' -i files/board/arpl/overlayfs/opt/arpl/include/consts.sh
echo "${VERSION}" > files/board/arpl/p1/ARPL-VERSION
cp -Ru files/* .buildroot/
cd .buildroot
echo "Generating default config"

4
.gitignore vendored
View File

@@ -5,7 +5,7 @@ arpl*.vmdk
*.zip
.buildroot
test*.sh
docker/Dockerfile
docker/cache
docker/syno-compiler/Dockerfile
cache
*.bak
*.o

View File

@@ -5,3 +5,4 @@ broadwellnk 4.4.180
denverton 4.4.180
geminilake 4.4.180
v1000 4.4.180
r1000 4.4.180

4
TODO
View File

@@ -1,6 +1,10 @@
A fazer
- Checar NVME no modelo DS920+, DS918+
- Checar módulo tg3 no próprio loader (BCM57780 [14e4:1692]) (#31)
- "Sensitive data" (#312)
- Checar drivers para MMC/SD/eMMC
- Checar drivers para chelsio T420, T520 e T580
-
Concluidos:
- Generalizar código dos addons

View File

@@ -1 +1 @@
1.0-beta3
1.0-beta7

View File

@@ -3,7 +3,7 @@ ARG PLATFORMS="@@@PLATFORMS@@@"
ARG TOOLKIT_VER="@@@TOOLKIT_VER@@@"
# Copy downloaded toolkits
ADD cache/$TOOLKIT_VER /cache
ADD cache /cache
# Extract toolkits
RUN for V in ${PLATFORMS}; do \
echo "${V}" | while IFS=':' read PLATFORM KVER; do \
@@ -23,7 +23,7 @@ ENV SHELL=/bin/bash \
ARCH=x86_64
RUN apt update --yes && \
apt install --yes --no-install-recommends --no-install-suggests \
apt install --yes --no-install-recommends --no-install-suggests --allow-unauthenticated \
ca-certificates nano curl bc kmod git gettext texinfo autopoint gawk sudo \
build-essential make ncurses-dev libssl-dev autogen automake pkg-config libtool xsltproc gperf && \
apt-get clean && \

View File

@@ -1,5 +1,8 @@
#!/usr/bin/env bash
CACHE_DIR="cache"
PLATFORM_FILE="../../PLATFORMS"
###############################################################################
function trap_cancel() {
echo "Press Control+C once more terminate the process (or wait 2s for it to restart)"
@@ -19,32 +22,34 @@ function prepare() {
URLS["denverton"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28Denverton%29/denverton-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["geminilake"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28GeminiLake%29/geminilake-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["v1000"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/Intel%20x86%20Linux%204.4.180%20%28V1000%29/v1000-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["r1000"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/AMD%20x86%20Linux%204.4.180%20%28r1000%29/r1000-${GCCLIB_VER}_x86_64-GPL.txz"
URLS["epyc7002"]="https://global.download.synology.com/download/ToolChain/toolchain/${TOOLCHAIN_VER}/AMD%20x86%20Linux%20Linux%205.10.55%20%28epyc7002%29/epyc7002-${GCCLIB_VER}_x86_64-GPL.txz"
# Read platforms/kerver version
echo "Reading platforms"
declare -A PLATFORMS
while read PLATFORM KVER; do
PLATFORMS[${PLATFORM}]="${KVER}"
done <../PLATFORMS
done < ${PLATFORM_FILE}
# Download toolkits
mkdir -p cache
mkdir -p ${CACHE_DIR}
for PLATFORM in ${!PLATFORMS[@]}; do
KVER="${PLATFORMS[${PLATFORM}]}"
echo -n "Checking cache/${TOOLKIT_VER}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz... "
if [ ! -f "cache/${TOOLKIT_VER}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" ]; then
echo -n "Checking ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz... "
if [ ! -f "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "cache/${TOOLKIT_VER}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
curl -L "${URL}" -o "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
else
echo "OK"
fi
echo -n "Checking cache/${TOOLKIT_VER}/${PLATFORM}-toolchain.txz... "
if [ ! -f "cache/${TOOLKIT_VER}/${PLATFORM}-toolchain.txz" ]; then
echo -n "Checking ${CACHE_DIR}/${PLATFORM}-toolchain.txz... "
if [ ! -f "${CACHE_DIR}/${PLATFORM}-toolchain.txz" ]; then
URL=${URLS["${PLATFORM}"]}
echo "Downloading ${URL}"
curl -L "${URL}" -o "cache/${TOOLKIT_VER}/${PLATFORM}-toolchain.txz"
curl -L "${URL}" -o "${CACHE_DIR}/${PLATFORM}-toolchain.txz"
else
echo "OK"
fi
@@ -62,13 +67,13 @@ function prepare() {
}
# 7.0
TOOLKIT_VER="7.0"
TOOLCHAIN_VER="7.0-41890"
GCCLIB_VER="gcc750_glibc226"
prepare
echo "Building ${TOOLKIT_VER}"
docker image rm fbelavenuto/syno-compiler:${TOOLKIT_VER} >/dev/null 2>&1
docker buildx build . --load --tag fbelavenuto/syno-compiler:${TOOLKIT_VER}
#TOOLKIT_VER="7.0"
#TOOLCHAIN_VER="7.0-41890"
#GCCLIB_VER="gcc750_glibc226"
#prepare
#echo "Building ${TOOLKIT_VER}"
#docker image rm fbelavenuto/syno-compiler:${TOOLKIT_VER} >/dev/null 2>&1
#docker buildx build . --load --tag fbelavenuto/syno-compiler:${TOOLKIT_VER}
# 7.1
TOOLKIT_VER="7.1"

View File

@@ -9,15 +9,16 @@ function export-vars() {
echo "Use: export-vars <platform>"
exit 1
fi
export PLATFORM="${1}"
export KSRC="/opt/${1}/build"
export CROSS_COMPILE="/opt/${1}/bin/x86_64-pc-linux-gnu-"
export CFLAGS="-I/opt/${1}/include"
export LDFLAGS="-I/opt/${1}/lib"
export LD_LIBRARY_PATH="/opt/${1}/lib"
export ARCH=x86_64
export PATH="/opt/${1}/bin:${PATH}"
export CC="x86_64-pc-linux-gnu-gcc"
export LD="x86_64-pc-linux-gnu-ld"
export PATH="/opt/${1}/bin:${PATH}"
}
###############################################################################

View File

@@ -0,0 +1,15 @@
FROM scratch
ARG PLATFORM
ARG TOOLKIT_VER
ARG CACHE_DIR
ENV PLATFORM=${PLATFORM} TOOLKIT_VER=${TOOLKIT_VER}
ADD ${CACHE_DIR}/base_env-${TOOLKIT_VER}.txz /
ADD ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz /
ADD ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz /
ADD rootfs /
WORKDIR /input
VOLUME /input /output
ENTRYPOINT ["/usr/bin/do.sh"]

61
docker/syno-toolkit/build.sh Executable file
View File

@@ -0,0 +1,61 @@
#!/usr/bin/env bash
set -e
CACHE_DIR="cache"
PLATFORM_FILE="../../PLATFORMS"
TOOLKIT_VER=7.1
###############################################################################
function trap_cancel() {
echo "Press Control+C once more terminate the process (or wait 2s for it to restart)"
sleep 2 || exit 1
}
trap trap_cancel SIGINT SIGTERM
cd `dirname $0`
# Read platforms/kerver version
echo "Reading platforms"
declare -A PLATFORMS
while read PLATFORM KVER; do
PLATFORMS[${PLATFORM}]="${KVER}"
done < ${PLATFORM_FILE}
# Download toolkits
mkdir -p ${CACHE_DIR}
# Check base environment
echo -n "Checking ${CACHE_DIR}/base_env-${TOOLKIT_VER}.txz... "
if [ ! -f "${CACHE_DIR}/base_env-${TOOLKIT_VER}.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/base_env-${TOOLKIT_VER}.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/base_env-${TOOLKIT_VER}.txz"
else
echo "OK"
fi
# Check all platforms
for PLATFORM in ${!PLATFORMS[@]}; do
echo -n "Checking ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz... "
if [ ! -f "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.dev.txz"
else
echo "OK"
fi
echo -n "Checking ${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz... "
if [ ! -f "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz" ]; then
URL="https://global.download.synology.com/download/ToolChain/toolkit/${TOOLKIT_VER}/${PLATFORM}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz"
echo "Downloading ${URL}"
curl -L "${URL}" -o "${CACHE_DIR}/ds.${PLATFORM}-${TOOLKIT_VER}.env.txz"
else
echo "OK"
fi
done
# Generate docker images
for PLATFORM in ${!PLATFORMS[@]}; do
docker buildx build . --build-arg PLATFORM=${PLATFORM} --build-arg TOOLKIT_VER=${TOOLKIT_VER} --build-arg CACHE_DIR="${CACHE_DIR}" \
--tag fbelavenuto/syno-toolkit:${PLATFORM}-${TOOLKIT_VER} --load
done

View File

@@ -0,0 +1,10 @@
export PATH="/usr/local/x86_64-pc-linux-gnu/bin:${PATH}"
[[ "$-" != *i* ]] && return
export LS_OPTIONS='--color=auto'
export SHELL='linux'
eval "`dircolors`"
alias ls='ls -F -h --color=always -v --author --time-style=long-iso'
alias ll='ls -l'
alias l='ls -l -a'
alias h='history 25'
alias j='jobs -l'

View File

@@ -0,0 +1,52 @@
#!/usr/bin/env bash
set -e
###############################################################################
function compile-module {
echo -e "Compiling module for \033[7m${PLATFORM}\033[0m..."
cp -R /input /tmp
make -C ${KSRC} M=/tmp/input ${PLATFORM^^}-Y=y ${PLATFORM^^}-M=m modules
while read F; do
strip -g "${F}"
echo "Copying `basename ${F}`"
cp "${F}" "/output"
chown 1000.1000 "/output/`basename ${F}`"
done < <(find /tmp/input -name \*.ko)
}
###############################################################################
function compile-lkm {
cp -R /input /tmp
make -C "/tmp/input" dev-v7
strip -g "/tmp/input/redpill.ko"
mv "/tmp/input/redpill.ko" "/output/redpill-dev.ko"
chown 1000.1000 /output/redpill-dev.ko
make -C "/tmp/input" clean
make -C "/tmp/input" prod-v7
strip -g "/tmp/input/redpill.ko"
mv "/tmp/input/redpill.ko" "/output/redpill-prod.ko"
chown 1000.1000 /output/redpill-prod.ko
}
###############################################################################
###############################################################################
if [ $# -lt 1 ]; then
echo "Use: <command> (<params>)"
echo "Commands: shell | compile-module | compile-lkm"
exit 1
fi
export KSRC="/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TOOLKIT_VER}/build"
export LINUX_SRC="/usr/local/x86_64-pc-linux-gnu/x86_64-pc-linux-gnu/sys-root/usr/lib/modules/DSM-${TOOLKIT_VER}/build"
export CROSS_COMPILE="/usr/local/x86_64-pc-linux-gnu/bin/x86_64-pc-linux-gnu-"
export ARCH=x86_64
export CC="x86_64-pc-linux-gnu-gcc"
export LD="x86_64-pc-linux-gnu-ld"
case $1 in
shell) shift && bash -l $@ ;;
compile-module) compile-module ;;
compile-lkm) compile-lkm ;;
*) echo "Command not recognized: $1" ;;
esac

View File

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

View File

@@ -102,10 +102,10 @@ fi
# Prepare command line
CMDLINE_LINE=""
CMDLINE_DIRECT=""
grep -q "force_junior" /proc/cmdline && CMDLINE_LINE+="force_junior "
[ ${EFI} -eq 1 ] && CMDLINE_LINE+="withefi "
[ "${BUS}" = "ata" ] && CMDLINE_LINE+="synoboot_satadom=${DOM} dom_szmax=${SIZE} "
CMDLINE_DIRECT="${CMDLINE_LINE}"
CMDLINE_LINE+="console=ttyS0,115200n8 earlyprintk log_buf_len=32M earlycon=uart8250,io,0x3f8,115200n8 elevator=elevator root=/dev/md0 loglevel=15"
for KEY in ${!CMDLINE[@]}; do
VALUE="${CMDLINE[${KEY}]}"
@@ -117,7 +117,6 @@ done
# Escape special chars
CMDLINE_LINE=`echo ${CMDLINE_LINE} | sed 's/>/\\\\>/g'`
CMDLINE_DIRECT=`echo ${CMDLINE_DIRECT} | sed 's/>/\\\\>/g'`
grub-editenv ${GRUB_PATH}/grubenv set dsm_cmdline="${CMDLINE_DIRECT}"
echo -e "Cmdline:\n\033[1;36m${CMDLINE_LINE}\033[0m"
# Wait for an IP
@@ -128,7 +127,7 @@ while true; do
if [ -n "${IP}" ]; then
echo -e ": \033[1;32m${IP}\033[0m"
break
elif [ ${COUNT} -eq 15 ]; then
elif [ ${COUNT} -eq 30 ]; then
echo -e ": \033[1;31mERROR\033[0m"
break
fi
@@ -139,6 +138,7 @@ done
DIRECT="`readConfigKey "directboot" "${USER_CONFIG_FILE}"`"
if [ "${DIRECT}" = "true" ]; then
grub-editenv ${GRUB_PATH}/grubenv set dsm_cmdline="${CMDLINE_DIRECT}"
echo -e "\033[1;33mReboot to boot directly in DSM\033[0m"
grub-editenv ${GRUB_PATH}/grubenv set next_entry="direct"
reboot

View File

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

View File

@@ -160,7 +160,7 @@ fi
COUNT=0
echo -n "Waiting IP."
while true; do
if [ ${COUNT} -eq 15 ]; then
if [ ${COUNT} -eq 30 ]; then
echo "ERROR"
break
fi

View File

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

View File

@@ -9,6 +9,7 @@ synoinfo: &synoinfo
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"
#support_ssd_cache: yes
cmdline: &cmdline
syno_hdd_powerup_seq: 0
HddHotplug: 0

View File

@@ -0,0 +1,49 @@
id: "DS923+"
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: "r1000"
unique: "synology_r1000_923+"
beta: true
dom: 2
dt: true
serial:
prefix:
- "2030"
- "2040"
- "20C0"
- "2150"
middle: "SBR"
suffix: "alpha"
disks: 4
builds:
42962:
ver: "7.1.1"
kver: "4.4.180"
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_DS923%2B_42962.pat"
hash: "e33b47df446ce0bd99c5613767c9dba977915e25acfb5ccb9f5650b14459458f"
ramdisk-hash: "0aa3f1b2d00f887aaf0d0e2c8b51ec97bb545bf5f99c40f33d3eaabc32a5ac03"
zimage-hash: "1e54804c84e0b4e7f71eff5b5ec8aad9c6ba8fb4fc200ad92251d7d29155a651"
md5-hash: "fdff6232dacf9bd3b189506f51577128"
patch:
- "ramdisk-common-disable-root-pwd.patch"
- "ramdisk-common-init-script.patch"
- "ramdisk-common-etc-rc.patch"
- "ramdisk-42951-post-init-script.patch"

View File

@@ -0,0 +1 @@
1.0-beta7

View File

@@ -23,3 +23,6 @@ available-for:
v1000-4.4.180:
install-script: *script
copy: "v1000-4.4.180"
r1000-4.4.180:
install-script: *script
copy: "r1000-4.4.180"

Binary file not shown.

View File

@@ -12,3 +12,5 @@ available-for:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:
r1000-4.4.180:
epyc7002-5.10.55:

View File

@@ -12,3 +12,5 @@ available-for:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:
r1000-4.4.180:
epyc7002-5.10.55:

View File

@@ -14,3 +14,5 @@ available-for:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:
r1000-4.4.180:
epyc7002-5.10.55:

View File

@@ -14,3 +14,5 @@ available-for:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:
r1000-4.4.180:
epyc7002-5.10.55:

View File

@@ -0,0 +1,11 @@
version: 1
name: i915-10th
description: "mzcls687's Intel iGPU Drivers (10th Gen)"
obs: https://xpenology.com/forum/topic/59909-i915ko-backported-driver-for-intel-10th-gen-ds918-ver-701-up3
available-for:
apollolake-4.4.180:
install-script: "install.sh"
copy: "apollolake-4.4.180"
geminilake-4.4.180:
install-script: "install.sh"
copy: "geminilake-4.4.180"

View File

@@ -1,5 +1,5 @@
version: 1
name: i915-3e98
name: i915-8th
description: "Cryental's Intel iGPU Drivers (8-9th Gen)"
available-for:
apollolake-4.4.180:

View File

@@ -12,3 +12,5 @@ available-for:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:
r1000-4.4.180:
epyc7002-5.10.55:

View File

@@ -13,3 +13,5 @@ available-for:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:
r1000-4.4.180:
epyc7002-5.10.55:

View File

@@ -12,3 +12,5 @@ available-for:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:
r1000-4.4.180:
epyc7002-5.10.55:

View File

@@ -1,6 +1,5 @@
version: 1
name: powersched
system: true
description: "Utility to configure RTC according to DSM power schedule"
compile-script: compile.sh
all:
@@ -14,3 +13,5 @@ available-for:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:
r1000-4.4.180:
epyc7002-5.10.55:

View File

@@ -1,13 +0,0 @@
version: 1
name: remove-pma
description: "Create a systemd timer to remove *.pma files from Surveillance Station (#215 issue)"
all:
install-script: "install.sh"
available-for:
bromolow-3.10.108:
apollolake-4.4.180:
broadwell-4.4.180:
broadwellnk-4.4.180:
denverton-4.4.180:
geminilake-4.4.180:
v1000-4.4.180:

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -72,3 +72,4 @@ BR2_TARGET_ROOTFS_CPIO_XZ=y
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_E2FSPROGS=y
BR2_PACKAGE_R8125=y

View File

@@ -71,6 +71,7 @@ fi
echo "Copying files"
VERSION=`cat VERSION`
sed 's/^ARPL_VERSION=.*/ARPL_VERSION="'${VERSION}'"/' -i files/board/arpl/overlayfs/opt/arpl/include/consts.sh
echo "${VERSION}" > files/board/arpl/p1/ARPL-VERSION
cp -Ru files/* .buildroot/
cd .buildroot

View File

@@ -7,6 +7,7 @@ set -e
declare -A KVERS
KVERS["DS918+"]="4.4.180"
KVERS["DS920+"]="4.4.180"
KVERS["DS923+"]="4.4.180"
KVERS["DS1520+"]="4.4.180"
KVERS["DS1621+"]="4.4.180"
KVERS["DS2422+"]="4.4.180"
@@ -22,7 +23,7 @@ RELEASE="7.1.1"
BUILDNUMBER="42962"
EXTRA=""
for MODEL in DS918+ DS920+ DS1520+ DS1621+ DS2422+ DS3615xs DS3617xs DS3622xs+ DVA1622 DVA3221 DVA3219 FS2500 RS4021xs+; do
for MODEL in DS918+ DS920+ DS923+ DS1520+ DS1621+ DS2422+ DS3615xs DS3617xs DS3622xs+ DVA1622 DVA3221 DVA3219 FS2500 RS4021xs+; do
MODEL_CODED=`echo ${MODEL} | sed 's/+/%2B/g'`
URL="https://global.download.synology.com/download/DSM/release/${RELEASE}/${BUILDNUMBER}${EXTRA}/DSM_${MODEL_CODED}_${BUILDNUMBER}.pat"
#URL="https://archive.synology.com/download/Os/DSM/${RELEASE}-${BUILDNUMBER}/DSM_${MODEL_CODED}_${BUILDNUMBER}.pat"

View File

@@ -61,6 +61,11 @@
"mLink": "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS920%2B_42962.pat",
"mCheckSum": "ba9fbd499791d19859dd9a53372b016a"
},
{
"mUnique": "synology_r1000_923+",
"mLink": "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS923%2B_42962.pat",
"mCheckSum": "fdff6232dacf9bd3b189506f51577128"
},
{
"mUnique": "synology_geminilake_dva1622",
"mLink": "https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DVA1622_42962.pat",

View File

@@ -57,6 +57,11 @@
<mLink>https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS920%2B_42962.pat</mLink>
<mCheckSum>ba9fbd499791d19859dd9a53372b016a</mCheckSum>
</model>
<model>
<mUnique>synology_r1000_923+</mUnique>
<mLink>https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DS923%2B_42962.pat</mLink>
<mCheckSum>fdff6232dacf9bd3b189506f51577128</mCheckSum>
</model>
<model>
<mUnique>synology_geminilake_dva1622</mUnique>
<mLink>https://global.download.synology.com/download/DSM/release/7.1.1/42962/DSM_DVA1622_42962.pat</mLink>

View File

@@ -2,4 +2,5 @@ replace:
".buildroot/output/images/bzImage": "/mnt/p3/bzImage-arpl"
".buildroot/output/images/rootfs.cpio.xz": "/mnt/p3/initrd-arpl"
"files/board/arpl/p1/grub/grub.cfg": "/mnt/p1/grub/grub.cfg"
"files/board/arpl/p1/ARPL-VERSION" : "/mnt/p1/ARPL-VERSION"
remove: