Merge pull request #17 from fbelavenuto/dev

Fixing synoinfo DS2422+
This commit is contained in:
Fabio Belavenuto 2022-07-08 09:06:46 -03:00 committed by GitHub
commit 2993a12a6e
15 changed files with 20 additions and 18 deletions

View File

@ -6,15 +6,15 @@ It is still in alpha stage, with little documentation, but it is functional. I'm
I tried to make the system as user-friendly as possible, to make life easier. The loader automatically detects which device is being used, SATADom or USB, detecting its VID and PID correctly. redpill-lkm has been edited to allow booting the kernel without setting the variables related to network interfaces so the loader (and user) doesn't have to worry about that. The Jun's code that makes the zImage and Ramdisk patch is embedded, if there is a change in "zImage" or "rd.gz" by some update, the loader re-applies the patches. Builds 42218 and 42661 up to update5 are working. Automatic updates should still be disabled as we are not sure if this technique will work forever. I tried to make the system as user-friendly as possible, to make life easier. The loader automatically detects which device is being used, SATADom or USB, detecting its VID and PID correctly. redpill-lkm has been edited to allow booting the kernel without setting the variables related to network interfaces so the loader (and user) doesn't have to worry about that. The Jun's code that makes the zImage and Ramdisk patch is embedded, if there is a change in "zImage" or "rd.gz" by some update, the loader re-applies the patches. Builds 42218 and 42661 up to update5 are working. Automatic updates should still be disabled as we are not sure if this technique will work forever.
To use this project, download the latest image available and burn it to a USB stick or SATA disk-on-module. Set the PC to boot from the burned media and follow the informations on the screen. When booting, the user can call the "menu.sh" command from the computer itself, access via SSH or use the virtual terminal (ttyd) by typing the address provided on the screen (http://<ip>:7681). The loader will automatically increase the size of the last partition and use this space as cache if it is larger than 2GiB. To use this project, download the latest image available and burn it to a USB stick or SATA disk-on-module. Set the PC to boot from the burned media and follow the informations on the screen. When booting, the user can call the "menu.sh" command from the computer itself, access via SSH or use the virtual terminal (ttyd) by typing the address provided on the screen (http://(ip):7681). The loader will automatically increase the size of the last partition and use this space as cache if it is larger than 2GiB.
The menu system is dynamic and I hope it is intuitive enough that the user can use it without any problems. Its allows you to choose a model, the existing buildnumber for the chosen model, randomly type or create a serial number, add/remove addons with a hardware detection option, add/remove/view "cmdline" and "synoinfo" entries, choose the LKM version, create the loader, boot, manually edit the configuration file, choose a keymap and exit. The menu system is dynamic and I hope it is intuitive enough that the user can use it without any problems. Its allows you to choose a model, the existing buildnumber for the chosen model, randomly type or create a serial number, add/remove addons with a hardware detection option, add/remove/view "cmdline" and "synoinfo" entries, choose the LKM version, create the loader, boot, manually edit the configuration file, choose a keymap, update and exit.
Addons and "synoinfo" entries require re-creating the loader, "cmdline" entries do not. You can view the "cmdline" and "synoinfo" entries defined for the chosen model, with user-defined entries having higher priority. Addons and "synoinfo" entries require re-creating the loader, "cmdline" entries do not. You can view the "cmdline" and "synoinfo" entries defined for the chosen model, with user-defined entries having higher priority.
There is no need to configure the VID/PID (if using a USB stick) or define the MAC Addresses of the network interfaces. If the user wants to modify the MAC Address of any interface, he must manually add "cmdline" entries in the corresponding menu (set "netif_num" according to "mac1..4" entries). There is no need to configure the VID/PID (if using a USB stick) or define the MAC Addresses of the network interfaces. If the user wants to modify the MAC Address of any interface, he must manually add "cmdline" entries in the corresponding menu (set "netif_num" according to "mac1..4" entries).
If a model is chosen that uses the Device-tree system to define the HDs, there is no need to configure anything. In the case of models that do not use device-tree, the configurations must be done manually and for this there is an option in the "Cmdline" menu to display the SATA controllers, DUMMY ports and ports in use, to assist in the creation of the "SataPortMap", "DiskIdxMap" and "sata_remap". There is also an option to change the maximum amount of HDs supported by the model, adjusting "maxdisks" and "internalportcfg" automatically. If a model is chosen that uses the Device-tree system to define the HDs, there is no need to configure anything. In the case of models that do not use device-tree, the configurations must be done manually and for this there is an option in the "Cmdline" menu to display the SATA controllers, DUMMY ports and ports in use, to assist in the creation of the "SataPortMap", "DiskIdxMap" and "sata_remap".
Another important point is that the loader detects whether or not the CPU has the FMA3 instruction and does not display the models that require it. So if the DS918+ and DVA3221 models are not displayed it is because of the CPU's lack of support for FMA instructions. Another important point is that the loader detects whether or not the CPU has the FMA3 instruction and does not display the models that require it. So if the DS918+ and DVA3221 models are not displayed it is because of the CPU's lack of support for FMA instructions.
@ -25,3 +25,4 @@ Addons can be downloaded and added to the loader.
All code was based on the work of TTG, pocopico, jumkey and others involved in continuing TTG's original redpill-load project. All code was based on the work of TTG, pocopico, jumkey and others involved in continuing TTG's original redpill-load project.
More information will be added in the future. More information will be added in the future.

View File

@ -1 +1 @@
0.1-alpha7 0.1-alpha8

View File

@ -1,5 +1,5 @@
ARPL_VERSION="0.1-alpha7" ARPL_VERSION="0.1-alpha8"
# Define paths # Define paths
TMP_PATH="/tmp" TMP_PATH="/tmp"

View File

@ -13,6 +13,8 @@ modules-notneeded: &modules-notneeded
- uhci_hcd - uhci_hcd
- mv14xx - mv14xx
synoinfo: &synoinfo synoinfo: &synoinfo
support_disk_compatibility: "no"
support_memory_compatibility: "no"
rss_server: "http://example.com/null.xml" rss_server: "http://example.com/null.xml"
rss_server_ssl: "https://example.com/null.xml" rss_server_ssl: "https://example.com/null.xml"
rss_server_v2: "https://example.com/autoupdate/v2/getList" rss_server_v2: "https://example.com/autoupdate/v2/getList"

View File

@ -62,18 +62,6 @@ while read f; do
(cd "${RAMDISK_PATH}" && patch -p1 < "${PATCH_PATH}/${f}") >>"${LOG_FILE}" 2>&1 || dieLog (cd "${RAMDISK_PATH}" && patch -p1 < "${PATCH_PATH}/${f}") >>"${LOG_FILE}" 2>&1 || dieLog
done < <(readModelArray "${MODEL}" "builds.${BUILD}.patch") done < <(readModelArray "${MODEL}" "builds.${BUILD}.patch")
# Temporary workaround
# LOADER_DISK="`blkid | grep 'LABEL="ARPL3"' | cut -d3 -f1`"
# BUS=`udevadm info --query property --name ${LOADER_DISK} | grep ID_BUS | cut -d= -f2`
# DT="`readModelKey "${MODEL}" "dt"`"
# if [ "${DT}" != "true" ]; then
# NUMPORTS=$((`ls /sys/class/scsi_host | wc -w`-1))
# [ "${BUS}" = "ata" ] && NUMPORTS=$((${NUMPORTS}-1))
# SYNOINFO["maxdisks"]=${NUMPORTS}
# INTPORTCFG="0x`printf "%x" "$((2**${NUMPORTS}-1))"`"
# SYNOINFO["internalportcfg"]="${INTPORTCFG}"
# fi
# Patch /etc/synoinfo.conf # Patch /etc/synoinfo.conf
echo -n "." echo -n "."
for KEY in ${!SYNOINFO[@]}; do for KEY in ${!SYNOINFO[@]}; do
@ -104,8 +92,11 @@ cp "${PATCH_PATH}/iosched-trampoline.sh" "${RAMDISK_PATH}/usr/sbin/modprobe"
# Addons # Addons
# Check if model needs Device-tree dynamic patch # Check if model needs Device-tree dynamic patch
DT="`readModelKey "${MODEL}" "dt"`" DT="`readModelKey "${MODEL}" "dt"`"
[ "${DT}" = "true" ] && ADDONS['qjs-dtb']="" # Add system addon "qjs-dtb" # Add system addon "qjs-dtb" or "maxdisks"
[ "${DT}" = "true" ] && ADDONS['qjs-dtb']="" || ADDONS['maxdisks']=""
ADDONS['misc']="" # Add system addon "misc" ADDONS['misc']="" # Add system addon "misc"
ADDONS['acpid']="" # Add system addon "acpid"
mkdir -p "${RAMDISK_PATH}/addons" mkdir -p "${RAMDISK_PATH}/addons"
echo -n "." echo -n "."
#/proc/sys/kernel/syno_install_flag #/proc/sys/kernel/syno_install_flag

View File

@ -1,5 +1,6 @@
version: 1 version: 1
name: acpid name: acpid
system: true
description: "Flexible and extensible daemon for delivering ACPI events" description: "Flexible and extensible daemon for delivering ACPI events"
available-for: available-for:
bromolow-3.10.108: bromolow-3.10.108:

Binary file not shown.

View File

@ -0,0 +1,7 @@
version: 1
name: maxdisks
system: true
description: "Adjust maxdisks and internalportcfg automatically"
all:
install-script: "install.sh"
copy: "all"