mirror of
https://github.com/fbelavenuto/arpl.git
synced 2025-12-24 23:12:05 +08:00
Compare commits
45 Commits
v1.0-beta3
...
v1.0-beta7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8b9e4c7cec | ||
|
|
40537993ff | ||
|
|
e1c6bd55c9 | ||
|
|
23820c56c3 | ||
|
|
675324c25b | ||
|
|
71dc04fc1d | ||
|
|
328dcbbd59 | ||
|
|
db1001f2ad | ||
|
|
029b97b981 | ||
|
|
950166fc7d | ||
|
|
5afb934769 | ||
|
|
d1deb55921 | ||
|
|
cc8c6a3812 | ||
|
|
523bbfbc50 | ||
|
|
2d76ba320f | ||
|
|
5495484c9a | ||
|
|
7b67dd0456 | ||
|
|
aa0976ca4f | ||
|
|
f7c0b4fcd5 | ||
|
|
08af5fd185 | ||
|
|
7ef9a87347 | ||
|
|
b21e1e4924 | ||
|
|
56c214c2a8 | ||
|
|
d903e4237b | ||
|
|
6f238af8c1 | ||
|
|
3b490c9c86 | ||
|
|
a0120f8d5d | ||
|
|
e4622f92d7 | ||
|
|
3898e3c3d9 | ||
|
|
a8534dccf5 | ||
|
|
c00c94fdfd | ||
|
|
f6dbd4b8cd | ||
|
|
efb54e1345 | ||
|
|
d220958442 | ||
|
|
d95a88f513 | ||
|
|
36fca1cb0d | ||
|
|
d91468ba66 | ||
|
|
a136b3e3ec | ||
|
|
ea43525e6b | ||
|
|
8fe46adb66 | ||
|
|
35d66d37cf | ||
|
|
55d3cf0bde | ||
|
|
8411febf6d | ||
|
|
227e1f19a7 | ||
|
|
2fadc03782 |
1
.github/workflows/main.yml
vendored
1
.github/workflows/main.yml
vendored
@@ -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
4
.gitignore
vendored
@@ -5,7 +5,7 @@ arpl*.vmdk
|
||||
*.zip
|
||||
.buildroot
|
||||
test*.sh
|
||||
docker/Dockerfile
|
||||
docker/cache
|
||||
docker/syno-compiler/Dockerfile
|
||||
cache
|
||||
*.bak
|
||||
*.o
|
||||
|
||||
@@ -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
4
TODO
@@ -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
|
||||
|
||||
@@ -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 && \
|
||||
@@ -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"
|
||||
@@ -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}"
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
15
docker/syno-toolkit/Dockerfile
Normal file
15
docker/syno-toolkit/Dockerfile
Normal 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
61
docker/syno-toolkit/build.sh
Executable 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
|
||||
10
docker/syno-toolkit/rootfs/etc/profile.d/login.sh
Executable file
10
docker/syno-toolkit/rootfs/etc/profile.d/login.sh
Executable 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'
|
||||
52
docker/syno-toolkit/rootfs/usr/bin/do.sh
Executable file
52
docker/syno-toolkit/rootfs/usr/bin/do.sh
Executable 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
ARPL_VERSION="1.0-beta3"
|
||||
ARPL_VERSION="1.0-beta7"
|
||||
|
||||
# Define paths
|
||||
TMP_PATH="/tmp"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ;;
|
||||
|
||||
@@ -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
|
||||
|
||||
49
files/board/arpl/overlayfs/opt/arpl/model-configs/DS923+.yml
Normal file
49
files/board/arpl/overlayfs/opt/arpl/model-configs/DS923+.yml
Normal 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"
|
||||
1
files/board/arpl/p1/ARPL-VERSION
Normal file
1
files/board/arpl/p1/ARPL-VERSION
Normal file
@@ -0,0 +1 @@
|
||||
1.0-beta7
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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"
|
||||
|
||||
BIN
files/board/arpl/p3/addons/9p/r1000-4.4.180.tgz
Normal file
BIN
files/board/arpl/p3/addons/9p/r1000-4.4.180.tgz
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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:
|
||||
Binary file not shown.
@@ -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:
|
||||
|
||||
Binary file not shown.
@@ -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:
|
||||
|
||||
Binary file not shown.
@@ -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:
|
||||
|
||||
BIN
files/board/arpl/p3/addons/i915-10th/apollolake-4.4.180.tgz
Normal file
BIN
files/board/arpl/p3/addons/i915-10th/apollolake-4.4.180.tgz
Normal file
Binary file not shown.
BIN
files/board/arpl/p3/addons/i915-10th/geminilake-4.4.180.tgz
Normal file
BIN
files/board/arpl/p3/addons/i915-10th/geminilake-4.4.180.tgz
Normal file
Binary file not shown.
11
files/board/arpl/p3/addons/i915-10th/manifest.yml
Normal file
11
files/board/arpl/p3/addons/i915-10th/manifest.yml
Normal 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"
|
||||
Binary file not shown.
@@ -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:
|
||||
Binary file not shown.
@@ -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:
|
||||
|
||||
Binary file not shown.
@@ -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:
|
||||
|
||||
Binary file not shown.
@@ -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:
|
||||
|
||||
Binary file not shown.
@@ -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:
|
||||
|
||||
Binary file not shown.
@@ -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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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/lkms/rp-r1000-4.4.180-dev.ko.gz
Normal file
BIN
files/board/arpl/p3/lkms/rp-r1000-4.4.180-dev.ko.gz
Normal file
Binary file not shown.
BIN
files/board/arpl/p3/lkms/rp-r1000-4.4.180-prod.ko.gz
Normal file
BIN
files/board/arpl/p3/lkms/rp-r1000-4.4.180-prod.ko.gz
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
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/r1000-4.4.180.tgz
Normal file
BIN
files/board/arpl/p3/modules/r1000-4.4.180.tgz
Normal file
Binary file not shown.
Binary file not shown.
@@ -72,3 +72,4 @@ BR2_TARGET_ROOTFS_CPIO_XZ=y
|
||||
BR2_PACKAGE_HOST_DOSFSTOOLS=y
|
||||
BR2_PACKAGE_HOST_E2FSPROGS=y
|
||||
BR2_PACKAGE_R8125=y
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
5
rss.json
5
rss.json
@@ -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",
|
||||
|
||||
5
rss.xml
5
rss.xml
@@ -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>
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user