diff --git a/files/initrd/opt/arc/arc-functions.sh b/files/initrd/opt/arc/arc-functions.sh index 5c72981d..c1590477 100755 --- a/files/initrd/opt/arc/arc-functions.sh +++ b/files/initrd/opt/arc/arc-functions.sh @@ -242,7 +242,6 @@ function cmdlineMenu() { echo "5 \"PCI/IRQ Fix\"" >>"${TMP_PATH}/menu" echo "6 \"C-State Fix\"" >>"${TMP_PATH}/menu" echo "7 \"Show user Cmdline\"" >>"${TMP_PATH}/menu" - echo "8 \"Show Model/Build Cmdline\"" >>"${TMP_PATH}/menu" echo "9 \"Kernelpanic Behavior\"" >>"${TMP_PATH}/menu" # Loop menu while true; do @@ -406,14 +405,6 @@ function cmdlineMenu() { --aspect 18 --msgbox "${ITEMS}" 0 0 ;; 8) - ITEMS="" - while IFS=': ' read -r KEY VALUE; do - ITEMS+="${KEY}: ${VALUE}\n" - done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].cmdline") - dialog --backtitle "$(backtitle)" --title "Model/Version cmdline" \ - --aspect 18 --msgbox "${ITEMS}" 0 0 - ;; - 9) rm -f "${TMP_PATH}/opts" echo "5 \"Reboot after 5 seconds\"" >>"${TMP_PATH}/opts" echo "0 \"No reboot\"" >>"${TMP_PATH}/opts" diff --git a/files/initrd/opt/arc/arc.sh b/files/initrd/opt/arc/arc.sh index 5a6baa2f..95f11d93 100755 --- a/files/initrd/opt/arc/arc.sh +++ b/files/initrd/opt/arc/arc.sh @@ -66,6 +66,7 @@ MACSYS="$(readConfigKey "arc.macsys" "${USER_CONFIG_FILE}")" ODP="$(readConfigKey "arc.odp" "${USER_CONFIG_FILE}")" HDDSORT="$(readConfigKey "arc.hddsort" "${USER_CONFIG_FILE}")" KERNEL="$(readConfigKey "arc.kernel" "${USER_CONFIG_FILE}")" +RD_COMPRESSED="$(readConfigKey "rd-compressed" "${USER_CONFIG_FILE}")" USBMOUNT="$(readConfigKey "arc.usbmount" "${USER_CONFIG_FILE}")" ARCIPV6="$(readConfigKey "arc.ipv6" "${USER_CONFIG_FILE}")" EMMCBOOT="$(readConfigKey "arc.emmcboot" "${USER_CONFIG_FILE}")" @@ -266,7 +267,7 @@ function arcVersion() { writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}" while IFS=': ' read -r KEY VALUE; do writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}" - done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].synoinfo") + done <<<$(readModelMap "${MODEL}" "synoinfo") # Reset modules writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" while read -r ID DESC; do @@ -390,9 +391,11 @@ function arcSettings() { # Select Addons addonSelection # Check for DT and HBA/Raid Controller - if [[ "${DT}" = "true" && "${EXTERNALCONTROLLER}" = "true" ]]; then - dialog --backtitle "$(backtitle)" --title "Arc Warning" \ - --msgbox "WARN: You use a HBA/Raid Controller and selected a DT Model.\nThis is still an experimental Feature." 0 0 + if [ ! "${MODEL}" = "SA6400" ]; then + if [[ "${DT}" = "true" && "${EXTERNALCONTROLLER}" = "true" ]]; then + dialog --backtitle "$(backtitle)" --title "Arc Warning" \ + --msgbox "WARN: You use a HBA/Raid Controller and selected a DT Model.\nThis is still an experimental Feature." 0 0 + fi fi # Check for more then 8 Ethernet Ports DEVICENIC="$(readConfigKey "device.nic" "${USER_CONFIG_FILE}")" @@ -881,7 +884,7 @@ function arcAutomated() { writeConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}" while IFS=': ' read -r KEY VALUE; do writeConfigKey "synoinfo.\"${KEY}\"" "${VALUE}" "${USER_CONFIG_FILE}" - done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].synoinfo") + done <<<$(readModelMap "${MODEL}" "synoinfo") # Reset modules writeConfigKey "modules" "{}" "${USER_CONFIG_FILE}" while read -r ID DESC; do @@ -1184,6 +1187,7 @@ else echo "O \"Official Driver Priority: \Z4${ODP}\Zn \" " >>"${TMP_PATH}/menu" echo "E \"eMMC Boot Support: \Z4${EMMCBOOT}\Zn \" " >>"${TMP_PATH}/menu" echo "o \"Switch MacSys: \Z4${MACSYS}\Zn \" " >>"${TMP_PATH}/menu" + echo "W \"DSM RD Compression: \Z4${RD_COMPRESSED}\Zn \" " >>"${TMP_PATH}/menu" echo "u \"Switch LKM version: \Z4${LKM}\Zn \" " >>"${TMP_PATH}/menu" fi fi @@ -1357,6 +1361,12 @@ else BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")" NEXT="o" ;; + W) [ "${RD_COMPRESSED}" = "true" ] && RD_COMPRESSED='false' || RD_COMPRESSED='true' + writeConfigKey "rd-compressed" "${RD_COMPRESSED}" "${USER_CONFIG_FILE}" + writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}" + BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")" + NEXT="W" + ;; u) [ "${LKM}" = "prod" ] && LKM='dev' || LKM='prod' writeConfigKey "lkm" "${LKM}" "${USER_CONFIG_FILE}" writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}" diff --git a/files/initrd/opt/arc/boot.sh b/files/initrd/opt/arc/boot.sh index ff8b886c..e88a509e 100755 --- a/files/initrd/opt/arc/boot.sh +++ b/files/initrd/opt/arc/boot.sh @@ -97,19 +97,6 @@ CMDLINE['vid']="${VID}" CMDLINE['pid']="${PID}" CMDLINE['sn']="${SN}" -NIC=0 -for ETH in ${ETHX}; do - MAC="$(readConfigKey "mac.${ETH}" "${USER_CONFIG_FILE}")" - [ -n "${MAC}" ] && NIC=$((${NIC} + 1)) && CMDLINE["mac${NIC}"]="${MAC}" -done -CMDLINE['netif_num']="${NIC}" - -if [ "${MACSYS}" = "hardware" ]; then - CMDLINE['skip_vender_mac_interfaces']="0,1,2,3,4,5,6,7" -elif [ "${MACSYS}" = "custom" ]; then - CMDLINE['skip_vender_mac_interfaces']="$(seq -s, $((${NIC} + 1)) 7)" -fi - # set fixed cmdline if grep -q "force_junior" /proc/cmdline; then CMDLINE['force_junior']="" @@ -126,40 +113,73 @@ fi 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} * ${SS} / 1024 / 1024 + 10)) + SIZE=$((${SZ:-0} * ${SS:-0} / 1024 / 1024 + 10)) # Read SATADoM type DOM="$(readModelKey "${MODEL}" "dom")" CMDLINE['synoboot_satadom']="${DOM}" CMDLINE['dom_szmax']="${SIZE}" fi + CMDLINE['panic']="${KERNELPANIC:-0}" CMDLINE['console']="ttyS0,115200n8" #CMDLINE['no_console_suspend']="1" CMDLINE['consoleblank']="600" CMDLINE['earlyprintk']="" CMDLINE['earlycon']="uart8250,io,0x3f8,115200n8" -CMDLINE['root']="/dev/md0" - -if [ ! "${MODEL}" = "SA6400" ]; then - CMDLINE['elevator']="elevator" +if [ "${EMMCBOOT}" = "true" ]; then + CMDLINE['root']="/dev/mmcblk0p1" +else + CMDLINE['root']="/dev/md0" fi + +NIC=0 +for ETH in ${ETHX}; do + MAC="$(readConfigKey "mac.${ETH}" "${USER_CONFIG_FILE}")" + [ -n "${MAC}" ] && NIC=$((${NIC} + 1)) && CMDLINE["mac${NIC}"]="${MAC}" +done +CMDLINE['netif_num']="${NIC}" + +if [ "${MACSYS}" = "hardware" ]; then + CMDLINE['skip_vender_mac_interfaces']="0,1,2,3,4,5,6,7" +elif [ "${MACSYS}" = "custom" ]; then + CMDLINE['skip_vender_mac_interfaces']="$(seq -s, $((${NIC} + 1)) 7)" +fi + CMDLINE['loglevel']="15" CMDLINE['log_buf_len']="32M" +CMDLINE["HddHotplug"]="1" +CMDLINE["elevator"]="elevator" 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 - [ ! "${CMDLINE['modprobe.blacklist']}" = "" ] && CMDLINE['modprobe.blacklist']+="," - CMDLINE['modprobe.blacklist']+="mpt3sas" +DT="$(readModelKey "${MODEL}" "dt")" +PLATFORM="$(readModelKey "${MODEL}" "platform")" +PLATFORM=${PLATFORM:-"unknown"} +if [ "${DT}" = "true" ]; then + CMDLINE["vender_format_version"]="2" + CMDLINE["syno_ttyS0"]="serial,0x3f8" + CMDLINE["syno_ttyS1"]="serial,0x2f8" + if ! echo "epyc7002 purley broadwellnkv2" | grep -wq "${PLATFORM}"; then + [ ! "${CMDLINE['modprobe.blacklist']}" = "" ] && CMDLINE['modprobe.blacklist']+="," + CMDLINE['modprobe.blacklist']+="mpt3sas" + fi +else + CMDLINE["SMBusHddDynamicPower"]="1" + CMDLINE["syno_hdd_detect"]="0" + CMDLINE["syno_hdd_powerup_seq"]="0" + CMDLINE["vender_format_version"]="2" +fi +if echo "epyc7002 apollolake geminilake kvmx64" | 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 -r KEY VALUE; do - [ -n "${KEY}" ] && CMDLINE["${KEY}"]="${VALUE}" -done <<<$(readModelMap "${MODEL}" "productvers.[${PRODUCTVER}].cmdline") while IFS=': ' read -r KEY VALUE; do [ -n "${KEY}" ] && CMDLINE["${KEY}"]="${VALUE}" done <<<$(readConfigMap "cmdline" "${USER_CONFIG_FILE}") diff --git a/files/initrd/opt/arc/include/modulelist b/files/initrd/opt/arc/include/modulelist index 78496a83..6f81ff38 100644 --- a/files/initrd/opt/arc/include/modulelist +++ b/files/initrd/opt/arc/include/modulelist @@ -12,6 +12,15 @@ N kvm-intel.ko N kvm-amd.ko N kvm.ko +# sensors +N coretemp.ko +N k10temp.ko +N it87.ko +N adt7470.ko +N adt7475.ko +N nct6683.ko +N nct6775.ko + # rndis F mii.ko F cdc_ether.ko diff --git a/files/initrd/opt/arc/init.sh b/files/initrd/opt/arc/init.sh index 6d1e8c21..96ce2aaf 100755 --- a/files/initrd/opt/arc/init.sh +++ b/files/initrd/opt/arc/init.sh @@ -42,6 +42,7 @@ initConfigKey "zimage-hash" "" "${USER_CONFIG_FILE}" initConfigKey "ramdisk-hash" "" "${USER_CONFIG_FILE}" initConfigKey "cmdline" "{}" "${USER_CONFIG_FILE}" initConfigKey "synoinfo" "{}" "${USER_CONFIG_FILE}" +initConfigKey "rd-compressed" "false" "${USER_CONFIG_FILE}" initConfigKey "addons" "{}" "${USER_CONFIG_FILE}" initConfigKey "modules" "{}" "${USER_CONFIG_FILE}" initConfigKey "arc" "{}" "${USER_CONFIG_FILE}" diff --git a/files/initrd/opt/arc/ramdisk-patch.sh b/files/initrd/opt/arc/ramdisk-patch.sh index 394f28b5..8ef4141d 100755 --- a/files/initrd/opt/arc/ramdisk-patch.sh +++ b/files/initrd/opt/arc/ramdisk-patch.sh @@ -37,6 +37,7 @@ PLATFORM="$(readModelKey "${MODEL}" "platform")" HDDSORT="$(readConfigKey "arc.hddsort" "${USER_CONFIG_FILE}")" USBMOUNT="$(readConfigKey "arc.usbmount" "${USER_CONFIG_FILE}")" KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" +RD_COMPRESSED="$(readConfigKey "rd-compressed" "${USER_CONFIG_FILE}")" # Check if DSM Version changed . "${RAMDISK_PATH}/etc/VERSION" @@ -45,7 +46,6 @@ KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" PRODUCTVERDSM="${majorversion}.${minorversion}" PRODUCTVER="$(readConfigKey "productver" "${USER_CONFIG_FILE}")" KVER="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].kver")" -RD_COMPRESSED="$(readModelKey "${MODEL}" "productvers.[${PRODUCTVER}].rd-compressed")" # Read new PAT Info from Config PAT_URL="$(readConfigKey "arc.paturl" "${USER_CONFIG_FILE}")" PAT_HASH="$(readConfigKey "arc.pathash" "${USER_CONFIG_FILE}")" @@ -90,10 +90,17 @@ while IFS=': ' read -r KEY VALUE; do done <<<$(readConfigMap "modules" "${USER_CONFIG_FILE}") # Patches (diff -Naru OLDFILE NEWFILE > xxx.patch) -while read -r PE; do +PATCHS=() +PATCHS+=("ramdisk-etc-rc-*.patch") +PATCHS+=("ramdisk-init-script-v${KVER:0:1}-*.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 ${PATCH_PATH}/${PE} 2>/dev/null); do + echo -n "." echo "Patching with ${PF}" >>"${LOG_FILE}" ( cd "${RAMDISK_PATH}" @@ -103,7 +110,7 @@ while read -r PE; do [ ${RET} -eq 0 ] && break done [ ${RET} -ne 0 ] && exit 1 -done <<<$(readModelArray "${MODEL}" "productvers.[${PRODUCTVER}].patch") +done # Patch /etc/synoinfo.conf # Add serial number to synoinfo.conf, to help to recovery a installed DSM diff --git a/scripts/func.sh b/scripts/func.sh index 3171e238..4c7259c4 100755 --- a/scripts/func.sh +++ b/scripts/func.sh @@ -227,7 +227,7 @@ function repackInitrd() { [ -f "${OUTPUT_PATH}" ] && rm -rf "${OUTPUT_PATH}" ( cd "${RDXZ_PATH}" - sudo find . 2>/dev/null | sudo cpio -o -H newc -R root:root | xz --check=crc32 >"${OUTPUT_PATH}" + sudo find . 2>/dev/null | sudo cpio -o -H newc -R root:root | xz -9 --check=crc32 >"${OUTPUT_PATH}" ) || true sudo rm -rf "${RDXZ_PATH}" }