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
run: |
REPO="${{ github.server_url }}/${{ github.repository }}"
PRERELEASE="false"
PRERELEASE="true"
TAG=""
if [ "${PRERELEASE}" = "true" ]; then

View File

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

View File

@ -3,7 +3,6 @@
<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://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 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/)
@ -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)
## 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.
```shell

View File

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

View File

@ -17,7 +17,7 @@ BUS=$(getBus "${LOADER_DISK}")
# Print text centralized
clear
[ -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\033[A\n" ${COLUMNS} ""
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
# Load necessary variables
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
MODELID="$(readConfigKey "modelid" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${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 "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
HASATA=0
for D in $(lsblk -dpno NAME); do
@ -98,12 +95,9 @@ EMMCBOOT="$(readConfigKey "emmcboot" "${USER_CONFIG_FILE}")"
declare -A CMDLINE
# Automatic values
MODELID="$(readModelKey ${MODEL} "id")"
CMDLINE['syno_hw_version']="${MODELID:-${MODEL}}"
[ -z "${VID}" ] && VID="0x46f4" # Sanity check
[ -z "${PID}" ] && PID="0x0001" # Sanity check
CMDLINE['vid']="${VID}"
CMDLINE['pid']="${PID}"
CMDLINE['vid']="${VID:-"0x46f4"}" # Sanity check
CMDLINE['pid']="${PID:-"0x0001"}" # Sanity check
CMDLINE['sn']="${SN}"
CMDLINE['netif_num']="0"
@ -124,15 +118,29 @@ if [ ${EFI} -eq 1 ]; then
else
CMDLINE['noefi']=""
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
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)
SIZE=$((${SZ:-0} * ${SS:-0} / 1024 / 1024 + 10))
# Read SATADoM type
DOM="$(readModelKey "${MODEL}" "dom")"
CMDLINE['synoboot_satadom']="${DOM}"
SATADOM="$(readConfigKey "satadom" "${USER_CONFIG_FILE}")"
CMDLINE['synoboot_satadom']="${SATADOM:-2}"
CMDLINE['dom_szmax']="${SIZE}"
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['console']="ttyS0,115200n8"
# 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['loglevel']="15"
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
[ ! "${CMDLINE['modprobe.blacklist']}" = "" ] && CMDLINE['modprobe.blacklist']+=","
CMDLINE['modprobe.blacklist']+="sdhci,sdhci_pci,sdhci_acpi"
fi
if [ "$(readModelKey "${MODEL}" "dt")" = "true" ] && ! echo "epyc7002 purley broadwellnkv2" | grep -wq "$(readModelKey "${MODEL}" "platform")"; then
if [ "${DT}" = "true" ] && ! echo "epyc7002 purley broadwellnkv2" | grep -wq "${PLATFORM}"; then
[ ! "${CMDLINE['modprobe.blacklist']}" = "" ] && CMDLINE['modprobe.blacklist']+=","
CMDLINE['modprobe.blacklist']+="mpt3sas"
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
[ -n "${KEY}" ] && CMDLINE["${KEY}"]="${VALUE}"
done <<<$(readConfigMap "cmdline" "${USER_CONFIG_FILE}")
@ -270,7 +281,6 @@ else
# Executes DSM kernel via KEXEC
KEXECARGS=""
KVER=$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")
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"
KEXECARGS="--noefi"

View File

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

View File

@ -10,6 +10,7 @@ import os, click
WORK_PATH = os.path.abspath(os.path.dirname(__file__))
@click.group()
def cli():
"""
@ -17,23 +18,26 @@ def cli():
"""
pass
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:
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
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])
return value
@cli.command()
@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('--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('-o', "--output", type=str, required=True, help="The output file 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("--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("-o", "--output", type=str, required=True, help="The output file of QRCode.")
def makeqr(data, file, location, output):
"""
Generate a QRCode.
@ -47,7 +51,7 @@ def makeqr(data, file, location, output):
FBIOGET_FSCREENINFO = 0x4602
FBDEV = "/dev/fb0"
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.make(fit=True)
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")):
icon = Image.open(os.path.join(WORK_PATH, "logo.png"))
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:
img = Image.open(file)
@ -73,9 +77,9 @@ def makeqr(data, file, location, output):
# pixels[i, j] = (255, 255, 255, 0)
(xres, yres) = (1920, 1080)
with open(FBDEV, 'rb')as fb:
with open(FBDEV, "rb") as fb:
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:
(xres, yres) = (res[0], res[1])
xqr, yqr = (int(xres / 8), int(xres / 8))
@ -89,5 +93,40 @@ def makeqr(data, file, location, 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__":
cli()

View File

@ -4,33 +4,6 @@
. ${WORK_PATH}/include/configFile.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
# Returns 1 if not
@ -59,94 +32,6 @@ function dieLog() {
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
# 1 - Item
@ -164,6 +49,110 @@ function arrayExistItem() {
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
# 1 - key
@ -382,3 +371,26 @@ function findDSMRoot() {
echo "${DSMROOTS}"
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
clear
[ -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\033[A\n" ${COLUMNS} ""
printf "\033[1;32m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}"
@ -28,6 +28,8 @@ if [ ! -f "${USER_CONFIG_FILE}" ]; then
fi
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 "dsmlogo" "true" "${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 "hddsort" "false" "${USER_CONFIG_FILE}"
initConfigKey "emmcboot" "false" "${USER_CONFIG_FILE}"
initConfigKey "platform" "" "${USER_CONFIG_FILE}"
initConfigKey "model" "" "${USER_CONFIG_FILE}"
initConfigKey "modelid" "" "${USER_CONFIG_FILE}"
initConfigKey "productver" "" "${USER_CONFIG_FILE}"
initConfigKey "buildnum" "" "${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=""
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
MODELID="$(readConfigKey "modelid" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
KEYMAP="$(readConfigKey "keymap" "${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}")"
DSMLOGO="$(readConfigKey "dsmlogo" "${USER_CONFIG_FILE}")"
DIRECTBOOT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")"
@ -59,9 +63,9 @@ function backtitle() {
if [ "LOCALBUILD" = "${LOADER_DISK}" ]; then
BACKTITLE="LOCAL "
fi
BACKTITLE+="${RR_TITLE}"
BACKTITLE+="$([ -z "${RR_RELEASE}" ] && echo "${RR_TITLE}" || echo "${RR_TITLE}(${RR_RELEASE})")"
if [ -n "${MODEL}" ]; then
BACKTITLE+=" ${MODEL}"
BACKTITLE+=" ${MODEL}(${PLATFORM})"
else
BACKTITLE+=" (no model)"
fi
@ -102,113 +106,71 @@ function backtitle() {
# Shows available models to user choose one
function modelMenu() {
if [ -z "${1}" ]; then
RESTRICT=1
FLGBETA=0
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"
while read M; do
Y=$(echo ${M} | tr -cd "[0-9]")
Y=${Y:0-2}
echo "${M} ${Y}" >>"${TMP_PATH}/modellist"
done <<<$(find "${WORK_PATH}/model-configs" -maxdepth 1 -name \*.yml 2>/dev/null | sed 's/.*\///; s/\.yml//')
echo "${MJ}" | jq -c '.[]' | while read -r item; do
name=$(echo "$item" | jq -r '.name')
arch=$(echo "$item" | jq -r '.arch')
echo "${name} ${arch}" >>"${TMP_PATH}/modellist"
done
if [ -z "${1}" ]; then
RESTRICT=1
while true; do
echo -n "" >"${TMP_PATH}/menu"
echo "c \"\Z1$(TEXT "Compatibility judgment")\Zn\"" >>"${TMP_PATH}/menu"
FLGNEX=0
while read M; 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
while read M A; do
COMPATIBLE=1
if [ ${RESTRICT} -eq 1 ]; then
for F in $(readModelArray "${M}" "flags"); do
if ! grep -q "^flags.*${F}.*" /proc/cpuinfo; then
DT="$(readConfigKey "platforms.${A}.dt" "${WORK_PATH}/platforms.yml")"
FLAGS="$(readConfigArray "platforms.${A}.flags" "${WORK_PATH}/platforms.yml")"
for F in "${FLAGS}"; do if ! grep -q "^flags.*${F}.*" /proc/cpuinfo; then
COMPATIBLE=0
FLGNEX=1
break
fi
done
fi
fi; done
[ "${DT}" = "true" ] && DT="DT" || DT=""
[ ${COMPATIBLE} -eq 1 ] && echo "${M} \"$(printf "\Zb%-15s %-2s\Zn" "${PLATFORM}" "${DT}")\" " >>"${TMP_PATH}/menu"
done <<<$(cat "${TMP_PATH}/modellist" | sort -r -n -k 2 | awk '{print $1}')
[ ${COMPATIBLE} -eq 1 ] && echo "${M} \"$(printf "\Zb%-15s %-2s\Zn" "${A}" "${DT}")\" " >>"${TMP_PATH}/menu"
done <<<$(cat "${TMP_PATH}/modellist")
[ ${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")" \
--menu "$(TEXT "Choose the model")" 0 0 0 --file "${TMP_PATH}/menu" \
2>${TMP_PATH}/resp
[ $? -ne 0 ] && return 0
resp=$(cat ${TMP_PATH}/resp)
[ -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
RESTRICT=0
continue
fi
if [ "${resp}" = "b" ]; then
FLGBETA=1
continue
fi
break
done
else
[ ! -f "${WORK_PATH}/model-configs/${1}.yml" ] && return 1
cat "${TMP_PATH}/modellist" | awk '{print $1}' | grep -qw "${1}" || return 1
resp="${1}"
fi
# If user change model, clean build* and pat* and SN
if [ "${MODEL}" != "${resp}" ]; then
PLATFORM="$(grep -w "${resp}" "${TMP_PATH}/modellist" | awk '{print $2}' | head -n 1)"
MODEL=${resp}
writeConfigKey "platform" "${PLATFORM}" "${USER_CONFIG_FILE}"
writeConfigKey "model" "${MODEL}" "${USER_CONFIG_FILE}"
MODELID=""
PRODUCTVER=""
BUILDNUM=""
SMALLNUM=""
writeConfigKey "productver" "" "${USER_CONFIG_FILE}"
writeConfigKey "buildnum" "" "${USER_CONFIG_FILE}"
writeConfigKey "smallnum" "" "${USER_CONFIG_FILE}"
writeConfigKey "modelid" "${MODELID}" "${USER_CONFIG_FILE}"
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}"
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
touch ${PART1_PATH}/.build
fi
rm -f "${TMP_PATH}/modellist"
return 0
}
###############################################################################
# Shows available buildnumbers from a model to user choose one
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
DIALOG --title "$(TEXT "Product Version")" \
--no-items --menu "$(TEXT "Choose a product version")" 0 0 0 ${ITEMS} \
@ -247,18 +210,19 @@ function productversMenu() {
[ $? -ne 0 ] && return 0
fi
else
if ! arrayExistItem "${1}" ${ITEMS}; then return 1; fi
arrayExistItem "${1}" ${ITEMS} || return 1
resp="${1}"
fi
local KVER=$(readModelKey "${MODEL}" "productvers.[${resp}].kver")
if [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 4 ] && [ -d "/sys/firmware/efi" ]; then
if [ -z "${1}" ]; then
DIALOG --title "$(TEXT "Product Version")" \
--msgbox "$(TEXT "This version does not support UEFI startup, Please select another version or switch the startup mode.")" 0 0
fi
return 1
fi
selver="${resp}"
urlver=""
# KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${resp}].kver" "${WORK_PATH}/platforms.yml")
# if [ $(echo "${KVER:-4}" | cut -d'.' -f1) -lt 4 ] && [ -d "/sys/firmware/efi" ]; then
# if [ -z "${1}" ]; then
# DIALOG --title "$(TEXT "Product Version")" \
# --msgbox "$(TEXT "This version does not support UEFI startup, Please select another version or switch the startup mode.")" 0 0
# fi
# return 1
# fi
# if [ ! "usb" = "$(getBus "${LOADER_DISK}")" ] && [ $(echo "${KVER:-4}" | cut -d'.' -f1) -gt 4 ]; then
# if [ -z "${1}" ]; then
# DIALOG --title "$(TEXT "Product Version")" \
@ -286,9 +250,12 @@ function productversMenu() {
[ "${fastest}" = "www.synology.cn" ] &&
fastest="https://www.synology.cn/api/support/findDownloadInfo?lang=zh-cn" ||
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 '.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')
patsum=$(echo ${patdata} | jq -r '.info.system.detail[0].items[0].files[0].checksum')
paturl=${paturl%%\?*}
@ -307,7 +274,13 @@ function productversMenu() {
paturl=""
patsum=""
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
if [ -z "${1}" ]; then
DIALOG --title "$(TEXT "Product Version")" \
@ -332,7 +305,7 @@ function productversMenu() {
[ -z "${paturl}" -o -z "${patsum}" ] && return 1
writeConfigKey "paturl" "${paturl}" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "${patsum}" "${USER_CONFIG_FILE}"
PRODUCTVER=${resp}
PRODUCTVER=${selver}
writeConfigKey "productver" "${PRODUCTVER}" "${USER_CONFIG_FILE}"
BUILDNUM=""
SMALLNUM=""
@ -340,17 +313,16 @@ function productversMenu() {
writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
if [ -z "${1}" ]; then
DIALOG --title "$(TEXT "Product Version")" \
--infobox "$(TEXT "Reconfiguring Synoinfo, Addons and Modules")" 0 0
--infobox "$(TEXT "Reconfiguring Synoinfo, Addons and Modules ...")" 0 0
fi
# 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")
done <<<$(readConfigMap "platforms.${PLATFORM}.synoinfo" "${WORK_PATH}/platforms.yml")
# Check addons
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
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
@ -369,6 +341,81 @@ function productversMenu() {
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
function ParsePat() {
@ -408,55 +455,6 @@ function ParsePat() {
rm -rf "${UNTAR_PAT_PATH}"
break
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"
# Check disk space left
@ -469,36 +467,18 @@ function ParsePat() {
else
cp -f "${PAT_PATH}" "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat"
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
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}"
setConfigFromDSM "${UNTAR_PAT_PATH}"
if [ $? -ne 0 ]; then
rm -rf "${UNTAR_PAT_PATH}"
break
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}")
writeConfigKey "paturl" "#PARSEPAT" "${USER_CONFIG_FILE}"
writeConfigKey "patsum" "" "${USER_CONFIG_FILE}"
copyDSMFiles "${UNTAR_PAT_PATH}"
# 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
rm -rf "${UNTAR_PAT_PATH}"
rm -f "${LOG_FILE}"
echo "$(TEXT "Ready!")"
sleep 3
@ -511,14 +491,15 @@ function ParsePat() {
rm -f "${LOG_FILE}"
return 1
else
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
MODELID="$(readConfigKey "modelid" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")"
MAC1="$(readConfigKey "mac1" "${USER_CONFIG_FILE}")"
MAC2="$(readConfigKey "mac2" "${USER_CONFIG_FILE}")"
rm -f "${LOG_FILE}"
return 0
fi
}
@ -527,9 +508,8 @@ function ParsePat() {
# Manage addons
function addonMenu() {
# Read 'platform' and kernel version to check if addon exists
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
NEXT="a"
# Loop menu
@ -666,9 +646,8 @@ function addonMenu() {
###############################################################################
function moduleMenu() {
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
NEXT="c"
# loop menu
while true; do
@ -850,7 +829,7 @@ function cmdlineMenu() {
if [ -n "${MODEL}" ]; then
echo "s \"$(TEXT "Define SN/MAC")\"" >>"${TMP_PATH}/menu"
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"
DIALOG --title "$(TEXT "Cmdline")" \
--menu "$(TEXT "Choose a option")" 0 0 0 --file "${TMP_PATH}/menu" \
@ -973,14 +952,14 @@ function cmdlineMenu() {
esac
done
;;
m)
ITEMS=""
while IFS=': ' read KEY VALUE; do
ITEMS+="${KEY}: ${VALUE}\n"
done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].cmdline")
DIALOG --title "$(TEXT "Cmdline")" \
--msgbox "${ITEMS}" 0 0
;;
# m)
# ITEMS=""
# while IFS=': ' read KEY VALUE; do
# ITEMS+="${KEY}: ${VALUE}\n"
# done <<<$(readConfigMap "platforms.${PLATFORM}.cmdline" "${WORK_PATH}/platforms.yml")
# DIALOG --title "$(TEXT "Cmdline")" \
# --msgbox "${ITEMS}" 0 0
# ;;
e) return ;;
esac
done
@ -1283,12 +1262,7 @@ function extractDsmFiles() {
echo "$(TEXT "OK")"
echo -n "$(TEXT "Copying files: ")"
cp -f "${UNTAR_PAT_PATH}/grub_cksum.syno" "${PART1_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}"
copyDSMFiles "${UNTAR_PAT_PATH}"
rm -rf "${UNTAR_PAT_PATH}"
echo "$(TEXT "OK")"
}
@ -1696,7 +1670,7 @@ function formatDisks() {
[ "${KNAME}" = "${LOADER_DISK}" -o "${PKNAME}" = "${LOADER_DISK}" ] && continue
[ -z "${ID}" ] && ID="Unknown"
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
DIALOG --title "$(TEXT "Advanced")" \
--msgbox "$(TEXT "No disk found!")" 0 0
@ -1719,15 +1693,13 @@ function formatDisks() {
mdadm -S "${I}"
done
fi
(
for I in ${RESP}; do
if [[ "${I}" = /dev/mmc* ]]; then
echo y | mkfs.ext4 -T largefile4 -E nodiscard "${I}"
else
echo y | mkfs.ext4 -T largefile4 "${I}"
fi
done
) 2>&1 | DIALOG --title "$(TEXT "Advanced")" \
done 2>&1 | DIALOG --title "$(TEXT "Advanced")" \
--progressbox "$(TEXT "Formatting ...")" 20 100
DIALOG --title "$(TEXT "Advanced")" \
--msgbox "$(TEXT "Formatting is complete.")" 0 0
@ -1763,38 +1735,25 @@ function tryRecoveryDSM() {
DIALOG --title "$(TEXT "Try recovery DSM")" \
--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
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_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_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_PATURL="$(readConfigKey "paturl" "${USER_CONFIG_FILE}")"
R_PATSUM="$(readConfigKey "patsum" "${USER_CONFIG_FILE}")"
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)" &&
R_PATURL="$(readConfigKey "paturl" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
R_PATSUM="$(readConfigKey "patsum" "${TMP_PATH}/mdX/usr/rr/backup/p1/user-config.yml")"
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
if [ "${R_PATURL:0:1}" = "#" ] || [ -z "${R_PATSUM}" ]; then
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}"
cp -Rf "${TMP_PATH}/mdX/usr/rr/backup/p1/"* "${PART1_PATH}"
if [ -d "${TMP_PATH}/mdX/usr/rr/backup/p3" ]; then
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}"
cp -Rf "${TMP_PATH}/mdX/usr/rr/backup/p3/"* "${PART3_PATH}"
fi
copyDSMFiles "${TMP_PATH}/mdX/.syno/patch"
__umountDSMRootDisk
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
@ -1803,108 +1762,32 @@ function tryRecoveryDSM() {
return
fi
fi
fi
DIALOG --title "$(TEXT "Try recovery DSM")" \
--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
cp -f "${TMP_PATH}/mdX/.syno/patch/zImage" "${ORI_ZIMAGE_FILE}"
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
setConfigFromDSM "${TMP_PATH}/mdX/.syno/patch"
if [ $? -ne 0 ]; then
__umountDSMRootDisk
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
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
[ "${KNAME}" = "${LOADER_DISK}" -o "${PKNAME}" = "${LOADER_DISK}" ] && continue
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
DIALOG --title "$(TEXT "Advanced")" \
--msgbox "$(TEXT "No disk found!")" 0 0
@ -2304,12 +2187,14 @@ function advancedMenu() {
NEXT="l"
while true; do
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 "j \"$(TEXT "HDD sort(hotplug):") \Z4${HDDSORT}\Zn\"" >>"${TMP_PATH}/menu"
if [ -n "${PRODUCTVER}" ]; then
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
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"
fi
echo "q \"$(TEXT "Switch direct boot:") \Z4${DIRECTBOOT}\Zn\"" >>"${TMP_PATH}/menu"
@ -2353,6 +2238,12 @@ function advancedMenu() {
2>${TMP_PATH}/resp
[ $? -ne 0 ] && break
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)
LKM=$([ "${LKM}" = "dev" ] && echo 'prod' || ([ "${LKM}" = "test" ] && echo 'dev' || echo 'test'))
writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}"
@ -2383,6 +2274,20 @@ function advancedMenu() {
fi
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)
customDTS
NEXT="e"
@ -2927,9 +2832,8 @@ function updateRR() {
cp -Rf "${TMP_PATH}/update/${VALUE}"/* "${VALUE}"
if [ "$(realpath "${VALUE}")" = "$(realpath "${MODULES_PATH}")" ]; then
if [ -n "${MODEL}" -a -n "${PRODUCTVER}" ]; then
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
if [ -n "${PLATFORM}" -a -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do
@ -3062,9 +2966,8 @@ function updateModules() {
rm -rf "${MODULES_PATH}/"*
cp -rf "${TMP_PATH}/update/"* "${MODULES_PATH}/"
if [ -n "${MODEL}" -a -n "${PRODUCTVER}" ]; then
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
if [ -n "${PLATFORM}" -a -n "${KVER}" ]; then
writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}"
while read ID DESC; do
@ -3403,9 +3306,8 @@ else
fi
echo "u \"$(TEXT "Parse pat")\"" >>"${TMP_PATH}/menu"
if [ -n "${PRODUCTVER}" ]; then
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
if [ -f "${CKS_PATH}/bzImage-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.gz" ] &&
[ -f "${CKS_PATH}/modules-${PLATFORM}-$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}.tgz" ]; then
echo "s \"$(TEXT "Kernel:") \Z4${KERNEL}\Zn\"" >>"${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
# get user data
PLATFORM="$(readConfigKey "platform" "${USER_CONFIG_FILE}")"
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")"
BUILDNUM="$(readConfigKey "buildnum" "${USER_CONFIG_FILE}")"
SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")"
KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")"
RD_COMPRESSED="$(readConfigKey "rd-compressed" "${USER_CONFIG_FILE}")"
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
SN="$(readConfigKey "sn" "${USER_CONFIG_FILE}")"
LAYOUT="$(readConfigKey "layout" "${USER_CONFIG_FILE}")"
@ -70,10 +72,8 @@ writeConfigKey "smallnum" "${SMALLNUM}" "${USER_CONFIG_FILE}"
echo -n "."
# Read model data
PLATFORM="$(readModelKey "${MODEL}" "platform")"
KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")"
KPRE="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kpre")"
RD_COMPRESSED="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].rd-compressed")"
KVER=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kver" "${WORK_PATH}/platforms.yml")
KPRE=$(readConfigKey "platforms.${PLATFORM}.productvers.[${PRODUCTVER}].kpre" "${WORK_PATH}/platforms.yml")
# Sanity check
if [ -z "${PLATFORM}" -o -z "${KVER}" ]; then
@ -99,7 +99,13 @@ while IFS=': ' read KEY VALUE; do
done <<<$(readConfigMap "modules" "${USER_CONFIG_FILE}")
# 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
echo "Patching with ${PE}" >"${LOG_FILE}"
for PF in $(ls ${WORK_PATH}/patch/${PE} 2>/dev/null); do
@ -113,7 +119,7 @@ while read PE; do
[ ${RET} -eq 0 ] && break
done
[ ${RET} -ne 0 ] && exit 1
done <<<$(readModelArray "${MODEL}" "productvers.[${PRODUCTVER}].patch")
done
# Patch /etc/synoinfo.conf
echo -n "."
@ -156,19 +162,19 @@ echo "Create addons.sh" >"${LOG_FILE}"
mkdir -p "${RAMDISK_PATH}/addons"
echo "#!/bin/sh" >"${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 LOADERVERSION=${RR_VERSION}" >>"${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 PRODUCTVERL=${PRODUCTVERL}" >>"${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 LAYOUT=${LAYOUT}" >>"${RAMDISK_PATH}/addons/addons.sh"
echo "export KEYMAP=${KEYMAP}" >>"${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 PLATFORM=\"${PLATFORM}\"" >>"${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 MLINK=\"${PATURL}\"" >>"${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 KEYMAP=\"${KEYMAP}\"" >>"${RAMDISK_PATH}/addons/addons.sh"
chmod +x "${RAMDISK_PATH}/addons/addons.sh"
# 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=""
if [ "${ADDON}" = "disks" ]; then
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
MODEL="$(readConfigKey "model" "${USER_CONFIG_FILE}")"
PLATFORM="$(readConfigKey "platform" "${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
# Usage: size_append FILE [FILE2] [FILEn]...

View File

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

View File

@ -6,7 +6,7 @@
# 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
@ -23,23 +23,35 @@ def cli():
@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.")
def getmodels(workpath, jsonpath, xlsxpath):
# Read the model-configs files
MS = glob.glob("{}/opt/rr/model-configs/*.yml".format(workpath))
MS.sort()
models = {}
for M in MS:
with open(M, "r") as f:
M_name = os.path.splitext(os.path.basename(M))[0]
M_data = yaml.safe_load(f)
M_platform = M_data.get("platform", "")
M_productvers = M_data.get("productvers", [])
with open("{}/opt/rr/platforms.yml".format(workpath), "r") as f:
P_data = yaml.safe_load(f)
P_platforms = P_data.get("platforms", [])
for P in P_platforms:
productvers = {}
for P in M_productvers:
if M_productvers[P].get("kpre", "") != "":
productvers[P] = M_productvers[P].get("kpre", "") + "-" + M_productvers[P].get("kver", "")
for V in P_platforms[P]["productvers"]:
if P_platforms[P]["productvers"][V].get("kpre", "") != "":
productvers[V] = (P_platforms[P]["productvers"][V].get("kpre", "") + "-" + P_platforms[P]["productvers"][V].get("kver", ""))
else:
productvers[P] = M_productvers[P].get("kver", "")
models[M_name] = {"platform": M_platform, "productvers": productvers}
productvers[V] = P_platforms[P]["productvers"][V].get("kver", "")
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:
with open(jsonpath, "w") as f:
@ -47,10 +59,9 @@ def getmodels(workpath, jsonpath, xlsxpath):
if xlsxpath:
wb = Workbook()
ws = wb.active
ws.append(["Model", "platform", "productvers", "kvernelvers"])
for k1, v1 in models.items():
for k2, v2 in v1["productvers"].items():
ws.append([k1, v1["platform"], k2, v2])
ws.append(["platform", "productvers", "Model"])
for k, v in models.items():
ws.append([k, v["productvers"], v["models"]])
wb.save(xlsxpath)
@ -76,9 +87,9 @@ def getaddons(workpath, jsonpath, xlsxpath):
if xlsxpath:
wb = Workbook()
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():
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)

View File

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