Revision Initialization

This commit is contained in:
Ing 2024-05-05 23:01:49 +08:00
parent e2e9fabfbc
commit 00c4aa7b99
81 changed files with 7516 additions and 9883 deletions

View File

@ -39,7 +39,7 @@ jobs:
- name: Get Release RR - name: Get Release RR
run: | run: |
REPO="${{ github.server_url }}/${{ github.repository }}" REPO="${{ github.server_url }}/${{ github.repository }}"
PRERELEASE="false" PRERELEASE="true"
TAG="" TAG=""
if [ "${PRERELEASE}" = "true" ]; then if [ "${PRERELEASE}" = "true" ]; then

View File

@ -144,7 +144,7 @@ jobs:
REPO="${{ github.server_url }}/${{ github.repository }}" REPO="${{ github.server_url }}/${{ github.repository }}"
MODEL="${{ env.model }}" MODEL="${{ env.model }}"
VERSION="${{ env.version }}" VERSION="${{ env.version }}"
PRERELEASE="false" PRERELEASE="true"
TAG="" TAG=""
if [ "${PRERELEASE}" = "true" ]; then if [ "${PRERELEASE}" = "true" ]; then

View File

@ -3,7 +3,6 @@
<h1>RR: <small>redpills preinstallation and recovery environment</small></h1> <h1>RR: <small>redpills preinstallation and recovery environment</small></h1>
[![点击数](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https://github.com/rrorg/rr&edge_flat=true)](https://github.com/rrorg/rr) [![点击数](https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https://github.com/rrorg/rr&edge_flat=true)](https://github.com/rrorg/rr)
[![翻译状态](https://hosted.weblate.org/widget/RROrg/svg-badge.svg)](https://hosted.weblate.org/engage/RROrg/")
[![GitHub Release](https://img.shields.io/github/v/release/rrorg/rr?style=flat-square)](https://github.com/rrorg/rr/releases/latest) [![GitHub Release](https://img.shields.io/github/v/release/rrorg/rr?style=flat-square)](https://github.com/rrorg/rr/releases/latest)
[![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/rrorg/rr/total?style=flat-square)](https://github.com/rrorg/rr/releases) [![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/rrorg/rr/total?style=flat-square)](https://github.com/rrorg/rr/releases)
[![GitHub Issues or Pull Requests by label](https://img.shields.io/github/issues-closed-raw/rrorg/rr/custom?style=flat-square&label=custom)](https://rrorg.github.io/rr/) [![GitHub Issues or Pull Requests by label](https://img.shields.io/github/issues-closed-raw/rrorg/rr/custom?style=flat-square&label=custom)](https://rrorg.github.io/rr/)
@ -39,12 +38,7 @@ For the packag of has been initialized and build image, please go to [RR-CUSTOM]
- [intel-gpu-i915-backports](https://github.com/MoetaYuko/intel-gpu-i915-backports) - [intel-gpu-i915-backports](https://github.com/MoetaYuko/intel-gpu-i915-backports)
## 5: Contributing ## 5: Contributing
- [Weblate mode](https://hosted.weblate.org/engage/RROrg/)
<a href="https://hosted.weblate.org/engage/RROrg/">
<img src="https://hosted.weblate.org/widget/RROrg/multi-auto.svg" alt="翻译状态" />
</a>
- Manual mode:
* The following is a roughly truncated guide to involve in project localization for internationalization. * The following is a roughly truncated guide to involve in project localization for internationalization.
```shell ```shell

View File

@ -37,6 +37,10 @@
var repo = "RROrg/rr" var repo = "RROrg/rr"
var _models = {};
var _addons = {};
var _modules = {};
function httpGetAsync(theUrl, callback) { function httpGetAsync(theUrl, callback) {
let xmlHttpReq = new XMLHttpRequest(); let xmlHttpReq = new XMLHttpRequest();
xmlHttpReq.onreadystatechange = function () { xmlHttpReq.onreadystatechange = function () {
@ -53,7 +57,7 @@
function init() { function init() {
httpGetAsync("https://raw.githubusercontent.com/RROrg/rr/main/docs/models.json", function (result) { httpGetAsync("https://raw.githubusercontent.com/RROrg/rr/main/docs/models.json", function (result) {
_models = JSON.parse(result); //_models = JSON.parse(result);
httpGetAsync("https://raw.githubusercontent.com/RROrg/rr/main/docs/addons.json", function (result) { httpGetAsync("https://raw.githubusercontent.com/RROrg/rr/main/docs/addons.json", function (result) {
_addons = JSON.parse(result); _addons = JSON.parse(result);
httpGetAsync("https://raw.githubusercontent.com/RROrg/rr/main/docs/modules.json", function (result) { httpGetAsync("https://raw.githubusercontent.com/RROrg/rr/main/docs/modules.json", function (result) {
@ -69,7 +73,10 @@
} }
function setModels() { function setModels() {
var models = Object.keys(_models).sort(); var models = [];
for (var P in _models) {
models = models.concat(_models[P]["models"]);
}
$("#model")[0].options.length = 0; $("#model")[0].options.length = 0;
for (var i = 0; i < models.length; i++) { for (var i = 0; i < models.length; i++) {
var model = models[i]; var model = models[i];
@ -79,7 +86,13 @@
} }
function changeModel() { function changeModel() {
model = $("#model").val(); model = $("#model").val();
var versions = Object.keys(_models[model]["productvers"]).reverse(); var versions = [];
for (var P in _models) {
if (_models[P]["models"].includes(model)) {
versions = Object.keys(_models[P]["productvers"]).reverse();
break;
}
}
$("#version")[0].options.length = 0; $("#version")[0].options.length = 0;
for (var i = 0; i < versions.length; i++) { for (var i = 0; i < versions.length; i++) {
var version = versions[i]; var version = versions[i];
@ -124,7 +137,13 @@
function createModulesBtn() { function createModulesBtn() {
var model = $("#model").val(); var model = $("#model").val();
var version = $("#version").val(); var version = $("#version").val();
var platform = _models[model]["platform"] + "-" + _models[model]["productvers"][version]; var platform = "";
for (var P in _models) {
if (_models[P]["models"].includes(model)) {
platform = P + "-" + _models[P]["productvers"][version];
break;
}
}
var extstr = []; var extstr = [];
var idx = 1; var idx = 1;
var html = `<div class="form-group-body" id="modules_btns">`; var html = `<div class="form-group-body" id="modules_btns">`;
@ -287,8 +306,8 @@
<label class="color-fg-default text-mono f6">Addons:</label> <label class="color-fg-default text-mono f6">Addons:</label>
</div> </div>
<div class="form-group-body"> <div class="form-group-body">
<textarea class="textarea-style input-contrast input-sm" type="text" id="addons" <textarea class="textarea-style input-contrast input-sm" type="text" id="addons" name="inputs[addons]"
name="inputs[addons]" disabled></textarea> disabled></textarea>
<div class="form-group-body" id="addons_btns"> <div class="form-group-body" id="addons_btns">
</div> </div>
</div> </div>
@ -298,8 +317,8 @@
<label class="color-fg-default text-mono f6">Modules:</label> <label class="color-fg-default text-mono f6">Modules:</label>
</div> </div>
<div class="form-group-body"> <div class="form-group-body">
<textarea class="textarea-style input-contrast input-sm" type="text" id="modules" <textarea class="textarea-style input-contrast input-sm" type="text" id="modules" name="inputs[modules]"
name="inputs[modules]" disabled></textarea> disabled></textarea>
<div class="form-group-body" id="modules_btns"> <div class="form-group-body" id="modules_btns">
</div> </div>
</div> </div>

View File

@ -17,7 +17,7 @@ BUS=$(getBus "${LOADER_DISK}")
# Print text centralized # Print text centralized
clear clear
[ -z "${COLUMNS}" ] && COLUMNS=50 [ -z "${COLUMNS}" ] && COLUMNS=50
TITLE="$(printf "$(TEXT "Welcome to %s")" "${RR_TITLE}")" TITLE="$(printf "$(TEXT "Welcome to %s")" "$([ -z "${RR_RELEASE}" ] && echo "${RR_TITLE}" || echo "${RR_TITLE}(${RR_RELEASE})")")"
printf "\033[1;44m%*s\n" ${COLUMNS} "" printf "\033[1;44m%*s\n" ${COLUMNS} ""
printf "\033[1;44m%*s\033[A\n" ${COLUMNS} "" printf "\033[1;44m%*s\033[A\n" ${COLUMNS} ""
printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}" printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}"
@ -51,7 +51,9 @@ fi
[ -f ${PART1_PATH}/.build ] && rm -f ${PART1_PATH}/.build [ -f ${PART1_PATH}/.build ] && rm -f ${PART1_PATH}/.build
# Load necessary variables # Load necessary variables
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")" MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
MODELID="$(readConfigKey "modelid" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")" BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")" SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
@ -70,11 +72,6 @@ echo -e "$(TEXT "DMI: ") \033[1;36m${DMI}\033[0m"
echo -e "$(TEXT "CPU: ") \033[1;36m${CPU}\033[0m" echo -e "$(TEXT "CPU: ") \033[1;36m${CPU}\033[0m"
echo -e "$(TEXT "MEM: ") \033[1;36m${MEM}\033[0m" echo -e "$(TEXT "MEM: ") \033[1;36m${MEM}\033[0m"
if [ ! -f "${WORK_PATH}/model-configs/${MODEL}.yml" ] || [ -z "$(readModelKey ${MODEL} "productvers.[${PRODUCTVER}]")" ]; then
echo -e "\033[1;33m*** $(printf "$(TEXT "The current version of bootloader does not support booting %s-%s, please upgrade and rebuild.")" "${MODEL}" "${PRODUCTVER}") ***\033[0m"
exit 1
fi
if ! readConfigMap "addons" "${USER_CONFIG_FILE}" | grep -q nvmesystem; then if ! readConfigMap "addons" "${USER_CONFIG_FILE}" | grep -q nvmesystem; then
HASATA=0 HASATA=0
for D in $(lsblk -dpno NAME); do for D in $(lsblk -dpno NAME); do
@ -98,12 +95,9 @@ EMMCBOOT="$(readConfigKey "emmcboot" "${USER_CONFIG_FILE}")"
declare -A CMDLINE declare -A CMDLINE
# Automatic values # Automatic values
MODELID="$(readModelKey ${MODEL} "id")"
CMDLINE['syno_hw_version']="${MODELID:-${MODEL}}" CMDLINE['syno_hw_version']="${MODELID:-${MODEL}}"
[ -z "${VID}" ] && VID="0x46f4" # Sanity check CMDLINE['vid']="${VID:-"0x46f4"}" # Sanity check
[ -z "${PID}" ] && PID="0x0001" # Sanity check CMDLINE['pid']="${PID:-"0x0001"}" # Sanity check
CMDLINE['vid']="${VID}"
CMDLINE['pid']="${PID}"
CMDLINE['sn']="${SN}" CMDLINE['sn']="${SN}"
CMDLINE['netif_num']="0" CMDLINE['netif_num']="0"
@ -124,15 +118,29 @@ if [ ${EFI} -eq 1 ]; then
else else
CMDLINE['noefi']="" CMDLINE['noefi']=""
fi fi
DT="$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")"
KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
if [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 5 ]; then
if [ ! "${BUS}" = "usb" ]; then if [ ! "${BUS}" = "usb" ]; then
SZ=$(blockdev --getsz ${LOADER_DISK} 2>/dev/null) # SZ=$(cat /sys/block/${LOADER_DISK/\/dev\//}/size) SZ=$(blockdev --getsz ${LOADER_DISK} 2>/dev/null) # SZ=$(cat /sys/block/${LOADER_DISK/\/dev\//}/size)
SS=$(blockdev --getss ${LOADER_DISK} 2>/dev/null) # SS=$(cat /sys/block/${LOADER_DISK/\/dev\//}/queue/hw_sector_size) SS=$(blockdev --getss ${LOADER_DISK} 2>/dev/null) # SS=$(cat /sys/block/${LOADER_DISK/\/dev\//}/queue/hw_sector_size)
SIZE=$((${SZ:-0} * ${SS:-0} / 1024 / 1024 + 10)) SIZE=$((${SZ:-0} * ${SS:-0} / 1024 / 1024 + 10))
# Read SATADoM type # Read SATADoM type
DOM="$(readModelKey "${MODEL}" "dom")" SATADOM="$(readConfigKey "satadom" "${USER_CONFIG_FILE}")"
CMDLINE['synoboot_satadom']="${DOM}" CMDLINE['synoboot_satadom']="${SATADOM:-2}"
CMDLINE['dom_szmax']="${SIZE}" CMDLINE['dom_szmax']="${SIZE}"
fi fi
CMDLINE["elevator"]="elevator"
fi
if [ "${DT}" = "true" ]; then
CMDLINE["syno_ttyS0"]="serial,0x3f8"
CMDLINE["syno_ttyS1"]="serial,0x2f8"
else
CMDLINE["SMBusHddDynamicPower"]="1"
CMDLINE["syno_hdd_detect"]="0"
CMDLINE["syno_hdd_powerup_seq"]="0"
fi
CMDLINE['panic']="${KERNELPANIC:-0}" CMDLINE['panic']="${KERNELPANIC:-0}"
CMDLINE['console']="ttyS0,115200n8" CMDLINE['console']="ttyS0,115200n8"
# CMDLINE['no_console_suspend']="1" # CMDLINE['no_console_suspend']="1"
@ -143,21 +151,24 @@ CMDLINE['root']="/dev/md0"
CMDLINE['skip_vender_mac_interfaces']="0,1,2,3,4,5,6,7" CMDLINE['skip_vender_mac_interfaces']="0,1,2,3,4,5,6,7"
CMDLINE['loglevel']="15" CMDLINE['loglevel']="15"
CMDLINE['log_buf_len']="32M" CMDLINE['log_buf_len']="32M"
CMDLINE["HddHotplug"]="1"
CMDLINE["vender_format_version"]="2"
if [ -n "$(ls /dev/mmcblk* 2>/dev/null)" ] && [ ! "${BUS}" = "mmc" ] && [ ! "${EMMCBOOT}" = "true" ]; then if [ -n "$(ls /dev/mmcblk* 2>/dev/null)" ] && [ ! "${BUS}" = "mmc" ] && [ ! "${EMMCBOOT}" = "true" ]; then
[ ! "${CMDLINE['modprobe.blacklist']}" = "" ] && CMDLINE['modprobe.blacklist']+="," [ ! "${CMDLINE['modprobe.blacklist']}" = "" ] && CMDLINE['modprobe.blacklist']+=","
CMDLINE['modprobe.blacklist']+="sdhci,sdhci_pci,sdhci_acpi" CMDLINE['modprobe.blacklist']+="sdhci,sdhci_pci,sdhci_acpi"
fi fi
if [ "${DT}" = "true" ] && ! echo "epyc7002 purley broadwellnkv2" | grep -wq "${PLATFORM}"; then
if [ "$(readModelKey "${MODEL}" "dt")" = "true" ] && ! echo "epyc7002 purley broadwellnkv2" | grep -wq "$(readModelKey "${MODEL}" "platform")"; then
[ ! "${CMDLINE['modprobe.blacklist']}" = "" ] && CMDLINE['modprobe.blacklist']+="," [ ! "${CMDLINE['modprobe.blacklist']}" = "" ] && CMDLINE['modprobe.blacklist']+=","
CMDLINE['modprobe.blacklist']+="mpt3sas" CMDLINE['modprobe.blacklist']+="mpt3sas"
fi fi
if echo "epyc7002 apollolake geminilake" | grep -wq "${PLATFORM}"; then
CMDLINE["intel_iommu"]="igfx_off"
fi
if echo "purley broadwellnkv2" | grep -wq "${PLATFORM}"; then
CMDLINE["SASmodel"]="1"
fi
# Read cmdline
while IFS=': ' read KEY VALUE; do
[ -n "${KEY}" ] && CMDLINE["${KEY}"]="${VALUE}"
done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].cmdline")
while IFS=': ' read KEY VALUE; do while IFS=': ' read KEY VALUE; do
[ -n "${KEY}" ] && CMDLINE["${KEY}"]="${VALUE}" [ -n "${KEY}" ] && CMDLINE["${KEY}"]="${VALUE}"
done <<<$(readConfigMap "cmdline" "${USER_CONFIG_FILE}") done <<<$(readConfigMap "cmdline" "${USER_CONFIG_FILE}")
@ -270,7 +281,6 @@ else
# Executes DSM kernel via KEXEC # Executes DSM kernel via KEXEC
KEXECARGS="" KEXECARGS=""
KVER=$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")
if [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 4 ] && [ ${EFI} -eq 1 ]; then if [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 4 ] && [ ${EFI} -eq 1 ]; then
echo -e "\033[1;33m$(TEXT "Warning, running kexec with --noefi param, strange things will happen!!")\033[0m" echo -e "\033[1;33m$(TEXT "Warning, running kexec with --noefi param, strange things will happen!!")\033[0m"
KEXECARGS="--noefi" KEXECARGS="--noefi"

View File

@ -1,4 +1,5 @@
RR_VERSION="24.5.1" RR_VERSION="24.5.1"
RR_RELEASE=""
RR_TITLE="RR v${RR_VERSION}" RR_TITLE="RR v${RR_VERSION}"
# Define paths # Define paths

View File

@ -10,6 +10,7 @@ import os, click
WORK_PATH = os.path.abspath(os.path.dirname(__file__)) WORK_PATH = os.path.abspath(os.path.dirname(__file__))
@click.group() @click.group()
def cli(): def cli():
""" """
@ -17,23 +18,26 @@ def cli():
""" """
pass pass
def mutually_exclusive_options(ctx, param, value): def mutually_exclusive_options(ctx, param, value):
other_option = 'file' if param.name == 'data' else 'data' other_option = "file" if param.name == "data" else "data"
if value is not None and ctx.params.get(other_option) is not None: if value is not None and ctx.params.get(other_option) is not None:
raise click.UsageError(f'Illegal usage: `{param.name}` is mutually exclusive with `{other_option}`.') raise click.UsageError(f"Illegal usage: `{param.name}` is mutually exclusive with `{other_option}`.")
return value return value
def validate_required_param(ctx, param, value): def validate_required_param(ctx, param, value):
if not value and 'file' not in ctx.params and 'data' not in ctx.params: if not value and "file" not in ctx.params and "data" not in ctx.params:
raise click.MissingParameter(param_decls=[param.name]) raise click.MissingParameter(param_decls=[param.name])
return value return value
@cli.command() @cli.command()
@click.option('-d', "--data", type=str, callback=mutually_exclusive_options, is_eager=True, help="The data of QRCode.") @click.option("-d", "--data", type=str, callback=mutually_exclusive_options, is_eager=True, help="The data of QRCode.")
@click.option('-f', "--file", type=str, callback=mutually_exclusive_options, is_eager=True, help="The file of QRCode.") @click.option("-f", "--file", type=str, callback=mutually_exclusive_options, is_eager=True, help="The file of QRCode.")
@click.option('--validate', is_flag=True, callback=validate_required_param, expose_value=False, is_eager=True) @click.option("--validate", is_flag=True, callback=validate_required_param, expose_value=False, is_eager=True)
@click.option('-l', "--location", type=click.IntRange(0, 7), required=True, help="The location of QRCode. (range 0<=x<=7)") @click.option("-l", "--location", type=click.IntRange(0, 7), required=True, help="The location of QRCode. (range 0<=x<=7)")
@click.option('-o', "--output", type=str, required=True, help="The output file of QRCode.") @click.option("-o", "--output", type=str, required=True, help="The output file of QRCode.")
def makeqr(data, file, location, output): def makeqr(data, file, location, output):
""" """
Generate a QRCode. Generate a QRCode.
@ -47,7 +51,7 @@ def makeqr(data, file, location, output):
FBIOGET_FSCREENINFO = 0x4602 FBIOGET_FSCREENINFO = 0x4602
FBDEV = "/dev/fb0" FBDEV = "/dev/fb0"
if data is not None: if data is not None:
qr = qrcode.QRCode(version=1, box_size=10, error_correction=qrcode.constants.ERROR_CORRECT_H, border=4) qr = qrcode.QRCode(version=1, box_size=10, error_correction=qrcode.constants.ERROR_CORRECT_H, border=4,)
qr.add_data(data) qr.add_data(data)
qr.make(fit=True) qr.make(fit=True)
img = qr.make_image(fill_color="purple", back_color="white") img = qr.make_image(fill_color="purple", back_color="white")
@ -61,7 +65,7 @@ def makeqr(data, file, location, output):
if os.path.exists(os.path.join(WORK_PATH, "logo.png")): if os.path.exists(os.path.join(WORK_PATH, "logo.png")):
icon = Image.open(os.path.join(WORK_PATH, "logo.png")) icon = Image.open(os.path.join(WORK_PATH, "logo.png"))
icon = icon.convert("RGBA") icon = icon.convert("RGBA")
img.paste(icon.resize((int(img.size[0] / 5), int(img.size[1] / 5))), (int((img.size[0] - int(img.size[0] / 5)) / 2), int((img.size[1] - int(img.size[1] / 5)) / 2))) img.paste(icon.resize((int(img.size[0] / 5), int(img.size[1] / 5))), (int((img.size[0] - int(img.size[0] / 5)) / 2), int((img.size[1] - int(img.size[1] / 5)) / 2),),)
if file is not None: if file is not None:
img = Image.open(file) img = Image.open(file)
@ -73,9 +77,9 @@ def makeqr(data, file, location, output):
# pixels[i, j] = (255, 255, 255, 0) # pixels[i, j] = (255, 255, 255, 0)
(xres, yres) = (1920, 1080) (xres, yres) = (1920, 1080)
with open(FBDEV, 'rb')as fb: with open(FBDEV, "rb") as fb:
vi = fcntl.ioctl(fb, FBIOGET_VSCREENINFO, bytes(160)) vi = fcntl.ioctl(fb, FBIOGET_VSCREENINFO, bytes(160))
res = struct.unpack('I'*40, vi) res = struct.unpack("I" * 40, vi)
if res[0] != 0 and res[1] != 0: if res[0] != 0 and res[1] != 0:
(xres, yres) = (res[0], res[1]) (xres, yres) = (res[0], res[1])
xqr, yqr = (int(xres / 8), int(xres / 8)) xqr, yqr = (int(xres / 8), int(xres / 8))
@ -89,5 +93,40 @@ def makeqr(data, file, location, output):
alpha.save(output) alpha.save(output)
@cli.command()
@click.option("-p", "--platforms", type=str, help="The platforms of Syno.")
def getmodels(platforms=None):
"""
Get Syno Models.
"""
import re, json
import requests
if platforms is not None and platforms != "":
PS = platforms.lower().replace(",", " ").split()
else:
PS = []
models = []
req = requests.get("https://autoupdate.synology.com/os/v2")
req.encoding = "utf-8"
data = json.loads(req.text)
for I in data["channel"]["item"]:
if not I["title"].startswith("DSM"):
continue
for J in I["model"]:
arch = J["mUnique"].split("_")[1]
name = J["mLink"].split("/")[-1].split("_")[1].replace("%2B", "+")
if len(PS) > 0 and arch.lower() not in PS:
continue
if any(name == B["name"] for B in models):
continue
models.append({"name": name, "arch": arch})
models = sorted(models, key=lambda k: (k["arch"], k["name"]))
print(json.dumps(models, indent=4))
if __name__ == "__main__": if __name__ == "__main__":
cli() cli()

View File

@ -4,33 +4,6 @@
. ${WORK_PATH}/include/configFile.sh . ${WORK_PATH}/include/configFile.sh
. ${WORK_PATH}/include/i18n.sh . ${WORK_PATH}/include/i18n.sh
###############################################################################
# Read key value from model config file
# 1 - Model
# 2 - Key
# Return Value
function readModelKey() {
readConfigKey "${2}" "${WORK_PATH}/model-configs/${1}.yml" 2>/dev/null
}
###############################################################################
# Read Entries as map(key=value) from model config
# 1 - Model
# 2 - Path of key
# Returns map of values
function readModelMap() {
readConfigMap "${2}" "${WORK_PATH}/model-configs/${1}.yml" 2>/dev/null
}
###############################################################################
# Read an array from model config
# 1 - Model
# 2 - Path of key
# Returns array/map of values
function readModelArray() {
readConfigArray "${2}" "${WORK_PATH}/model-configs/${1}.yml" 2>/dev/null
}
############################################################################### ###############################################################################
# Check if loader is fully configured # Check if loader is fully configured
# Returns 1 if not # Returns 1 if not
@ -59,94 +32,6 @@ function dieLog() {
exit 1 exit 1
} }
###############################################################################
# Generate a number with 6 digits from 1 to 30000
function random() {
printf "%06d" $((${RANDOM} % 30000 + 1))
}
###############################################################################
# Generate a hexa number from 0x00 to 0xFF
function randomhex() {
printf "&02X" "$((${RANDOM} % 255 + 1))"
}
###############################################################################
# Generate a random letter
function generateRandomLetter() {
for i in A B C D E F G H J K L M N P Q R S T V W X Y Z; do
echo ${i}
done | sort -R | tail -1
}
###############################################################################
# Generate a random digit (0-9A-Z)
function generateRandomValue() {
for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F G H J K L M N P Q R S T V W X Y Z; do
echo ${i}
done | sort -R | tail -1
}
###############################################################################
# Generate a random serial number for a model
# 1 - Model
# Returns serial number
function generateSerial() {
SERIAL="$(readModelArray "${1}" "serial.prefix" | sort -R | tail -1)"
SERIAL+=$(readModelKey "${1}" "serial.middle")
case "$(readModelKey "${1}" "serial.suffix")" in
numeric)
SERIAL+=$(random)
;;
alpha)
SERIAL+=$(generateRandomLetter)$(generateRandomValue)$(generateRandomValue)$(generateRandomValue)$(generateRandomValue)$(generateRandomLetter)
;;
esac
echo ${SERIAL}
}
###############################################################################
# Generate a MAC address for a model
# 1 - Model
# 2 - number
# Returns serial number
function generateMacAddress() {
PRE="$(readModelArray "${1}" "serial.macpre")"
SUF="$(printf '%02x%02x%02x' $((${RANDOM} % 256)) $((${RANDOM} % 256)) $((${RANDOM} % 256)))"
NUM=${2:-1}
MACS=""
for I in $(seq 1 ${NUM}); do
MACS+="$(printf '%06x%06x' $((0x${PRE:-"001132"})) $(($((0x${SUF})) + ${I})))"
[ ${I} -lt ${NUM} ] && MACS+=" "
done
echo "${MACS}"
return 0
}
###############################################################################
# Validate a serial number for a model
# 1 - Model
# 2 - Serial number to test
# Returns 1 if serial number is valid
function validateSerial() {
PREFIX=$(readModelArray "${1}" "serial.prefix")
MIDDLE=$(readModelKey "${1}" "serial.middle")
S=${2:0:4}
P=${2:4:3}
L=${#2}
if [ ${L} -ne 13 ]; then
return 0
fi
echo "${PREFIX}" | grep -q "${S}"
if [ $? -eq 1 ]; then
return 0
fi
if [ "${MIDDLE}" != "${P}" ]; then
return 0
fi
return 1
}
############################################################################### ###############################################################################
# Check if a item exists into array # Check if a item exists into array
# 1 - Item # 1 - Item
@ -164,6 +49,110 @@ function arrayExistItem() {
return ${EXISTS} return ${EXISTS}
} }
###############################################################################
# Generate a number with 6 digits from 1 to 30000
function random() {
printf "%06d" $((${RANDOM} % 30000 + 1))
}
###############################################################################
# Generate a hexa number from 0x00 to 0xFF
function randomhex() {
printf "&02X" "$((${RANDOM} % 255 + 1))"
}
###############################################################################
# Generate a random letter
function genRandomLetter() {
for i in A B C D E F G H J K L M N P Q R S T V W X Y Z; do
echo ${i}
done | sort -R | tail -1
}
###############################################################################
# Generate a random digit (0-9A-Z)
function genRandomValue() {
for i in 0 1 2 3 4 5 6 7 8 9 A B C D E F G H J K L M N P Q R S T V W X Y Z; do
echo ${i}
done | sort -R | tail -1
}
###############################################################################
# Generate a random serial number for a model
# 1 - Model
# Returns serial number
function generateSerial() {
PREFIX="$(readConfigArray "${1}.prefix" "${WORK_PATH}/serialnumber.yml" 2>/dev/null | sort -R | tail -1)"
MIDDLE="$(readConfigArray "${1}.middle" "${WORK_PATH}/serialnumber.yml" 2>/dev/null | sort -R | tail -1)"
SUFFIX="$(readConfigKey "${1}.suffix" "${WORK_PATH}/serialnumber.yml" 2>/dev/null)"
SERIAL="${PREFIX:-"0000"}${MIDDLE:-"XXX"}"
case "${SUFFIX:-"alpha"}" in
numeric)
SERIAL+="$(random)"
;;
alpha)
SERIAL+="$(genRandomLetter)$(genRandomValue)$(genRandomValue)$(genRandomValue)$(genRandomValue)$(genRandomLetter)"
;;
esac
echo "${SERIAL}"
}
###############################################################################
# Generate a MAC address for a model
# 1 - Model
# 2 - number
# Returns serial number
function generateMacAddress() {
MACPRE="$(readConfigArray "${1}.macpre" "${WORK_PATH}/serialnumber.yml" 2>/dev/null)"
MACSUF="$(printf '%02x%02x%02x' $((${RANDOM} % 256)) $((${RANDOM} % 256)) $((${RANDOM} % 256)))"
NUM=${2:-1}
MACS=""
for I in $(seq 1 ${NUM}); do
MACS+="$(printf '%06x%06x' $((0x${MACPRE:-"001132"})) $(($((0x${MACSUF})) + ${I})))"
[ ${I} -lt ${NUM} ] && MACS+=" "
done
echo "${MACS}"
return 0
}
###############################################################################
# Validate a serial number for a model
# 1 - Model
# 2 - Serial number to test
# Returns 1 if serial number is invalid
function validateSerial() {
PREFIX="$(readConfigArray "${1}.prefix" "${WORK_PATH}/serialnumber.yml" 2>/dev/null)"
MIDDLE="$(readConfigArray "${1}.middle" "${WORK_PATH}/serialnumber.yml" 2>/dev/null)"
SUFFIX="$(readConfigKey "${1}.suffix" "${WORK_PATH}/serialnumber.yml" 2>/dev/null)"
P=${2:0:4}
M=${2:4:3}
S=${2:7}
L=${#2}
if [ ${L} -ne 13 ]; then
return 1
fi
if ! arrayExistItem ${P} ${PREFIX}; then
return 1
fi
if ! arrayExistItem ${M} ${MIDDLE}; then
return 1
fi
case "${SUFFIX:-"alpha"}" in
numeric)
if ! echo "${S}" | grep -q "^[0-9]\{6\}$"; then
return 1
fi
;;
alpha)
if ! echo "${S}" | grep -q "^[A-Z][0-9][0-9][0-9][0-9][A-Z]$"; then
return 1
fi
;;
esac
return 0
}
############################################################################### ###############################################################################
# Get values in .conf K=V file # Get values in .conf K=V file
# 1 - key # 1 - key
@ -382,3 +371,26 @@ function findDSMRoot() {
echo "${DSMROOTS}" echo "${DSMROOTS}"
return 0 return 0
} }
###############################################################################
# Copy DSM files to the boot partition
# 1 - DSM root path
function copyDSMFiles() {
if [ -f "${1}/VERSION" ] && [ -f "${1}/grub_cksum.syno" ] && [ -f "${1}/GRUB_VER" ] && [ -f "${1}/zImage" ] && [ -f "${1}/rd.gz" ]; then
# Remove old model files
rm -f "${PART1_PATH}/grub_cksum.syno" "${PART1_PATH}/GRUB_VER" "${PART2_PATH}/grub_cksum.syno" "${PART2_PATH}/GRUB_VER"
rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}"
# Remove old build files
rm -f "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}" >/dev/null
# Copy new model files
cp -f "${1}/grub_cksum.syno" "${PART1_PATH}"
cp -f "${1}/GRUB_VER" "${PART1_PATH}"
cp -f "${1}/grub_cksum.syno" "${PART2_PATH}"
cp -f "${1}/GRUB_VER" "${PART2_PATH}"
cp -f "${1}/zImage" "${ORI_ZIMAGE_FILE}"
cp -f "${1}/rd.gz" "${ORI_RDGZ_FILE}"
return 0
else
return 1
fi
}

View File

@ -11,7 +11,7 @@ set -e
# Shows title # Shows title
clear clear
[ -z "${COLUMNS}" ] && COLUMNS=50 [ -z "${COLUMNS}" ] && COLUMNS=50
TITLE="$(printf "$(TEXT "Welcome to %s")" "${RR_TITLE}")" TITLE="$(printf "$(TEXT "Welcome to %s")" "$([ -z "${RR_RELEASE}" ] && echo "${RR_TITLE}" || echo "${RR_TITLE}(${RR_RELEASE})")")"
printf "\033[1;44m%*s\n" ${COLUMNS} "" printf "\033[1;44m%*s\n" ${COLUMNS} ""
printf "\033[1;44m%*s\033[A\n" ${COLUMNS} "" printf "\033[1;44m%*s\033[A\n" ${COLUMNS} ""
printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}" printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}"
@ -28,6 +28,8 @@ if [ ! -f "${USER_CONFIG_FILE}" ]; then
fi fi
initConfigKey "kernel" "official" "${USER_CONFIG_FILE}" initConfigKey "kernel" "official" "${USER_CONFIG_FILE}"
initConfigKey "rd-compressed" "false" "${USER_CONFIG_FILE}"
initConfigKey "satadom" "2" "${USER_CONFIG_FILE}"
initConfigKey "lkm" "prod" "${USER_CONFIG_FILE}" initConfigKey "lkm" "prod" "${USER_CONFIG_FILE}"
initConfigKey "dsmlogo" "true" "${USER_CONFIG_FILE}" initConfigKey "dsmlogo" "true" "${USER_CONFIG_FILE}"
initConfigKey "directboot" "false" "${USER_CONFIG_FILE}" initConfigKey "directboot" "false" "${USER_CONFIG_FILE}"
@ -39,7 +41,9 @@ initConfigKey "kernelpanic" "5" "${USER_CONFIG_FILE}"
initConfigKey "odp" "false" "${USER_CONFIG_FILE}" initConfigKey "odp" "false" "${USER_CONFIG_FILE}"
initConfigKey "hddsort" "false" "${USER_CONFIG_FILE}" initConfigKey "hddsort" "false" "${USER_CONFIG_FILE}"
initConfigKey "emmcboot" "false" "${USER_CONFIG_FILE}" initConfigKey "emmcboot" "false" "${USER_CONFIG_FILE}"
initConfigKey "platform" "" "${USER_CONFIG_FILE}"
initConfigKey "model" "" "${USER_CONFIG_FILE}" initConfigKey "model" "" "${USER_CONFIG_FILE}"
initConfigKey "modelid" "" "${USER_CONFIG_FILE}"
initConfigKey "productver" "" "${USER_CONFIG_FILE}" initConfigKey "productver" "" "${USER_CONFIG_FILE}"
initConfigKey "buildnum" "" "${USER_CONFIG_FILE}" initConfigKey "buildnum" "" "${USER_CONFIG_FILE}"
initConfigKey "smallnum" "" "${USER_CONFIG_FILE}" initConfigKey "smallnum" "" "${USER_CONFIG_FILE}"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -24,13 +24,17 @@ IP="$(getIP)"
# Debug flag # Debug flag
# DEBUG="" # DEBUG=""
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")" MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
MODELID="$(readConfigKey "modelid" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")" BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")" SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")" LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
KEYMAP="$(readConfigKey "keymap" "${USER_CONFIG_FILE}")" KEYMAP="$(readConfigKey "keymap" "${USER_CONFIG_FILE}")"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
RD_COMPRESSED="$(readConfigKey "rd-compressed" "${USER_CONFIG_FILE}")"
SATADOM="$(readConfigKey "satadom" "${USER_CONFIG_FILE}")"
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")" LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
DSMLOGO="$(readConfigKey "dsmlogo" "${USER_CONFIG_FILE}")" DSMLOGO="$(readConfigKey "dsmlogo" "${USER_CONFIG_FILE}")"
DIRECTBOOT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")" DIRECTBOOT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")"
@ -59,9 +63,9 @@ function backtitle() {
if [ "LOCALBUILD" = "${LOADER_DISK}" ]; then if [ "LOCALBUILD" = "${LOADER_DISK}" ]; then
BACKTITLE="LOCAL " BACKTITLE="LOCAL "
fi fi
BACKTITLE+="${RR_TITLE}" BACKTITLE+="$([ -z "${RR_RELEASE}" ] && echo "${RR_TITLE}" || echo "${RR_TITLE}(${RR_RELEASE})")"
if [ -n "${MODEL}" ]; then if [ -n "${MODEL}" ]; then
BACKTITLE+=" ${MODEL}" BACKTITLE+=" ${MODEL}(${PLATFORM})"
else else
BACKTITLE+=" (no model)" BACKTITLE+=" (no model)"
fi fi
@ -102,113 +106,71 @@ function backtitle() {
# Shows available models to user choose one # Shows available models to user choose one
function modelMenu() { function modelMenu() {
if [ -z "${1}" ]; then if [ -z "${1}" ]; then
RESTRICT=1
FLGBETA=0
DIALOG --title "$(TEXT "Model")" \ DIALOG --title "$(TEXT "Model")" \
--infobox "$(TEXT "Reading models")" 0 0 --infobox "$(TEXT "Getting models ...")" 0 0
fi
PS="$(readConfigEntriesArray "platforms" "${WORK_PATH}/platforms.yml" | sort)"
MJ="$(python include/functions.py getmodels -p "${PS[*]}")"
if [ -z "${MJ}" -o "${MJ}" = "[]" ]; then
DIALOG --title "$(TEXT "Model")" \
--msgbox "$(TEXT "Failed to get models, please try again!")" 0 0
return 1
fi
echo -n "" >"${TMP_PATH}/modellist" echo -n "" >"${TMP_PATH}/modellist"
while read M; do echo "${MJ}" | jq -c '.[]' | while read -r item; do
Y=$(echo ${M} | tr -cd "[0-9]") name=$(echo "$item" | jq -r '.name')
Y=${Y:0-2} arch=$(echo "$item" | jq -r '.arch')
echo "${M} ${Y}" >>"${TMP_PATH}/modellist" echo "${name} ${arch}" >>"${TMP_PATH}/modellist"
done <<<$(find "${WORK_PATH}/model-configs" -maxdepth 1 -name \*.yml 2>/dev/null | sed 's/.*\///; s/\.yml//') done
if [ -z "${1}" ]; then
RESTRICT=1
while true; do while true; do
echo -n "" >"${TMP_PATH}/menu" echo -n "" >"${TMP_PATH}/menu"
echo "c \"\Z1$(TEXT "Compatibility judgment")\Zn\"" >>"${TMP_PATH}/menu"
FLGNEX=0 FLGNEX=0
while read M; do while read M A; do
PLATFORM=$(readModelKey "${M}" "platform")
DT="$(readModelKey "${M}" "dt")"
BETA="$(readModelKey "${M}" "beta")"
[ "${BETA}" = "true" -a ${FLGBETA} -eq 0 ] && continue
# Check id model is compatible with CPU
COMPATIBLE=1 COMPATIBLE=1
if [ ${RESTRICT} -eq 1 ]; then DT="$(readConfigKey "platforms.${A}.dt" "${WORK_PATH}/platforms.yml")"
for F in $(readModelArray "${M}" "flags"); do FLAGS="$(readConfigArray "platforms.${A}.flags" "${WORK_PATH}/platforms.yml")"
if ! grep -q "^flags.*${F}.*" /proc/cpuinfo; then for F in "${FLAGS}"; do if ! grep -q "^flags.*${F}.*" /proc/cpuinfo; then
COMPATIBLE=0 COMPATIBLE=0
FLGNEX=1 FLGNEX=1
break break
fi fi; done
done
fi
[ "${DT}" = "true" ] && DT="DT" || DT="" [ "${DT}" = "true" ] && DT="DT" || DT=""
[ ${COMPATIBLE} -eq 1 ] && echo "${M} \"$(printf "\Zb%-15s %-2s\Zn" "${PLATFORM}" "${DT}")\" " >>"${TMP_PATH}/menu" [ ${COMPATIBLE} -eq 1 ] && echo "${M} \"$(printf "\Zb%-15s %-2s\Zn" "${A}" "${DT}")\" " >>"${TMP_PATH}/menu"
done <<<$(cat "${TMP_PATH}/modellist" | sort -r -n -k 2 | awk '{print $1}') done <<<$(cat "${TMP_PATH}/modellist")
[ ${FLGNEX} -eq 1 ] && echo "f \"\Z1$(TEXT "Disable flags restriction")\Zn\"" >>"${TMP_PATH}/menu" [ ${FLGNEX} -eq 1 ] && echo "f \"\Z1$(TEXT "Disable flags restriction")\Zn\"" >>"${TMP_PATH}/menu"
[ ${FLGBETA} -eq 0 ] && echo "b \"\Z1$(TEXT "Show all models")\Zn\"" >>"${TMP_PATH}/menu"
DIALOG --title "$(TEXT "Model")" \ DIALOG --title "$(TEXT "Model")" \
--menu "$(TEXT "Choose the model")" 0 0 0 --file "${TMP_PATH}/menu" \ --menu "$(TEXT "Choose the model")" 0 0 0 --file "${TMP_PATH}/menu" \
2>${TMP_PATH}/resp 2>${TMP_PATH}/resp
[ $? -ne 0 ] && return 0 [ $? -ne 0 ] && return 0
resp=$(cat ${TMP_PATH}/resp) resp=$(cat ${TMP_PATH}/resp)
[ -z "${resp}" ] && return 1 [ -z "${resp}" ] && return 1
if [ "${resp}" = "c" ]; then
models=(DS918+ RS1619xs+ DS419+ DS1019+ DS719+ DS1621xs+)
[ $(lspci -d ::300 2>/dev/null | grep 8086 | wc -l) -gt 0 ] && iGPU=1 || iGPU=0
[ $(lspci -d ::104 2>/dev/null | wc -l) -gt 0 -o $(lspci -d ::107 2>/dev/null | wc -l) -gt 0 ] && LSI=1 || LSI=0
[ $(lspci -d ::108 2>/dev/null | wc -l) -gt 0 ] && NVME=1 || NVME=0
if [ "${NVME}" = "1" ]; then
for PCI in $(lspci -d ::108 2>/dev/null | awk '{print $1}'); do
if [ ! -d "/sys/devices/pci0000:00/0000:${PCI}/nvme" ]; then
NVME=2
break
fi
done
fi
rm -f "${TMP_PATH}/opts"
echo "$(printf "%-16s %8s %8s %8s" "model" "iGPU" "HBA" "M.2")" >>"${TMP_PATH}/opts"
while read M; do
PLATFORM=$(readModelKey "${M}" "platform")
DT="$(readModelKey "${M}" "dt")"
I915=" "
HBA=" "
M_2=" "
if [ "${iGPU}" = "1" ]; then
[ "${PLATFORM}" = "apollolake" -o "${PLATFORM}" = "geminilake" -o "${PLATFORM}" = "epyc7002" ] && I915="*"
fi
if [ "${LSI}" = "1" ]; then
[ ! "${DT}" = "true" -o "${PLATFORM}" = "epyc7002" ] && HBA="* "
fi
if [ "${NVME}" = "1" ]; then
[ "${DT}" = "true" ] && M_2="* "
fi
if [ "${NVME}" = "2" ]; then
if echo "${models[@]}" | grep -wq "${M}"; then
M_2="* "
fi
fi
echo "$(printf "%-16s %8s %8s %8s" "${M}" "${I915}" "${HBA}" "${M_2}")" >>"${TMP_PATH}/opts"
done <<<$(cat "${TMP_PATH}/modellist" | sort -r -n -k 2 | awk '{print $1}')
DIALOG --title "$(TEXT "Model")" \
--textbox "${TMP_PATH}/opts" 0 0
continue
fi
if [ "${resp}" = "f" ]; then if [ "${resp}" = "f" ]; then
RESTRICT=0 RESTRICT=0
continue continue
fi fi
if [ "${resp}" = "b" ]; then
FLGBETA=1
continue
fi
break break
done done
else else
[ ! -f "${WORK_PATH}/model-configs/${1}.yml" ] && return 1 cat "${TMP_PATH}/modellist" | awk '{print $1}' | grep -qw "${1}" || return 1
resp="${1}" resp="${1}"
fi fi
# If user change model, clean build* and pat* and SN # If user change model, clean build* and pat* and SN
if [ "${MODEL}" != "${resp}" ]; then if [ "${MODEL}" != "${resp}" ]; then
PLATFORM="$(grep -w "${resp}" "${TMP_PATH}/modellist" | awk '{print $2}' | head -n 1)"
MODEL=${resp} MODEL=${resp}
writeConfigKey "platform" "${PLATFORM}" "${USER_CONFIG_FILE}"
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}" writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
MODELID=""
PRODUCTVER="" PRODUCTVER=""
BUILDNUM="" BUILDNUM=""
SMALLNUM="" SMALLNUM=""
writeConfigKey "productver" "" "${USER_CONFIG_FILE}" writeConfigKey "modelid" "${MODELID}" "${USER_CONFIG_FILE}"
writeConfigKey "buildnum" "" "${USER_CONFIG_FILE}" writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "" "${USER_CONFIG_FILE}" writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "paturl" "" "${USER_CONFIG_FILE}" writeConfigKey "paturl" "" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "" "${USER_CONFIG_FILE}" writeConfigKey "patsum" "" "${USER_CONFIG_FILE}"
SN=$(generateSerial "${MODEL}") SN=$(generateSerial "${MODEL}")
@ -226,13 +188,14 @@ function modelMenu() {
rm -f "${PART1_PATH}/grub_cksum.syno" "${PART1_PATH}/GRUB_VER" "${PART2_PATH}/"* >/dev/null 2>&1 || true rm -f "${PART1_PATH}/grub_cksum.syno" "${PART1_PATH}/GRUB_VER" "${PART2_PATH}/"* >/dev/null 2>&1 || true
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
fi fi
rm -f "${TMP_PATH}/modellist"
return 0 return 0
} }
############################################################################### ###############################################################################
# Shows available buildnumbers from a model to user choose one # Shows available buildnumbers from a model to user choose one
function productversMenu() { function productversMenu() {
ITEMS="$(readConfigEntriesArray "productvers" "${WORK_PATH}/model-configs/${MODEL}.yml" | sort -r)" ITEMS="$(readConfigEntriesArray "platforms.${PLATFORM}.productvers" "${WORK_PATH}/platforms.yml" | sort -r)"
if [ -z "${1}" ]; then if [ -z "${1}" ]; then
DIALOG --title "$(TEXT "Product Version")" \ DIALOG --title "$(TEXT "Product Version")" \
--no-items --menu "$(TEXT "Choose a product version")" 0 0 0 ${ITEMS} \ --no-items --menu "$(TEXT "Choose a product version")" 0 0 0 ${ITEMS} \
@ -247,18 +210,19 @@ function productversMenu() {
[ $? -ne 0 ] && return 0 [ $? -ne 0 ] && return 0
fi fi
else else
if ! arrayExistItem "${1}" ${ITEMS}; then return 1; fi arrayExistItem "${1}" ${ITEMS} || return 1
resp="${1}" resp="${1}"
fi fi
selver="${resp}"
local KVER=$(readModelKey "${MODEL}" "productvers.[${resp}].kver") urlver=""
if [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 4 ] && [ -d "/sys/firmware/efi" ]; then # KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${resp}].kver" "${WORK_PATH}/platforms.yml")
if [ -z "${1}" ]; then # if [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 4 ] && [ -d "/sys/firmware/efi" ]; then
DIALOG --title "$(TEXT "Product Version")" \ # if [ -z "${1}" ]; then
--msgbox "$(TEXT "This version does not support UEFI startup, Please select another version or switch the startup mode.")" 0 0 # DIALOG --title "$(TEXT "Product Version")" \
fi # --msgbox "$(TEXT "This version does not support UEFI startup, Please select another version or switch the startup mode.")" 0 0
return 1 # fi
fi # return 1
# fi
# if [ ! "usb" = "$(getBus "${LOADER_DISK}")" ] && [ $(echo "${KVER:-4}" | cut -d'.' -f1) -gt 4 ]; then # if [ ! "usb" = "$(getBus "${LOADER_DISK}")" ] && [ $(echo "${KVER:-4}" | cut -d'.' -f1) -gt 4 ]; then
# if [ -z "${1}" ]; then # if [ -z "${1}" ]; then
# DIALOG --title "$(TEXT "Product Version")" \ # DIALOG --title "$(TEXT "Product Version")" \
@ -286,9 +250,12 @@ function productversMenu() {
[ "${fastest}" = "www.synology.cn" ] && [ "${fastest}" = "www.synology.cn" ] &&
fastest="https://www.synology.cn/api/support/findDownloadInfo?lang=zh-cn" || fastest="https://www.synology.cn/api/support/findDownloadInfo?lang=zh-cn" ||
fastest="https://www.synology.com/api/support/findDownloadInfo?lang=en-us" fastest="https://www.synology.com/api/support/findDownloadInfo?lang=en-us"
patdata=$(curl -skL --connect-timeout 10 "${fastest}&product=${MODEL/+/%2B}&major=${resp%%.*}&minor=${resp##*.}") patdata=$(curl -skL --connect-timeout 10 "${fastest}&product=${MODEL/+/%2B}&major=${selver%%.*}&minor=${selver##*.}")
if [ "$(echo ${patdata} | jq -r '.success' 2>/dev/null)" = "true" ]; then if [ "$(echo ${patdata} | jq -r '.success' 2>/dev/null)" = "true" ]; then
if echo ${patdata} | jq -r '.info.system.detail[0].items[0].files[0].label_ext' 2>/dev/null | grep -q 'pat'; then if echo ${patdata} | jq -r '.info.system.detail[0].items[0].files[0].label_ext' 2>/dev/null | grep -q 'pat'; then
major=$(echo ${patdata} | jq -r '.info.system.detail[0].items[0].major')
minor=$(echo ${patdata} | jq -r '.info.system.detail[0].items[0].minor')
urlver="${major}.${minor}"
paturl=$(echo ${patdata} | jq -r '.info.system.detail[0].items[0].files[0].url') paturl=$(echo ${patdata} | jq -r '.info.system.detail[0].items[0].files[0].url')
patsum=$(echo ${patdata} | jq -r '.info.system.detail[0].items[0].files[0].checksum') patsum=$(echo ${patdata} | jq -r '.info.system.detail[0].items[0].files[0].checksum')
paturl=${paturl%%\?*} paturl=${paturl%%\?*}
@ -307,7 +274,13 @@ function productversMenu() {
paturl="" paturl=""
patsum="" patsum=""
else else
MSG="$(TEXT "Successfully to get pat data, Please confirm.\nOr modify the URL and md5sum to you need.")" MSG=""
MSG+="$(TEXT "Successfully to get pat data.")\n"
if [ ! "${selver}" = "${urlver}" ]; then
MSG+="$(printf "$(TEXT "Note: There is no version %s and automatically returns to version %s.")" "${selver}" "${urlver}")\n"
selver=${urlver}
fi
MSG+="$(TEXT "Please confirm or modify the URL and md5sum to you need.")"
fi fi
if [ -z "${1}" ]; then if [ -z "${1}" ]; then
DIALOG --title "$(TEXT "Product Version")" \ DIALOG --title "$(TEXT "Product Version")" \
@ -332,7 +305,7 @@ function productversMenu() {
[ -z "${paturl}" -o -z "${patsum}" ] && return 1 [ -z "${paturl}" -o -z "${patsum}" ] && return 1
writeConfigKey "paturl" "${paturl}" "${USER_CONFIG_FILE}" writeConfigKey "paturl" "${paturl}" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "${patsum}" "${USER_CONFIG_FILE}" writeConfigKey "patsum" "${patsum}" "${USER_CONFIG_FILE}"
PRODUCTVER=${resp} PRODUCTVER=${selver}
writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}" writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
BUILDNUM="" BUILDNUM=""
SMALLNUM="" SMALLNUM=""
@ -340,17 +313,16 @@ function productversMenu() {
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}" writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
if [ -z "${1}" ]; then if [ -z "${1}" ]; then
DIALOG --title "$(TEXT "Product Version")" \ DIALOG --title "$(TEXT "Product Version")" \
--infobox "$(TEXT "Reconfiguring Synoinfo, Addons and Modules")" 0 0 --infobox "$(TEXT "Reconfiguring Synoinfo, Addons and Modules ...")" 0 0
fi fi
# Delete synoinfo and reload model/build synoinfo # Delete synoinfo and reload model/build synoinfo
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}" writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
while IFS=': ' read KEY VALUE; do while IFS=': ' read KEY VALUE; do
writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}" writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}"
done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].synoinfo") done <<<$(readConfigMap "platforms.${PLATFORM}.synoinfo" "${WORK_PATH}/platforms.yml")
# Check addons # Check addons
PLATFORM="$(readModelKey "${MODEL}" "platform")" KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
while IFS=': ' read ADDON PARAM; do while IFS=': ' read ADDON PARAM; do
[ -z "${ADDON}" ] && continue [ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then
@ -369,6 +341,81 @@ function productversMenu() {
return 0 return 0
} }
function setConfigFromDSM() {
DSM_ROOT="${1}"
if [ ! -f "${DSM_ROOT}/GRUB_VER" -o ! -f "${DSM_ROOT}/VERSION" ]; then
echo -e "$(TEXT "DSM Invalid, try again!")" >"${LOG_FILE}"
return 1
fi
PLATFORMTMP="$(_get_conf_kv "PLATFORM" ${DSM_ROOT}/GRUB_VER)"
MODELTMP="$(_get_conf_kv "MODEL" ${DSM_ROOT}/GRUB_VER)"
majorversion="$(_get_conf_kv "majorversion" ${DSM_ROOT}/VERSION)"
minorversion="$(_get_conf_kv "minorversion" ${DSM_ROOT}/VERSION)"
buildnumber="$(_get_conf_kv "buildnumber" ${DSM_ROOT}/VERSION)"
smallfixnumber="$(_get_conf_kv "smallfixnumber" ${DSM_ROOT}/VERSION)"
if [ -z "${PLATFORMTMP}" -o -z "${MODELTMP}" -o -z "${majorversion}" -o -z "${minorversion}" ]; then
echo -e "$(TEXT "DSM Invalid, try again!")" >"${LOG_FILE}"
return 1
fi
PS="$(readConfigEntriesArray "platforms" "${WORK_PATH}/platforms.yml" | sort)"
VS="$(readConfigEntriesArray "platforms.${PLATFORMTMP,,}.productvers" "${WORK_PATH}/platforms.yml" | sort -r)"
if arrayExistItem "${PLATFORMTMP,,}" ${PS} && arrayExistItem "${majorversion}.${minorversion}" ${VS}; then
PLATFORM=${PLATFORMTMP,,}
MODEL=$(echo ${MODELTMP} | sed 's/d$/D/; s/rp$/RP/; s/rp+/RP+/')
MODELID=${MODELTMP}
PRODUCTVER=${majorversion}.${minorversion}
BUILDNUM=${buildnumber}
SMALLNUM=${smallfixnumber}
else
echo "$(printf "$(TEXT "Currently, %s is not supported.")" "${MODELTMP}-${majorversion}.${minorversion}")" >"${LOG_FILE}"
return 1
fi
echo "$(TEXT "Reconfiguring Synoinfo, Addons and Modules ...")"
writeConfigKey "platform" "${PLATFORM}" "${USER_CONFIG_FILE}"
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
writeConfigKey "modelid" "${MODELID}" "${USER_CONFIG_FILE}"
SN=$(generateSerial "${MODEL}")
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
NETIF_NUM=2
MACS=($(generateMacAddress "${MODEL}" ${NETIF_NUM}))
for I in $(seq 1 ${NETIF_NUM}); do
writeConfigKey "mac${I}" "${MACS[$((${I} - 1))]}" "${USER_CONFIG_FILE}"
done
writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "paturl" "#" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "#" "${USER_CONFIG_FILE}"
# Delete synoinfo and reload model/build synoinfo
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
while IFS=': ' read KEY VALUE; do
writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}"
done <<<$(readConfigMap "platforms.${PLATFORM}.synoinfo" "${WORK_PATH}/platforms.yml")
# Check addons
KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
while IFS=': ' read ADDON PARAM; do
[ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then
deleteConfigKey "addons.\"${ADDON}\"" "${USER_CONFIG_FILE}"
fi
done <<<$(readConfigMap "addons" "${USER_CONFIG_FILE}")
# Rebuild modules
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do
writeConfigKey "modules.\"${ID}\"" "" "${USER_CONFIG_FILE}"
done <<<$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}")
touch ${PART1_PATH}/.build
return 0
}
############################################################################### ###############################################################################
# Parse Pat # Parse Pat
function ParsePat() { function ParsePat() {
@ -408,55 +455,6 @@ function ParsePat() {
rm -rf "${UNTAR_PAT_PATH}" rm -rf "${UNTAR_PAT_PATH}"
break break
fi fi
if [ ! -f "${UNTAR_PAT_PATH}/GRUB_VER" -o ! -f "${UNTAR_PAT_PATH}/VERSION" ]; then
echo -e "$(TEXT "pat Invalid, try again!")" >"${LOG_FILE}"
break
fi
MODELTMP=$(grep -E "MODEL=\".*\"" ${UNTAR_PAT_PATH}/GRUB_VER 2>/dev/null | sed 's/.*MODEL="\(.*\)".*/\1/')
if [ -n "${MODELTMP}" ]; then
if [ -f "${WORK_PATH}/model-configs/${MODELTMP}.yml" ]; then
MODEL=${MODELTMP}
else
IS_FIND="false"
for M in $(find "${WORK_PATH}/model-configs" -maxdepth 1 -name \*.yml 2>/dev/null | sed 's/.*\///; s/\.yml//'); do
if [ "$(readModelKey "${M}" "id")" = "${MODELTMP}" ]; then
MODEL=${M}
IS_FIND="true"
break
fi
done
if [ "${IS_FIND}" = "false" ]; then
echo "$(printf "$(TEXT "Currently, %s is not supported.")" "${MODELTMP}")" >"${LOG_FILE}"
break
fi
fi
fi
. ${UNTAR_PAT_PATH}/VERSION
if [ -n "${majorversion}" -a -n "${minorversion}" -a -n "$(readModelKey "${MODEL}" "productvers.[${majorversion}.${minorversion}]")" ]; then
PRODUCTVER=${majorversion}.${minorversion}
BUILDNUM=${buildnumber}
SMALLNUM=${smallfixnumber}
else
echo "$(printf "$(TEXT "Currently, %s of %s is not supported.")" "${majorversion}.${minorversion}" "${MODEL}")" >"${LOG_FILE}"
break
fi
echo "$(TEXT "Reconfiguring Synoinfo, Addons and Modules")"
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
SN=$(generateSerial "${MODEL}")
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
NETIF_NUM=2
MACS=($(generateMacAddress "${MODEL}" ${NETIF_NUM}))
for I in $(seq 1 ${NETIF_NUM}); do
writeConfigKey "mac${I}" "${MACS[$((${I} - 1))]}" "${USER_CONFIG_FILE}"
done
writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
mkdir -p "${PART3_PATH}/dl" mkdir -p "${PART3_PATH}/dl"
# Check disk space left # Check disk space left
@ -469,36 +467,18 @@ function ParsePat() {
else else
cp -f "${PAT_PATH}" "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat" cp -f "${PAT_PATH}" "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat"
fi fi
MD5SUM="$(md5sum "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat" | awk '{print $1}')"
writeConfigKey "paturl" "#PARSEPAT" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "${MD5SUM}" "${USER_CONFIG_FILE}"
# Delete synoinfo and reload model/build synoinfo setConfigFromDSM "${UNTAR_PAT_PATH}"
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}" if [ $? -ne 0 ]; then
while IFS=': ' read KEY VALUE; do rm -rf "${UNTAR_PAT_PATH}"
writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}" break
done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].synoinfo")
# Check addons
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
while IFS=': ' read ADDON PARAM; do
[ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then
deleteConfigKey "addons.\"${ADDON}\"" "${USER_CONFIG_FILE}"
fi fi
done <<<$(readConfigMap "addons" "${USER_CONFIG_FILE}") writeConfigKey "paturl" "#PARSEPAT" "${USER_CONFIG_FILE}"
# Rebuild modules writeConfigKey "patsum" "" "${USER_CONFIG_FILE}"
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" copyDSMFiles "${UNTAR_PAT_PATH}"
while read ID DESC; do
writeConfigKey "modules.\"${ID}\"" "" "${USER_CONFIG_FILE}"
done <<<$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}")
# Remove old files
rm -f "${ORI_ZIMAGE_FILE}" "${ORI_RDGZ_FILE}" "${MOD_ZIMAGE_FILE}" "${MOD_RDGZ_FILE}" >/dev/null 2>&1 || true
rm -f "${PART1_PATH}/grub_cksum.syno" "${PART1_PATH}/GRUB_VER" "${PART2_PATH}/"* >/dev/null 2>&1 || true
touch ${PART1_PATH}/.build touch ${PART1_PATH}/.build
rm -rf "${UNTAR_PAT_PATH}"
rm -f "${LOG_FILE}" rm -f "${LOG_FILE}"
echo "$(TEXT "Ready!")" echo "$(TEXT "Ready!")"
sleep 3 sleep 3
@ -511,14 +491,15 @@ function ParsePat() {
rm -f "${LOG_FILE}" rm -f "${LOG_FILE}"
return 1 return 1
else else
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")" MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
MODELID="$(readConfigKey "modelid" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")" BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")" SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")" SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")"
MAC1="$(readConfigKey "mac1" "${USER_CONFIG_FILE}")" MAC1="$(readConfigKey "mac1" "${USER_CONFIG_FILE}")"
MAC2="$(readConfigKey "mac2" "${USER_CONFIG_FILE}")" MAC2="$(readConfigKey "mac2" "${USER_CONFIG_FILE}")"
rm -f "${LOG_FILE}"
return 0 return 0
fi fi
} }
@ -527,9 +508,8 @@ function ParsePat() {
# Manage addons # Manage addons
function addonMenu() { function addonMenu() {
# Read 'platform' and kernel version to check if addon exists # Read 'platform' and kernel version to check if addon exists
PLATFORM="$(readModelKey "${MODEL}" "platform")" KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
NEXT="a" NEXT="a"
# Loop menu # Loop menu
@ -666,9 +646,8 @@ function addonMenu() {
############################################################################### ###############################################################################
function moduleMenu() { function moduleMenu() {
PLATFORM="$(readModelKey "${MODEL}" "platform")" KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
NEXT="c" NEXT="c"
# loop menu # loop menu
while true; do while true; do
@ -850,7 +829,7 @@ function cmdlineMenu() {
if [ -n "${MODEL}" ]; then if [ -n "${MODEL}" ]; then
echo "s \"$(TEXT "Define SN/MAC")\"" >>"${TMP_PATH}/menu" echo "s \"$(TEXT "Define SN/MAC")\"" >>"${TMP_PATH}/menu"
fi fi
echo "m \"$(TEXT "Show model inherent cmdline")\"" >>"${TMP_PATH}/menu" # echo "m \"$(TEXT "Show model inherent cmdline")\"" >>"${TMP_PATH}/menu"
echo "e \"$(TEXT "Exit")\"" >>"${TMP_PATH}/menu" echo "e \"$(TEXT "Exit")\"" >>"${TMP_PATH}/menu"
DIALOG --title "$(TEXT "Cmdline")" \ DIALOG --title "$(TEXT "Cmdline")" \
--menu "$(TEXT "Choose a option")" 0 0 0 --file "${TMP_PATH}/menu" \ --menu "$(TEXT "Choose a option")" 0 0 0 --file "${TMP_PATH}/menu" \
@ -973,14 +952,14 @@ function cmdlineMenu() {
esac esac
done done
;; ;;
m) # m)
ITEMS="" # ITEMS=""
while IFS=': ' read KEY VALUE; do # while IFS=': ' read KEY VALUE; do
ITEMS+="${KEY}: ${VALUE}\n" # ITEMS+="${KEY}: ${VALUE}\n"
done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].cmdline") # done <<<$(readConfigMap "platforms.${PLATFORM}.cmdline" "${WORK_PATH}/platforms.yml")
DIALOG --title "$(TEXT "Cmdline")" \ # DIALOG --title "$(TEXT "Cmdline")" \
--msgbox "${ITEMS}" 0 0 # --msgbox "${ITEMS}" 0 0
;; # ;;
e) return ;; e) return ;;
esac esac
done done
@ -1283,12 +1262,7 @@ function extractDsmFiles() {
echo "$(TEXT "OK")" echo "$(TEXT "OK")"
echo -n "$(TEXT "Copying files: ")" echo -n "$(TEXT "Copying files: ")"
cp -f "${UNTAR_PAT_PATH}/grub_cksum.syno" "${PART1_PATH}" copyDSMFiles "${UNTAR_PAT_PATH}"
cp -f "${UNTAR_PAT_PATH}/GRUB_VER" "${PART1_PATH}"
cp -f "${UNTAR_PAT_PATH}/grub_cksum.syno" "${PART2_PATH}"
cp -f "${UNTAR_PAT_PATH}/GRUB_VER" "${PART2_PATH}"
cp -f "${UNTAR_PAT_PATH}/zImage" "${ORI_ZIMAGE_FILE}"
cp -f "${UNTAR_PAT_PATH}/rd.gz" "${ORI_RDGZ_FILE}"
rm -rf "${UNTAR_PAT_PATH}" rm -rf "${UNTAR_PAT_PATH}"
echo "$(TEXT "OK")" echo "$(TEXT "OK")"
} }
@ -1696,7 +1670,7 @@ function formatDisks() {
[ "${KNAME}" = "${LOADER_DISK}" -o "${PKNAME}" = "${LOADER_DISK}" ] && continue [ "${KNAME}" = "${LOADER_DISK}" -o "${PKNAME}" = "${LOADER_DISK}" ] && continue
[ -z "${ID}" ] && ID="Unknown" [ -z "${ID}" ] && ID="Unknown"
echo "\"${KNAME}\" \"${ID}\" \"off\"" >>"${TMP_PATH}/opts" echo "\"${KNAME}\" \"${ID}\" \"off\"" >>"${TMP_PATH}/opts"
done <<<$(lsblk -pno KNAME,ID,PKNAME | sort) done <<<$(lsblk -pno KNAME,ID,PKNAME)
if [ ! -f "${TMP_PATH}/opts" ]; then if [ ! -f "${TMP_PATH}/opts" ]; then
DIALOG --title "$(TEXT "Advanced")" \ DIALOG --title "$(TEXT "Advanced")" \
--msgbox "$(TEXT "No disk found!")" 0 0 --msgbox "$(TEXT "No disk found!")" 0 0
@ -1719,15 +1693,13 @@ function formatDisks() {
mdadm -S "${I}" mdadm -S "${I}"
done done
fi fi
(
for I in ${RESP}; do for I in ${RESP}; do
if [[ "${I}" = /dev/mmc* ]]; then if [[ "${I}" = /dev/mmc* ]]; then
echo y | mkfs.ext4 -T largefile4 -E nodiscard "${I}" echo y | mkfs.ext4 -T largefile4 -E nodiscard "${I}"
else else
echo y | mkfs.ext4 -T largefile4 "${I}" echo y | mkfs.ext4 -T largefile4 "${I}"
fi fi
done done 2>&1 | DIALOG --title "$(TEXT "Advanced")" \
) 2>&1 | DIALOG --title "$(TEXT "Advanced")" \
--progressbox "$(TEXT "Formatting ...")" 20 100 --progressbox "$(TEXT "Formatting ...")" 20 100
DIALOG --title "$(TEXT "Advanced")" \ DIALOG --title "$(TEXT "Advanced")" \
--msgbox "$(TEXT "Formatting is complete.")" 0 0 --msgbox "$(TEXT "Formatting is complete.")" 0 0
@ -1763,38 +1735,25 @@ function tryRecoveryDSM() {
DIALOG --title "$(TEXT "Try recovery DSM")" \ DIALOG --title "$(TEXT "Try recovery DSM")" \
--infobox "$(TEXT "Checking for backup of user's configuration for bootloader ...")" 0 0 --infobox "$(TEXT "Checking for backup of user's configuration for bootloader ...")" 0 0
if [ -f "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml" ]; then if [ -f "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml" ]; then
R_PLATFORM="$(readConfigKey "platform" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
R_MODEL="$(readConfigKey "model" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")" R_MODEL="$(readConfigKey "model" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
R_MODELID="$(readConfigKey "modelid" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
R_PRODUCTVER="$(readConfigKey "productver" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")" R_PRODUCTVER="$(readConfigKey "productver" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
R_BUILDNUM="$(readConfigKey "buildnum" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")" R_BUILDNUM="$(readConfigKey "buildnum" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
R_SMALLNUM="$(readConfigKey "smallnum" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")" R_SMALLNUM="$(readConfigKey "smallnum" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
R_PATURL="$(readConfigKey "paturl" "${USER_CONFIG_FILE}")" R_PATURL="$(readConfigKey "paturl" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
R_PATSUM="$(readConfigKey "patsum" "${USER_CONFIG_FILE}")" R_PATSUM="$(readConfigKey "patsum" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
if [ -n "${R_MODEL}" ] && [ -f "${WORK_PATH}/model-configs/${R_MODEL}.yml" ] &&
[ -n "${R_PRODUCTVER}" ] && arrayExistItem "${R_PRODUCTVER}" "$(readConfigEntriesArray "productvers" "${WORK_PATH}/model-configs/${R_MODEL}.yml" | sort -r)" && PS="$(readConfigEntriesArray "platforms" "${WORK_PATH}/platforms.yml" | sort)"
VS="$(readConfigEntriesArray "platforms.${R_PLATFORM}.productvers" "${WORK_PATH}/platforms.yml" | sort -r)"
if [ -n "${R_PLATFORM}" ] && arrayExistItem "${R_PLATFORM}" ${PS} &&
[ -n "${R_PRODUCTVER}" ] && arrayExistItem "${R_PRODUCTVER}" ${VS} &&
[ -n "${R_BUILDNUM}" ] && [ -n "${R_SMALLNUM}" ]; then [ -n "${R_BUILDNUM}" ] && [ -n "${R_SMALLNUM}" ]; then
if [ "${R_PATURL:0:1}" = "#" ] || [ -z "${R_PATSUM}" ]; then cp -Rf "${TMP_PATH}/mdX/usr/rr/backup/p1/"* "${PART1_PATH}"
if [ -f "${TMP_PATH}/mdX/.syno/patch/VERSION" ] &&
[ -f "${TMP_PATH}/mdX/.syno/patch/zImage" ] &&
[ -f "${TMP_PATH}/mdX/.syno/patch/rd.gz" ]; then
cp -f "${TMP_PATH}/mdX/.syno/patch/zImage" "${ORI_ZIMAGE_FILE}"
cp -f "${TMP_PATH}/mdX/.syno/patch/rd.gz" "${ORI_RDGZ_FILE}"
else
__umountDSMRootDisk
DIALOG --title "$(TEXT "Try recovery DSM")" \
--msgbox "$(TEXT "Found a backup of the user's configuration, but the system is damaged and will not be restored. Please reselect model and build.")" 0 0
return
fi
else
cp -rf "${TMP_PATH}/mdX/usr/rr/backup/p1/*" "${PART1_PATH}"
if [ -d "${TMP_PATH}/mdX/usr/rr/backup/p3" ]; then if [ -d "${TMP_PATH}/mdX/usr/rr/backup/p3" ]; then
cp -rf "${TMP_PATH}/mdX/usr/rr/backup/p3/*" "${PART3_PATH}" cp -Rf "${TMP_PATH}/mdX/usr/rr/backup/p3/"* "${PART3_PATH}"
fi
if [ -f "${TMP_PATH}/mdX/.syno/patch/VERSION" ] &&
[ -f "${TMP_PATH}/mdX/.syno/patch/zImage" ] &&
[ -f "${TMP_PATH}/mdX/.syno/patch/rd.gz" ]; then
cp -f "${TMP_PATH}/mdX/.syno/patch/zImage" "${ORI_ZIMAGE_FILE}"
cp -f "${TMP_PATH}/mdX/.syno/patch/rd.gz" "${ORI_RDGZ_FILE}"
fi fi
copyDSMFiles "${TMP_PATH}/mdX/.syno/patch"
__umountDSMRootDisk __umountDSMRootDisk
DIALOG --title "$(TEXT "Try recovery DSM")" \ DIALOG --title "$(TEXT "Try recovery DSM")" \
--msgbox "$(TEXT "Found a backup of the user's configuration, and restored it. Please rebuild and boot.")" 0 0 --msgbox "$(TEXT "Found a backup of the user's configuration, and restored it. Please rebuild and boot.")" 0 0
@ -1803,108 +1762,32 @@ function tryRecoveryDSM() {
return return
fi fi
fi fi
fi
DIALOG --title "$(TEXT "Try recovery DSM")" \ DIALOG --title "$(TEXT "Try recovery DSM")" \
--infobox "$(TEXT "Checking for installed DSM system ...")" 0 0 --infobox "$(TEXT "Checking for installed DSM system ...")" 0 0
if [ -f "${TMP_PATH}/mdX/.syno/patch/VERSION" ] &&
[ -f "${TMP_PATH}/mdX/.syno/patch/zImage" ] &&
[ -f "${TMP_PATH}/mdX/.syno/patch/rd.gz" ]; then
R_MODEL=""
R_PRODUCTVER=""
R_BUILDNUM=""
R_SMALLNUM=""
R_SN=""
R_MAC1=""
R_MAC2=""
unique="$(_get_conf_kv unique "${TMP_PATH}/mdX/.syno/patch/VERSION")"
majorversion="$(_get_conf_kv majorversion "${TMP_PATH}/mdX/.syno/patch/VERSION")"
minorversion="$(_get_conf_kv minorversion "${TMP_PATH}/mdX/.syno/patch/VERSION")"
buildnumber="$(_get_conf_kv buildnumber "${TMP_PATH}/mdX/.syno/patch/VERSION")"
smallfixnumber="$(_get_conf_kv smallfixnumber "${TMP_PATH}/mdX/.syno/patch/VERSION")"
while read F; do
M="$(basename ${F} .yml)"
UNIQUE=$(readModelKey "${M}" "unique")
[ "${unique}" = "${UNIQUE}" ] && R_MODEL="${M}" && break
done <<<$(find "${WORK_PATH}/model-configs" -maxdepth 1 -name \*.yml 2>/dev/null | sort)
if [ -n "${R_MODEL}" ]; then
ITEMS="$(readConfigEntriesArray "productvers" "${WORK_PATH}/model-configs/${R_MODEL}.yml" | sort -r)"
if arrayExistItem "${majorversion}.${minorversion}" ${ITEMS}; then
R_PRODUCTVER="${majorversion}.${minorversion}"
fi
fi
R_BUILDNUM=${buildnumber}
R_SMALLNUM=${smallfixnumber}
if [ -f "${TMP_PATH}/mdX/etc/synoinfo.conf" ]; then
R_SN=$(_get_conf_kv SN "${TMP_PATH}/mdX/etc/synoinfo.conf")
fi
if [ -n "${R_MODEL}" ] && [ -n "${R_PRODUCTVER}" ] && [ -n "${R_BUILDNUM}" ] && [ -n "${R_SMALLNUM}" ]; then setConfigFromDSM "${TMP_PATH}/mdX/.syno/patch"
cp -f "${TMP_PATH}/mdX/.syno/patch/zImage" "${ORI_ZIMAGE_FILE}" if [ $? -ne 0 ]; then
cp -f "${TMP_PATH}/mdX/.syno/patch/rd.gz" "${ORI_RDGZ_FILE}"
MODEL="${R_MODEL}"
PRODUCTVER="${R_PRODUCTVER}"
BUILDNUM=${R_BUILDNUM}
SMALLNUM=${R_SMALLNUM}
if [ -n "${R_SN}" ]; then
SN=${R_SN}
else
SN=$(generateSerial "${MODEL}")
fi
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
writeConfigKey "buildnum" "${BUILDNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
NETIF_NUM=2
MACS=($(generateMacAddress "${MODEL}" ${NETIF_NUM}))
for I in $(seq 1 ${NETIF_NUM}); do
writeConfigKey "mac${I}" "${MACS[$((${I} - 1))]}" "${USER_CONFIG_FILE}"
done
writeConfigKey "paturl" "#RECOVERY" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "" "${USER_CONFIG_FILE}"
# Delete synoinfo and reload model/build synoinfo
writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}"
while IFS=': ' read KEY VALUE; do
writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}"
done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].synoinfo")
# Check addons
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
while IFS=': ' read ADDON PARAM; do
[ -z "${ADDON}" ] && continue
if ! checkAddonExist "${ADDON}" "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}"; then
deleteConfigKey "addons.\"${ADDON}\"" "${USER_CONFIG_FILE}"
fi
done <<<$(readConfigMap "addons" "${USER_CONFIG_FILE}")
# Rebuild modules
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do
writeConfigKey "modules.\"${ID}\"" "" "${USER_CONFIG_FILE}"
done <<<$(getAllModules "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}")
__umountDSMRootDisk
DIALOG --title "$(TEXT "Try recovery DSM")" \
--msgbox "$(TEXT "Found a installed DSM system and restored it. Please rebuild and boot.")" 0 0
touch ${PART1_PATH}/.build
return
else
__umountDSMRootDisk
DIALOG --title "$(TEXT "Try recovery DSM")" \
--msgbox "$(TEXT "Found a installed DSM system, but the system is damaged and will not be restored. Please reselect model and build.")" 0 0
touch ${PART1_PATH}/.build
return
fi
fi
__umountDSMRootDisk __umountDSMRootDisk
DIALOG --title "$(TEXT "Try recovery DSM")" \ DIALOG --title "$(TEXT "Try recovery DSM")" \
--msgbox "$(TEXT "The installed DSM system was not found, or the system is damaged and cannot be recovered. Please reselect model and build.")" 0 0 --msgbox "$(TEXT "The installed DSM system was not found, or the system is damaged and cannot be recovered. Please reselect model and build.")" 0 0
return return
fi
if [ -f "${TMP_PATH}/mdX/etc/synoinfo.conf" ]; then
R_SN=$(_get_conf_kv SN "${TMP_PATH}/mdX/etc/synoinfo.conf")
[ -n "${R_SN}" ] && SN=${R_SN} && writeConfigKey "sn" "${SN}" "${USER_CONFIG_FILE}"
fi
writeConfigKey "paturl" "#RECOVERY" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "" "${USER_CONFIG_FILE}"
copyDSMFiles "${TMP_PATH}/mdX/.syno/patch"
__umountDSMRootDisk
DIALOG --title "$(TEXT "Try recovery DSM")" \
--msgbox "$(TEXT "Found a installed DSM system and restored it. Please rebuild and boot.")" 0 0
return
} }
############################################################################### ###############################################################################
@ -2136,7 +2019,7 @@ function cloneBootloaderDisk() {
[ -z "${KNAME}" -o -z "${ID}" ] && continue [ -z "${KNAME}" -o -z "${ID}" ] && continue
[ "${KNAME}" = "${LOADER_DISK}" -o "${PKNAME}" = "${LOADER_DISK}" ] && continue [ "${KNAME}" = "${LOADER_DISK}" -o "${PKNAME}" = "${LOADER_DISK}" ] && continue
echo "\"${KNAME}\" \"${ID}\" \"off\"" >>"${TMP_PATH}/opts" echo "\"${KNAME}\" \"${ID}\" \"off\"" >>"${TMP_PATH}/opts"
done <<<$(lsblk -dpno KNAME,ID,PKNAME | sort) done <<<$(lsblk -dpno KNAME,ID,PKNAME)
if [ ! -f "${TMP_PATH}/opts" ]; then if [ ! -f "${TMP_PATH}/opts" ]; then
DIALOG --title "$(TEXT "Advanced")" \ DIALOG --title "$(TEXT "Advanced")" \
--msgbox "$(TEXT "No disk found!")" 0 0 --msgbox "$(TEXT "No disk found!")" 0 0
@ -2304,12 +2187,14 @@ function advancedMenu() {
NEXT="l" NEXT="l"
while true; do while true; do
rm -f "${TMP_PATH}/menu" rm -f "${TMP_PATH}/menu"
echo "9 \"$(TEXT "DSM rd compression:") \Z4${RD_COMPRESSED}\Zn\"" >>"${TMP_PATH}/menu"
echo "l \"$(TEXT "Switch LKM version:") \Z4${LKM}\Zn\"" >>"${TMP_PATH}/menu" echo "l \"$(TEXT "Switch LKM version:") \Z4${LKM}\Zn\"" >>"${TMP_PATH}/menu"
echo "j \"$(TEXT "HDD sort(hotplug):") \Z4${HDDSORT}\Zn\"" >>"${TMP_PATH}/menu" echo "j \"$(TEXT "HDD sort(hotplug):") \Z4${HDDSORT}\Zn\"" >>"${TMP_PATH}/menu"
if [ -n "${PRODUCTVER}" ]; then if [ -n "${PRODUCTVER}" ]; then
echo "c \"$(TEXT "show/modify the current pat data")\"" >>"${TMP_PATH}/menu" echo "c \"$(TEXT "show/modify the current pat data")\"" >>"${TMP_PATH}/menu"
echo "8 \"$(TEXT "Switch SATADOM mode:") \Z4${SATADOM}\Zn\"" >>"${TMP_PATH}/menu"
fi fi
if [ "true" = "$(readModelKey "${MODEL}" "dt")" ]; then if [ -n "${PLATFORM}" ] && [ "true" = "$(readConfigKey "platforms.${PLATFORM}.dt" "${WORK_PATH}/platforms.yml")" ]; then
echo "d \"$(TEXT "Custom DTS")\"" >>"${TMP_PATH}/menu" echo "d \"$(TEXT "Custom DTS")\"" >>"${TMP_PATH}/menu"
fi fi
echo "q \"$(TEXT "Switch direct boot:") \Z4${DIRECTBOOT}\Zn\"" >>"${TMP_PATH}/menu" echo "q \"$(TEXT "Switch direct boot:") \Z4${DIRECTBOOT}\Zn\"" >>"${TMP_PATH}/menu"
@ -2353,6 +2238,12 @@ function advancedMenu() {
2>${TMP_PATH}/resp 2>${TMP_PATH}/resp
[ $? -ne 0 ] && break [ $? -ne 0 ] && break
case $(cat "${TMP_PATH}/resp") in case $(cat "${TMP_PATH}/resp") in
9)
[ "${RD_COMPRESSED}" = "true" ] && RD_COMPRESSED='false' || RD_COMPRESSED='true'
writeConfigKey "rd-compressed" "${RD_COMPRESSED}" "${USER_CONFIG_FILE}"
touch ${PART1_PATH}/.build
NEXT="9"
;;
l) l)
LKM=$([ "${LKM}" = "dev" ] && echo 'prod' || ([ "${LKM}" = "test" ] && echo 'dev' || echo 'test')) LKM=$([ "${LKM}" = "dev" ] && echo 'prod' || ([ "${LKM}" = "test" ] && echo 'dev' || echo 'test'))
writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}" writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}"
@ -2383,6 +2274,20 @@ function advancedMenu() {
fi fi
NEXT="e" NEXT="e"
;; ;;
8)
rm -f "${TMP_PATH}/opts"
echo "1 \"Native SATA Disk(SYNO)\"" >>"${TMP_PATH}/opts"
echo "2 \"Fake SATA DOM(Redpill)\"" >>"${TMP_PATH}/opts"
DIALOG --title "$(TEXT "Advanced")" \
--default-item "${SATADOM}" --menu "$(TEXT "Choose a mode(Only supported for kernel version 4)")" 0 0 0 --file "${TMP_PATH}/opts" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && return
resp=$(cat ${TMP_PATH}/resp 2>/dev/null)
[ -z "${resp}" ] && return
SATADOM=${resp}
writeConfigKey "satadom" "${SATADOM}" "${USER_CONFIG_FILE}"
NEXT="8"
;;
d) d)
customDTS customDTS
NEXT="e" NEXT="e"
@ -2927,9 +2832,8 @@ function updateRR() {
cp -Rf "${TMP_PATH}/update/${VALUE}"/* "${VALUE}" cp -Rf "${TMP_PATH}/update/${VALUE}"/* "${VALUE}"
if [ "$(realpath "${VALUE}")" = "$(realpath "${MODULES_PATH}")" ]; then if [ "$(realpath "${VALUE}")" = "$(realpath "${MODULES_PATH}")" ]; then
if [ -n "${MODEL}" -a -n "${PRODUCTVER}" ]; then if [ -n "${MODEL}" -a -n "${PRODUCTVER}" ]; then
PLATFORM="$(readModelKey "${MODEL}" "platform")" KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
if [ -n "${PLATFORM}" -a -n "${KVER}" ]; then if [ -n "${PLATFORM}" -a -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do while read ID DESC; do
@ -3062,9 +2966,8 @@ function updateModules() {
rm -rf "${MODULES_PATH}/"* rm -rf "${MODULES_PATH}/"*
cp -rf "${TMP_PATH}/update/"* "${MODULES_PATH}/" cp -rf "${TMP_PATH}/update/"* "${MODULES_PATH}/"
if [ -n "${MODEL}" -a -n "${PRODUCTVER}" ]; then if [ -n "${MODEL}" -a -n "${PRODUCTVER}" ]; then
PLATFORM="$(readModelKey "${MODEL}" "platform")" KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
if [ -n "${PLATFORM}" -a -n "${KVER}" ]; then if [ -n "${PLATFORM}" -a -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do while read ID DESC; do
@ -3403,9 +3306,8 @@ else
fi fi
echo "u \"$(TEXT "Parse pat")\"" >>"${TMP_PATH}/menu" echo "u \"$(TEXT "Parse pat")\"" >>"${TMP_PATH}/menu"
if [ -n "${PRODUCTVER}" ]; then if [ -n "${PRODUCTVER}" ]; then
PLATFORM="$(readModelKey "${MODEL}" "platform")" KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
if [ -f "${CKS_PATH}/bzImage-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.gz" ] && if [ -f "${CKS_PATH}/bzImage-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.gz" ] &&
[ -f "${CKS_PATH}/modules-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.tgz" ]; then [ -f "${CKS_PATH}/modules-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.tgz" ]; then
echo "s \"$(TEXT "Kernel:") \Z4${KERNEL}\Zn\"" >>"${TMP_PATH}/menu" echo "s \"$(TEXT "Kernel:") \Z4${KERNEL}\Zn\"" >>"${TMP_PATH}/menu"

View File

@ -1,67 +0,0 @@
id: "DS1019+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_leds_lp3943: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "apollolake"
unique: "synology_apollolake_1019+"
serial:
prefix:
- "1850"
- "1880"
middle: "QXR"
suffix: "numeric"
flags:
- "movbe"
dom: 2
dt: false
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,62 +0,0 @@
id: "DS1520+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "geminilake"
unique: "synology_geminilake_1520+"
serial:
prefix:
- "2060"
middle: "RYR"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,53 +0,0 @@
id: "DS1522+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "r1000"
unique: "synology_r1000_1522+"
serial:
prefix:
- "2270"
middle: "TRR"
suffix: "alpha"
macpre: 9009d0
dom: 2
dt: true
beta: true
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,60 +0,0 @@
id: "DS1621+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "v1000"
unique: "synology_v1000_1621+"
serial:
prefix:
- "2080"
middle: "S7R"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,65 +0,0 @@
id: "DS1621xs+"
synoinfo: &synoinfo
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_oob_ctl: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellnk"
unique: "synology_broadwellnk_1621xs+"
serial:
prefix:
- "2070"
middle: "RVR"
suffix: "alpha"
dom: 1
dt: false
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,64 +0,0 @@
id: "DS1819+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "denverton"
unique: "synology_denverton_1819+"
serial:
prefix:
- "1890"
middle: "R5R"
suffix: "alpha"
flags:
- "movbe"
dom: 2
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,60 +0,0 @@
id: "DS1821+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "v1000"
unique: "synology_v1000_1821+"
serial:
prefix:
- "2110"
middle: "SKR"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,53 +0,0 @@
id: "DS1823xs+"
synoinfo: &synoinfo
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "v1000"
unique: "synology_v1000_1823xs+"
serial:
prefix:
- "2280"
middle: "V5R"
suffix: "alpha"
dom: 2
dt: true
beta: false
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,62 +0,0 @@
id: "DS220+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "geminilake"
unique: "synology_geminilake_220+"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,46 +0,0 @@
id: "DS224+"
synoinfo: &synoinfo
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "geminilake"
unique: "synology_geminilake_224+"
serial:
prefix:
- "2350"
middle: "WBR"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,64 +0,0 @@
id: "DS2419+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "denverton"
unique: "synology_denverton_2419+"
serial:
prefix:
- "1880"
middle: "QZA"
suffix: "alpha"
flags:
- "movbe"
dom: 2
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,61 +0,0 @@
id: "DS2422+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "v1000"
unique: "synology_v1000_2422+"
serial:
prefix:
- "2140"
- "2180"
middle: "SLR"
suffix: "alpha"
dom: 2
dt: true
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,67 +0,0 @@
id: "DS3617xs"
synoinfo: &synoinfo
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwell"
unique: "synology_broadwell_3617xs"
serial:
prefix:
- "1130"
- "1230"
- "1330"
- "1430"
middle: "ODN"
suffix: "numeric"
dom: 1
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,65 +0,0 @@
id: "DS3622xs+"
synoinfo: &synoinfo
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_oob_ctl: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellnk"
unique: "synology_broadwellnk_3622xs+"
serial:
prefix:
- "2150"
middle: "SQR"
suffix: "alpha"
dom: 1
dt: false
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,55 +0,0 @@
id: "DS423+"
synoinfo: &synoinfo
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "geminilake"
unique: "synology_geminilake_423+"
serial:
prefix:
- "22A0"
middle: "VKR"
suffix: "alpha"
dom: 2
dt: true
beta: false
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,67 +0,0 @@
id: "DS718+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_leds_lp3943: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "apollolake"
unique: "synology_apollolake_718+"
serial:
prefix:
- "1930"
middle: "PEN"
suffix: "numeric"
flags:
- "movbe"
dom: 2
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,64 +0,0 @@
id: "DS720+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "geminilake"
unique: "synology_geminilake_720+"
serial:
prefix:
- "2010"
- "2110"
middle: "QWR"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,54 +0,0 @@
id: "DS723+"
synoinfo: &synoinfo
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "r1000"
unique: "synology_r1000_723+"
serial:
prefix:
- "2270"
middle: "TQR"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,66 +0,0 @@
id: "DS918+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_leds_lp3943: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "apollolake"
unique: "synology_apollolake_918+"
serial:
prefix:
- "1910"
middle: "PDN"
suffix: "numeric"
flags:
- "movbe"
dom: 2
dt: false
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,65 +0,0 @@
id: "DS920+"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "geminilake"
unique: "synology_geminilake_920+"
serial:
prefix:
- "2030"
- "2040"
- "20C0"
- "2150"
middle: "SBR"
suffix: "alpha"
dom: 2
dt: true
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,55 +0,0 @@
id: "DS923+"
synoinfo: &synoinfo
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "r1000"
unique: "synology_r1000_923+"
serial:
prefix:
- "2270"
middle: "TQR"
suffix: "alpha"
macpre: 9009d0
dom: 2
dt: true
beta: false
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,56 +0,0 @@
id: "DVA1622"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "geminilake"
unique: "synology_geminilake_dva1622"
serial:
prefix:
- "2030"
- "2040"
- "20C0"
- "2150"
middle: "UBR"
suffix: "alpha"
dom: 2
dt: true
beta: false
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,65 +0,0 @@
id: "DVA3219"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "denverton"
unique: "synology_denverton_dva3219"
serial:
prefix:
- "1930"
- "1940"
middle: "RFR"
suffix: "alpha"
flags:
- "movbe"
dom: 2
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,67 +0,0 @@
id: "DVA3221"
synoinfo: &synoinfo
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "denverton"
unique: "synology_denverton_dva3221"
serial:
prefix:
- "2030"
- "2040"
- "20C0"
- "2150"
middle: "SJR"
suffix: "alpha"
flags:
- "movbe"
dom: 2
dt: false
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,64 +0,0 @@
id: "FS2500"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
intel_iommu: "igfx_off"
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "v1000"
unique: "synology_v1000_fs2500"
serial:
prefix:
- "1960"
middle: "PSN"
suffix: "numeric"
dom: 2
dt: true
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,68 +0,0 @@
id: "FS6400"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
supportsas: "no"
supportsas_v2_r1: "no"
support_multipath: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
SASmodel: 1
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "purley"
unique: "synology_purley_fs6400"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
dom: 1
dt: true
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,73 +0,0 @@
id: "HD6500"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
internal_disk_without_led_mask: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
supportsas: "no"
support_multipath: "yes"
support_install_only_dev: "no"
isolated_disk_system: "no"
required_system_disk_number: "0"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
cmdline: &cmdline
SASmodel: 1
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "purley"
unique: "synology_purley_hd6500"
serial:
prefix:
- "20A0"
- "21C0"
middle: "RUR"
suffix: "alpha"
macpre: 9009d0
dom: 1
dt: true
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,61 +0,0 @@
id: "RS1221+"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "v1000"
unique: "synology_v1000_rs1221+"
serial:
prefix:
- "20B0"
middle: "RWR"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,65 +0,0 @@
id: "RS1619xs+"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellnk"
unique: "synology_broadwellnk_rs1619xs+"
serial:
prefix:
- "1920"
middle: "QPR"
suffix: "alpha"
dom: 2
dt: false
beta: false
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,54 +0,0 @@
id: "RS2423+"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "v1000"
unique: "synology_v1000_rs2423+"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,57 +0,0 @@
id: "RS2423rp+"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_leds_atmega1608: "no"
support_leds_lp3943: "no"
supportadt7490: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "v1000"
unique: "synology_v1000_rs2423rp+"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
dom: 2
dt: true
beta: true
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,66 +0,0 @@
id: "RS3618xs"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
supportssdcache: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwell"
unique: "synology_broadwell_rs3618xs"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
dom: 2
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,65 +0,0 @@
id: "RS3621xs+"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellnk"
unique: "synology_broadwellnk_rs3621xs+"
serial:
prefix:
- "20A0"
middle: "SZR"
suffix: "alpha"
dom: 2
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,66 +0,0 @@
id: "RS4021xs+"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellnk"
unique: "synology_broadwellnk_rs4021xs+"
serial:
prefix:
- "2160"
middle: "T2R"
suffix: "alpha"
macpre: 9009d0
dom: 2
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,72 +0,0 @@
id: "SA3200d"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_hibernation: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_disk_hibernation: "yes"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
supportsas: "no"
supportbootinst:
no_disk_system: "no"
support_auto_install: "no"
support_install_only_dev: "no"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellntbap"
unique: "synology_broadwellntbap_sa3200d"
serial:
prefix:
- "19A0"
middle: "S4R"
suffix: "alpha"
dom: 1
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,66 +0,0 @@
id: "SA3400"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
supportsas: "no"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellnk"
unique: "synology_broadwellnk_sa3400"
serial:
prefix:
- "1970"
middle: "RJR"
suffix: "alpha"
dom: 1
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,73 +0,0 @@
id: "SA3400d"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_hibernation: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_disk_hibernation: "yes"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
supportsas: "no"
supportbootinst:
no_disk_system: "no"
support_auto_install: "no"
support_install_only_dev: "no"
required_system_disk_number: "0"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellntbap"
unique: "synology_broadwellntbap_sa3400d"
serial:
prefix:
- "2350"
middle: "W8R"
suffix: "alpha"
dom: 1
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,59 +0,0 @@
id: "SA3410"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_oob_ctl: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
supportsas: "no"
supportsas_v2_r1: "no"
support_multipath: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
SASmodel: 1
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "broadwellnkv2"
unique: "synology_broadwellnkv2_sa3410"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
dom: 1
dt: true
beta: true
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,66 +0,0 @@
id: "SA3600"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
supportsas: "no"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
HddHotplug: 1
SMBusHddDynamicPower: 1
syno_hdd_detect: 0
syno_hdd_powerup_seq: 0
vender_format_version: 2
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
- "ramdisk-disable-disabled-ports-*.patch"
platform: "broadwellnk"
unique: "synology_broadwellnk_sa3600"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
dom: 1
dt: false
beta: true
productvers:
"7.0":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,59 +0,0 @@
id: "SA3610"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_oob_ctl: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
supportsas: "no"
supportsas_v2_r1: "no"
support_multipath: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
cmdline: &cmdline
SASmodel: 1
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
elevator: elevator
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v4-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "broadwellnkv2"
unique: "synology_broadwellnkv2_sa3610"
serial:
prefix:
- "0000"
middle: "XXX"
suffix: "alpha"
dom: 1
dt: true
beta: true
productvers:
"7.1":
kver: "4.4.180"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kver: "4.4.302"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,58 +0,0 @@
id: "SA6400"
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_bde_internal_10g: "no"
support_oob_ctl: "no"
support_syno_hybrid_raid:
supportraidgroup:
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
netif_seq_by_dts: "no"
cmdline: &cmdline
HddHotplug: 1
vender_format_version: 2
syno_ttyS0: "serial,0x3f8"
syno_ttyS1: "serial,0x2f8"
patch: &patch
- "ramdisk-etc-rc-*.patch"
- "ramdisk-init-script-v5-*.patch"
- "ramdisk-post-init-script-*.patch"
- "ramdisk-disable-root-pwd-*.patch"
platform: "epyc7002"
unique: "synology_epyc7002_sa6400"
serial:
prefix:
- "2270"
middle: "UMR"
suffix: "alpha"
macpre: 9009d0
dom: -1
dt: true
beta: false
productvers:
"7.1":
kpre: "7.1"
kver: "5.10.55"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch
"7.2":
kpre: "7.2"
kver: "5.10.55"
rd-compressed: false
cmdline:
<<: *cmdline
synoinfo:
<<: *synoinfo
patch: *patch

View File

@ -1,39 +0,0 @@
--- a/linuxrc.syno.impl
+++ b/linuxrc.syno.impl
@@ -49,6 +49,9 @@
UnknownSynoPartitionMigrationFlag="/.unknown_syno_partition_migrate"
IncompatibleRootDevice="/.incompatible_root_device"
+insmod /usr/lib/modules/rp.ko
+/addons/addons.sh early
+
UmountRoot()
{
grep "^${RootDevice}" /proc/mounts && /bin/umount -f ${Mnt}
@@ -69,6 +73,8 @@
/etc.defaults/AHAtasks stage_change_end
fi
+ rmmod rp
+ /addons/addons.sh jrExit
UmountRoot
exit $1
@@ -178,6 +184,8 @@
echo "Insert basic USB modules..."
SYNOLoadModules $USB_MODULES
+/addons/addons.sh modules
+
# insert Etron USB3.0 drivers
if [ $KERNEL_VCODE -ge "$(KernelVersionCode "3.10")" ]; then
@@ -232,6 +240,8 @@
fi
fi
+/addons/addons.sh patches
+
if [ "$SupportDualhead" = "yes" ]; then
# Run HA script
/etc.defaults/AHAtasks check_stage

View File

@ -1,39 +0,0 @@
--- a/linuxrc.syno.impl
+++ b/linuxrc.syno.impl
@@ -51,6 +51,9 @@
UnknownSynoPartitionMigrationFlag="/.unknown_syno_partition_migrate"
IncompatibleRootDevice="/.incompatible_root_device"
+insmod /usr/lib/modules/rp.ko
+/addons/addons.sh early
+
UmountRoot()
{
grep "^${RootDevice}" /proc/mounts && /bin/umount -f ${Mnt}
@@ -67,6 +69,8 @@
# show date for login info
date
+ rmmod rp
+ /addons/addons.sh jrExit
UmountRoot
exit $1
@@ -176,6 +179,8 @@
echo "Insert basic USB modules..."
SYNOLoadModules $USB_MODULES
+/addons/addons.sh modules
+
# insert Etron USB3.0 drivers
if [ $KERNEL_VCODE -ge "$(KernelVersionCode "3.10")" ]; then
@@ -224,6 +229,8 @@
fi
fi
+/addons/addons.sh patches
+
LoadBrmModules
####################################################

View File

@ -1,39 +0,0 @@
--- a/linuxrc.syno.impl
+++ b/linuxrc.syno.impl
@@ -51,6 +51,9 @@
UnknownSynoPartitionMigrationFlag="/.unknown_syno_partition_migrate"
IncompatibleRootDevice="/.incompatible_root_device"
+insmod /usr/lib/modules/rp.ko
+/addons/addons.sh early
+
UmountRoot()
{
grep "^${RootDevice}" /proc/mounts && /bin/umount -f ${Mnt}
@@ -67,6 +69,8 @@
# show date for login info
date
+ rmmod rp
+ /addons/addons.sh jrExit
if [ "$1" -eq 0 ]; then
TryRestoringDeviceBackToSwapRaid
fi
@@ -176,6 +179,8 @@
echo "Insert basic USB modules..."
SYNOLoadModules $USB_MODULES
+/addons/addons.sh modules
+
# insert Etron USB3.0 drivers
if [ $KERNEL_VCODE -ge "$(KernelVersionCode "3.10")" ]; then
@@ -224,6 +229,8 @@
fi
fi
+/addons/addons.sh patches
+
LoadBrmModules
if [ "$KERNEL_VCODE" -ge "$(KernelVersionCode "5.10")" ]; then

View File

@ -0,0 +1,162 @@
synoinfo: &synoinfo
supportext4: "yes"
support_uasp: "yes"
support_printer: "yes"
support_usb_printer: "yes"
support_disk_compatibility: "no"
support_memory_compatibility: "no"
support_led_brightness_adjustment: "no"
support_leds_atmega1608: "no"
support_leds_lp3943: "no"
support_oob_ctl: "no"
support_syno_hybrid_raid: "no"
supportraidgroup: "no"
HddEnableDynamicPower: "yes"
maxlanport: "8"
netif_seq: "0 1 2 3 4 5 6 7"
buzzeroffen: "0xffff"
platforms:
apollolake:
dt: false
flags:
- "movbe"
synoinfo:
<<: *synoinfo
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
broadwell:
dt: false
synoinfo:
<<: *synoinfo
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
broadwellnk:
dt: false
synoinfo:
<<: *synoinfo
support_bde_internal_10g: "no"
supportsas: "no"
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
broadwellnkv2:
dt: true
synoinfo:
<<: *synoinfo
support_bde_internal_10g: "no"
supportsas: "no"
supportsas_v2_r1: "no"
support_multipath: "yes"
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
broadwellntbap:
dt: false
synoinfo:
<<: *synoinfo
support_bde_internal_10g: "no"
supportsas: "no"
supportbootinst: "no"
no_disk_system: "no"
support_auto_install: "no"
support_install_only_dev: "no"
required_system_disk_number: "0"
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
denverton:
dt: false
flags:
- "movbe"
synoinfo:
<<: *synoinfo
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
geminilake:
dt: true
synoinfo:
<<: *synoinfo
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
purley:
dt: true
synoinfo:
<<: *synoinfo
supportsas: "no"
supportsas_v2_r1: "no"
support_multipath: "yes"
support_install_only_dev: "no"
isolated_disk_system: "no"
required_system_disk_number: "0"
internal_disk_without_led_mask: "no"
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
r1000:
dt: true
synoinfo:
<<: *synoinfo
productvers:
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
v1000:
dt: true
synoinfo:
<<: *synoinfo
productvers:
"7.0":
kver: "4.4.180"
"7.1":
kver: "4.4.180"
"7.2":
kver: "4.4.302"
epyc7002:
dt: true
synoinfo:
<<: *synoinfo
netif_seq_by_dts: "no"
productvers:
"7.1":
kpre: "7.1"
kver: "5.10.55"
"7.2":
kpre: "7.2"
kver: "5.10.55"

View File

@ -29,11 +29,13 @@ mkdir -p "${RAMDISK_PATH}"
) >/dev/null 2>&1 ) >/dev/null 2>&1
# get user data # get user data
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")" MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")" BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")" SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
RD_COMPRESSED="$(readConfigKey "rd-compressed" "${USER_CONFIG_FILE}")"
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")" LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")" SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")"
LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")" LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
@ -70,10 +72,8 @@ writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
echo -n "." echo -n "."
# Read model data # Read model data
PLATFORM="$(readModelKey "${MODEL}" "platform")" KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
RD_COMPRESSED="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].rd-compressed")"
# Sanity check # Sanity check
if [ -z "${PLATFORM}" -o -z "${KVER}" ]; then if [ -z "${PLATFORM}" -o -z "${KVER}" ]; then
@ -99,7 +99,13 @@ while IFS=': ' read KEY VALUE; do
done <<<$(readConfigMap "modules" "${USER_CONFIG_FILE}") done <<<$(readConfigMap "modules" "${USER_CONFIG_FILE}")
# Patches (diff -Naru OLDFILE NEWFILE > xxx.patch) # Patches (diff -Naru OLDFILE NEWFILE > xxx.patch)
while read PE; do PATCHS=()
PATCHS+=("ramdisk-etc-rc-*.patch")
PATCHS+=("ramdisk-init-script-*.patch")
PATCHS+=("ramdisk-post-init-script-*.patch")
PATCHS+=("ramdisk-disable-root-pwd-*.patch")
PATCHS+=("ramdisk-disable-disabled-ports-*.patch")
for PE in ${PATCHS[@]}; do
RET=1 RET=1
echo "Patching with ${PE}" >"${LOG_FILE}" echo "Patching with ${PE}" >"${LOG_FILE}"
for PF in $(ls ${WORK_PATH}/patch/${PE} 2>/dev/null); do for PF in $(ls ${WORK_PATH}/patch/${PE} 2>/dev/null); do
@ -113,7 +119,7 @@ while read PE; do
[ ${RET} -eq 0 ] && break [ ${RET} -eq 0 ] && break
done done
[ ${RET} -ne 0 ] && exit 1 [ ${RET} -ne 0 ] && exit 1
done <<<$(readModelArray "${MODEL}" "productvers.[${PRODUCTVER}].patch") done
# Patch /etc/synoinfo.conf # Patch /etc/synoinfo.conf
echo -n "." echo -n "."
@ -156,19 +162,19 @@ echo "Create addons.sh" >"${LOG_FILE}"
mkdir -p "${RAMDISK_PATH}/addons" mkdir -p "${RAMDISK_PATH}/addons"
echo "#!/bin/sh" >"${RAMDISK_PATH}/addons/addons.sh" echo "#!/bin/sh" >"${RAMDISK_PATH}/addons/addons.sh"
echo 'echo "addons.sh called with params ${@}"' >>"${RAMDISK_PATH}/addons/addons.sh" echo 'echo "addons.sh called with params ${@}"' >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export LOADERLABEL=RR" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export LOADERLABEL=\"RR\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export LOADERVERSION=${RR_VERSION}" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export LOADERVERSION=\"${RR_VERSION}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export PLATFORM=${PLATFORM}" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export PLATFORM=\"${PLATFORM}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export MODEL=${MODEL}" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export MODEL=\"${MODEL}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export PRODUCTVERL=${PRODUCTVERL}" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export PRODUCTVERL=\"${PRODUCTVERL}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export MLINK=${PATURL}" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export MLINK=\"${PATURL}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export MCHECKSUM=${PATSUM}" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export MCHECKSUM=\"${PATSUM}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export LAYOUT=${LAYOUT}" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export LAYOUT=\"${LAYOUT}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export KEYMAP=${KEYMAP}" >>"${RAMDISK_PATH}/addons/addons.sh" echo "export KEYMAP=\"${KEYMAP}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
chmod +x "${RAMDISK_PATH}/addons/addons.sh" chmod +x "${RAMDISK_PATH}/addons/addons.sh"
# This order cannot be changed. # This order cannot be changed.
for ADDON in "revert" "misc" "eudev" "disks" "localrss" "notify" "wol" "rndis"; do for ADDON in "redpill" "revert" "misc" "eudev" "disks" "localrss" "notify" "wol" "rndis"; do
PARAMS="" PARAMS=""
if [ "${ADDON}" = "disks" ]; then if [ "${ADDON}" = "disks" ]; then
PARAMS=${HDDSORT} PARAMS=${HDDSORT}

View File

@ -0,0 +1,220 @@
"DS224+":
prefix:
- "2350"
middle:
- "WBR"
suffix: "alpha"
"DS423+":
prefix:
- "22A0"
middle:
- "VKR"
suffix: "alpha"
"DS718+":
prefix:
- "1930"
middle:
- "PEN"
suffix: "numeric"
"DS720+":
prefix:
- "2010"
- "2110"
middle:
- "QWR"
suffix: "alpha"
"DS918+":
prefix:
- "1910"
middle:
- "PDN"
suffix: "numeric"
"DS920+":
prefix:
- "2030"
- "2040"
- "20C0"
- "2150"
middle:
- "SBR"
suffix: "alpha"
"DS923+":
prefix:
- "2270"
middle:
- "TQR"
suffix: "alpha"
macpre: 9009d0
"DS1019+":
prefix:
- "1850"
- "1880"
middle:
- "QXR"
suffix: "numeric"
"DS1520+":
prefix:
- "2060"
middle:
- "RYR"
suffix: "alpha"
"DS1522+":
prefix:
- "2270"
middle:
- "TRR"
suffix: "alpha"
macpre: 9009d0
"DS1621+":
prefix:
- "2080"
middle:
- "S7R"
suffix: "alpha"
"DS1621xs+":
prefix:
- "2070"
middle:
- "RVR"
suffix: "alpha"
"DS1819+":
prefix:
- "1890"
middle:
- "R5R"
suffix: "alpha"
"DS1821+":
prefix:
- "2110"
middle:
- "SKR"
suffix: "alpha"
"DS1823xs+":
prefix:
- "2280"
middle:
- "V5R"
suffix: "alpha"
"DS2419+":
prefix:
- "1880"
middle:
- "QZA"
suffix: "alpha"
"DS2422+":
prefix:
- "2140"
- "2180"
middle:
- "SLR"
suffix: "alpha"
"DS3617xs":
prefix:
- "1130"
- "1230"
- "1330"
- "1430"
middle:
- "ODN"
suffix: "numeric"
"DS3622xs+":
prefix:
- "2150"
middle:
- "SQR"
suffix: "alpha"
"DVA1622":
prefix:
- "2030"
- "2040"
- "20C0"
- "2150"
middle:
- "UBR"
suffix: "alpha"
"DVA3219":
prefix:
- "1930"
- "1940"
middle:
- "RFR"
suffix: "alpha"
"DVA3221":
prefix:
- "2030"
- "2040"
- "20C0"
- "2150"
middle:
- "SJR"
suffix: "alpha"
"FS2500":
prefix:
- "1960"
middle:
- "PSN"
suffix: "numeric"
"FS6400":
prefix:
- "0000"
middle:
- "XXX"
suffix: "alpha"
"HD6500":
prefix:
- "20A0"
- "21C0"
middle:
- "RUR"
suffix: "alpha"
macpre: 9009d0
"RS1221+":
prefix:
- "20B0"
middle:
- "RWR"
suffix: "alpha"
"RS1619xs+":
prefix:
- "1920"
middle:
- "QPR"
suffix: "alpha"
"RS3621xs+":
prefix:
- "20A0"
middle:
- "SZR"
suffix: "alpha"
"RS4021xs+":
prefix:
- "2160"
middle:
- "T2R"
suffix: "alpha"
macpre: 9009d0
"SA3200D":
prefix:
- "19A0"
middle:
- "S4R"
suffix: "alpha"
"SA3400":
prefix:
- "1970"
middle:
- "RJR"
suffix: "alpha"
"SA6400":
prefix:
- "2350"
middle:
- "W8R"
suffix: "alpha"
"SA3410":
prefix:
- "2270"
middle:
- "UMR"
suffix: "alpha"
macpre: 9009d0

View File

@ -5,9 +5,10 @@
. ${WORK_PATH}/include/functions.sh . ${WORK_PATH}/include/functions.sh
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")" PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
# Adapted from: scripts/Makefile.lib # Adapted from: scripts/Makefile.lib
# Usage: size_append FILE [FILE2] [FILEn]... # Usage: size_append FILE [FILE2] [FILEn]...

View File

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

View File

@ -6,7 +6,7 @@
# See /LICENSE for more information. # See /LICENSE for more information.
# #
import os, sys, glob, json, yaml, click, shutil, tarfile, kmodule import os, sys, glob, json, yaml, click, shutil, tarfile, kmodule, requests
from openpyxl import Workbook from openpyxl import Workbook
@ -23,23 +23,35 @@ def cli():
@click.option("-j", "--jsonpath", type=str, required=True, help="The output path of jsonfile.") @click.option("-j", "--jsonpath", type=str, required=True, help="The output path of jsonfile.")
@click.option("-x", "--xlsxpath", type=str, required=False, help="The output path of xlsxfile.") @click.option("-x", "--xlsxpath", type=str, required=False, help="The output path of xlsxfile.")
def getmodels(workpath, jsonpath, xlsxpath): def getmodels(workpath, jsonpath, xlsxpath):
# Read the model-configs files
MS = glob.glob("{}/opt/rr/model-configs/*.yml".format(workpath))
MS.sort()
models = {} models = {}
for M in MS: with open("{}/opt/rr/platforms.yml".format(workpath), "r") as f:
with open(M, "r") as f: P_data = yaml.safe_load(f)
M_name = os.path.splitext(os.path.basename(M))[0] P_platforms = P_data.get("platforms", [])
M_data = yaml.safe_load(f) for P in P_platforms:
M_platform = M_data.get("platform", "")
M_productvers = M_data.get("productvers", [])
productvers = {} productvers = {}
for P in M_productvers: for V in P_platforms[P]["productvers"]:
if M_productvers[P].get("kpre", "") != "": if P_platforms[P]["productvers"][V].get("kpre", "") != "":
productvers[P] = M_productvers[P].get("kpre", "") + "-" + M_productvers[P].get("kver", "") productvers[V] = (P_platforms[P]["productvers"][V].get("kpre", "") + "-" + P_platforms[P]["productvers"][V].get("kver", ""))
else: else:
productvers[P] = M_productvers[P].get("kver", "") productvers[V] = P_platforms[P]["productvers"][V].get("kver", "")
models[M_name] = {"platform": M_platform, "productvers": productvers} models[P] = {"productvers": productvers, "models": []}
req = requests.get("https://autoupdate.synology.com/os/v2")
req.encoding = "utf-8"
data = json.loads(req.text)
for I in data["channel"]["item"]:
if not I["title"].startswith("DSM"):
continue
for J in I["model"]:
arch = J["mUnique"].split("_")[1].lower()
name = J["mLink"].split("/")[-1].split("_")[1].replace("%2B", "+")
if arch not in models.keys():
continue
if name in (A for B in models for A in models[B]["models"]):
continue
models[arch]["models"].append(name)
if jsonpath: if jsonpath:
with open(jsonpath, "w") as f: with open(jsonpath, "w") as f:
@ -47,10 +59,9 @@ def getmodels(workpath, jsonpath, xlsxpath):
if xlsxpath: if xlsxpath:
wb = Workbook() wb = Workbook()
ws = wb.active ws = wb.active
ws.append(["Model", "platform", "productvers", "kvernelvers"]) ws.append(["platform", "productvers", "Model"])
for k1, v1 in models.items(): for k, v in models.items():
for k2, v2 in v1["productvers"].items(): ws.append([k, v["productvers"], v["models"]])
ws.append([k1, v1["platform"], k2, v2])
wb.save(xlsxpath) wb.save(xlsxpath)
@ -76,9 +87,9 @@ def getaddons(workpath, jsonpath, xlsxpath):
if xlsxpath: if xlsxpath:
wb = Workbook() wb = Workbook()
ws = wb.active ws = wb.active
ws.append(['Name', 'system', 'en_US', 'zh_CN']) ws.append(["Name", "system", "en_US", "zh_CN"])
for k1, v1 in addons.items(): for k1, v1 in addons.items():
ws.append([k1, v1.get("system", False), v1.get("description").get("en_US", ""), v1.get("description").get("zh_CN", "")]) ws.append([k1, v1.get("system", False), v1.get("description").get("en_US", ""), v1.get("description").get("zh_CN", ""),])
wb.save(xlsxpath) wb.save(xlsxpath)

View File

@ -1,3 +1,4 @@
click click
kmodule kmodule
requests
openpyxl openpyxl