Skip to content

Commit

Permalink
Merge pull request #635 from AuxXxilium/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
AuxXxilium authored Oct 29, 2023
2 parents 9901226 + b9f04e4 commit d6fa841
Show file tree
Hide file tree
Showing 179 changed files with 276 additions and 187 deletions.
94 changes: 62 additions & 32 deletions files/board/arc/overlayfs/opt/arc/arc.sh
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
#!/usr/bin/env bash

. /opt/arc/include/functions.sh
. /opt/arc/include/addons.sh
. /opt/arc/include/extensions.sh
. /opt/arc/include/modules.sh
. /opt/arc/include/storage.sh
. /opt/arc/include/network.sh
[ -z "${ARC_PATH}" ] || [ ! -d "${ARC_PATH}/include" ] && ARC_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"

LOADER_DISK="$(blkid | grep 'LABEL="ARC3"' | cut -d3 -f1)"
LOADER_DEVICE_NAME=$(echo "${LOADER_DISK}" | sed 's|/dev/||')
BUS=$(udevadm info --query property --name "${LOADER_DISK}" | grep ID_BUS | cut -d= -f2)
[ "${BUS}" = "ata" ] && BUS="sata"
. ${ARC_PATH}/include/functions.sh
. ${ARC_PATH}/include/addons.sh
. ${ARC_PATH}/include/extensions.sh
. ${ARC_PATH}/include/modules.sh
. ${ARC_PATH}/include/storage.sh
. ${ARC_PATH}/include/network.sh

# Memory: Check Memory installed
RAMTOTAL=0
Expand Down Expand Up @@ -57,6 +54,7 @@ KERNELLOAD="$(readConfigKey "arc.kernelload" "${USER_CONFIG_FILE}")"
KERNELPANIC="$(readConfigKey "arc.kernelpanic" "${USER_CONFIG_FILE}")"
MACSYS="$(readConfigKey "arc.macsys" "${USER_CONFIG_FILE}")"
ODP="$(readConfigKey "arc.odp" "${USER_CONFIG_FILE}")"
HDDSORT="$(readConfigKey "arc.hddsort" "${USER_CONFIG_FILE}")"
STATICIP="$(readConfigKey "arc.staticip" "${USER_CONFIG_FILE}")"

###############################################################################
Expand Down Expand Up @@ -101,7 +99,7 @@ function backtitle() {
BACKTITLE+=" Build: N"
fi
BACKTITLE+=" |"
BACKTITLE+=" ${MACHINE}(${BUS})"
BACKTITLE+=" ${MACHINE}"
echo "${BACKTITLE}"
}

Expand Down Expand Up @@ -535,11 +533,11 @@ function make() {
fi
# Copy DSM Files to Locations if DSM Files not found
cp -f "${UNTAR_PAT_PATH}/grub_cksum.syno" "${BOOTLOADER_PATH}"
cp -f "${UNTAR_PAT_PATH}/GRUB_VER" "${BOOTLOADER_PATH}"
cp -f "${UNTAR_PAT_PATH}/GRUB_VER" "${BOOTLOADER_PATH}"
cp -f "${UNTAR_PAT_PATH}/grub_cksum.syno" "${SLPART_PATH}"
cp -f "${UNTAR_PAT_PATH}/GRUB_VER" "${SLPART_PATH}"
cp -f "${UNTAR_PAT_PATH}/zImage" "${ORI_ZIMAGE_FILE}"
cp -f "${UNTAR_PAT_PATH}/rd.gz" "${ORI_RDGZ_FILE}"
cp -f "${UNTAR_PAT_PATH}/GRUB_VER" "${SLPART_PATH}"
cp -f "${UNTAR_PAT_PATH}/zImage" "${ORI_ZIMAGE_FILE}"
cp -f "${UNTAR_PAT_PATH}/rd.gz" "${ORI_RDGZ_FILE}"
rm -rf "${UNTAR_PAT_PATH}"
fi
# Reset Bootcount if User rebuild DSM
Expand Down Expand Up @@ -851,9 +849,10 @@ function cmdlineMenu() {
echo "4 \"RAM Fix\"" >>"${TMP_PATH}/menu"
echo "5 \"Apparmor Fix\"" >>"${TMP_PATH}/menu"
echo "6 \"PCI/IRQ 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"
echo "7 \"C-State Fix\"" >>"${TMP_PATH}/menu"
echo "8 \"Show user Cmdline\"" >>"${TMP_PATH}/menu"
echo "9 \"Show Model/Build Cmdline\"" >>"${TMP_PATH}/menu"
echo "0 \"Kernelpanic Behavior\"" >>"${TMP_PATH}/menu"
# Loop menu
while true; do
dialog --backtitle "$(backtitle)" --menu "Choose an Option" 0 0 0 \
Expand Down Expand Up @@ -931,7 +930,7 @@ function cmdlineMenu() {
[ -z "${resp}" ] && return 1
if [ ${resp} -eq 1 ]; then
writeConfigKey "cmdline.disable_mtrr_trim" "0" "${USER_CONFIG_FILE}"
writeConfigKey "cmdline.crashkernel" "192M" "${USER_CONFIG_FILE}"
writeConfigKey "cmdline.crashkernel" "auto" "${USER_CONFIG_FILE}"
dialog --backtitle "$(backtitle)" --title "RAM Fix" \
--aspect 18 --msgbox "Fix installed to Cmdline" 0 0
elif [ ${resp} -eq 2 ]; then
Expand Down Expand Up @@ -984,22 +983,42 @@ function cmdlineMenu() {
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
7)
dialog --clear --backtitle "$(backtitle)" \
--title "C-State Fix" --menu "Fix?" 0 0 0 \
1 "Install" \
2 "Uninnstall" \
2>"${TMP_PATH}/resp"
resp="$(<"${TMP_PATH}/resp")"
[ -z "${resp}" ] && return 1
if [ ${resp} -eq 1 ]; then
writeConfigKey "cmdline.intel_idle.max_cstate" "1" "${USER_CONFIG_FILE}"
dialog --backtitle "$(backtitle)" --title "C-State Fix" \
--aspect 18 --msgbox "Fix installed to Cmdline" 0 0
elif [ ${resp} -eq 2 ]; then
deleteConfigKey "cmdline.intel_idle.max_cstate" "${USER_CONFIG_FILE}"
dialog --backtitle "$(backtitle)" --title "C-State Fix" \
--aspect 18 --msgbox "Fix uninstalled from Cmdline" 0 0
fi
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
8)
ITEMS=""
for KEY in ${!CMDLINE[@]}; do
ITEMS+="${KEY}: ${CMDLINE[$KEY]}\n"
done
dialog --backtitle "$(backtitle)" --title "User cmdline" \
--aspect 18 --msgbox "${ITEMS}" 0 0
;;
8)
9)
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)
0)
rm -f "${TMP_PATH}/opts"
echo "5 \"Reboot after 5 seconds\"" >>"${TMP_PATH}/opts"
echo "0 \"No reboot\"" >>"${TMP_PATH}/opts"
Expand Down Expand Up @@ -1274,14 +1293,14 @@ function backupMenu() {
break
done
popd
if [ -z "${IFTOOL}" ] || [ -z "${TMP_PATH}/${USER_FILE}" ]; then
if [ -z "${IFTOOL}" ] || [ ! -f "${TMP_PATH}/${USER_FILE}" ]; then
dialog --backtitle "$(backtitle)" --title "Restore Loader disk" --aspect 18 \
--msgbox "Not a valid .zip/.img.gz file, please try again!\n${USER_FILE}" 0 0
else
dialog --backtitle "$(backtitle)" --title "Restore Loader disk" \
--yesno "Warning:\nDo not terminate midway, otherwise it may cause damage to the Loader. Do you want to continue?" 0 0
[ $? -ne 0 ] && (
rm -f "${LOADER_DISK}"
rm -f "${TMP_UP_PATH}/${USER_FILE}"
return 1
)
dialog --backtitle "$(backtitle)" --title "Restore Loader disk" --aspect 18 \
Expand Down Expand Up @@ -2078,6 +2097,7 @@ function sysinfo() {
LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")"
KERNELLOAD="$(readConfigKey "arc.kernelload" "${USER_CONFIG_FILE}")"
MACSYS="$(readConfigKey "arc.macsys" "${USER_CONFIG_FILE}")"
HDDSORT="$(readConfigKey "arc.hddsort" "${USER_CONFIG_FILE}")"
MODULESINFO="$(lsmod | awk -F' ' '{print $1}' | grep -v 'Module')"
MODULESVERSION="$(cat "${MODULES_PATH}/VERSION")"
ADDONSVERSION="$(cat "${ADDONS_PATH}/VERSION")"
Expand All @@ -2101,7 +2121,7 @@ function sysinfo() {
TEXT+="\n ${DRIVER}: \ZbIP: NOT CONNECTED | MAC: ${MAC}\Zn"
break
fi
NETIP=$(ip route show dev ${ETHX[${N}]} 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p')
NETIP="$(getIP)"
if [ "${STATICIP}" = "true" ]; then
ARCIP="$(readConfigKey "arc.ip" "${USER_CONFIG_FILE}")"
if [ "${ETHX[${N}]}" = "eth0" ] && [ -n "${ARCIP}" ]; then
Expand Down Expand Up @@ -2160,6 +2180,7 @@ function sysinfo() {
TEXT+="\n"
# Check for Controller // 104=RAID // 106=SATA // 107=SAS
TEXT+="\n\Z4> Storage\Zn"
TEXT+="\n Sort Drives: \Zb${HDDSORT}\Zn"
# Get Information for Sata Controller
NUMPORTS=0
if [ $(lspci -d ::106 | wc -l) -gt 0 ]; then
Expand Down Expand Up @@ -2225,7 +2246,7 @@ function sysinfo() {
# allow setting Static IP for DSM
function staticIPMenu() {
mkdir -p "${TMP_PATH}/sdX1"
for I in $(ls /dev/sd*1 2>/dev/null | grep -v ${LOADER_DISK}1); do
for I in $(ls /dev/sd.*1 2>/dev/null | grep -v "${LOADER_DISK}1"); do
mount "${I}" "${TMP_PATH}/sdX1"
[ -f "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-eth0" ] && . "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-eth0"
umount "${I}"
Expand Down Expand Up @@ -2271,7 +2292,7 @@ function staticIPMenu() {
[ $? -ne 0 ] && return 1
(
mkdir -p "${TMP_PATH}/sdX1"
for I in $(ls /dev/sd*1 2>/dev/null | grep -v ${LOADER_DISK}1); do
for I in $(ls /dev/sd*1 2>/dev/null | grep -v "${LOADER_DISK}1"); do
mount "${I}" "${TMP_PATH}/sdX1"
[ -f "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-eth0" ] && cp -f "${TMP_PATH}/ifcfg-eth0" "${TMP_PATH}/sdX1/etc/sysconfig/network-scripts/ifcfg-eth0"
sync
Expand All @@ -2280,9 +2301,8 @@ function staticIPMenu() {
rm -rf "${TMP_PATH}/sdX1"
)
if [ -n "${IPADDR}" ] && [ -n "${NETMASK}" ]; then
IP="${IPADDR}"
NETMASK=$(convert_netmask "${NETMASK}")
ip addr add ${IP}/${NETMASK} dev eth0
ip addr add ${IPADDR}/${NETMASK} dev eth0
writeConfigKey "arc.staticip" "true" "${USER_CONFIG_FILE}"
writeConfigKey "arc.ip" "${IPADDR}" "${USER_CONFIG_FILE}"
writeConfigKey "arc.netmask" "${NETMASK}" "${USER_CONFIG_FILE}"
Expand All @@ -2309,7 +2329,7 @@ function downgradeMenu() {
[ $? -ne 0 ] && return 1
(
mkdir -p "${TMP_PATH}/sdX1"
for I in $(ls /dev/sd*1 2>/dev/null | grep -v ${LOADER_DISK}1); do
for I in $(ls /dev/sd*1 2>/dev/null | grep -v "${LOADER_DISK}1"); do
mount "${I}" "${TMP_PATH}/sdX1"
[ -f "${TMP_PATH}/sdX1/etc/VERSION" ] && rm -f "${TMP_PATH}/sdX1/etc/VERSION"
[ -f "${TMP_PATH}/sdX1/etc.defaults/VERSION" ] && rm -f "${TMP_PATH}/sdX1/etc.defaults/VERSION"
Expand Down Expand Up @@ -2364,7 +2384,7 @@ function resetPassword() {
NEWPASSWD="$(python -c "import crypt,getpass;pw=\"${VALUE}\";print(crypt.crypt(pw))")"
(
mkdir -p "${TMP_PATH}/sdX1"
for I in $(ls /dev/sd*1 2>/dev/null | grep -v ${LOADER_DISK}1); do
for I in $(ls /dev/sd*1 2>/dev/null | grep -v "${LOADER_DISK}1"); do
mount "${I}" "${TMP_PATH}/sdX1"
sed -i "s|${OLDPASSWD}|${NEWPASSWD}|g" "${TMP_PATH}/sdX1/etc/shadow"
sync
Expand Down Expand Up @@ -2577,6 +2597,7 @@ while true; do
if [ "${DT}" = "false" ]; then
echo "h \"USB Port Config \" " >>"${TMP_PATH}/menu"
fi
echo ". \"DHCP/Static Loader IP \" " >>"${TMP_PATH}/menu"
echo "= \"\Z4=========================\Zn \" " >>"${TMP_PATH}/menu"
fi
if [ "${ADVOPTS}" = "true" ]; then
Expand Down Expand Up @@ -2618,8 +2639,8 @@ while true; do
echo "= \"\Z4========== DSM ==========\Zn \" " >>"${TMP_PATH}/menu"
echo "s \"Allow DSM Downgrade \" " >>"${TMP_PATH}/menu"
echo "t \"Change DSM Password \" " >>"${TMP_PATH}/menu"
echo ". \"DHCP/Static IP Settings \" " >>"${TMP_PATH}/menu"
echo ", \"Official Driver Priority: \Z4${ODP}\Zn \" " >>"${TMP_PATH}/menu"
echo "/ \"Sort Drives: \Z4${HDDSORT}\Zn \" " >>"${TMP_PATH}/menu"
echo "o \"Switch MacSys: \Z4${MACSYS}\Zn \" " >>"${TMP_PATH}/menu"
echo "u \"Switch LKM version: \Z4${LKM}\Zn \" " >>"${TMP_PATH}/menu"
echo "= \"\Z4=========================\Zn \" " >>"${TMP_PATH}/menu"
Expand Down Expand Up @@ -2669,6 +2690,7 @@ while true; do
f) networkMenu; NEXT="f" ;;
g) storageMenu; NEXT="g" ;;
h) usbMenu; NEXT="h" ;;
.) staticIPMenu; NEXT="." ;;
# Advanced Section
6) [ "${ADVOPTS}" = "true" ] && ADVOPTS='false' || ADVOPTS='true'
ADVOPTS="${ADVOPTS}"
Expand Down Expand Up @@ -2706,10 +2728,18 @@ while true; do
;;
s) downgradeMenu; NEXT="s" ;;
t) resetPassword; NEXT="t" ;;
.) staticIPMenu; NEXT="." ;;
,)
[ "${ODP}" = "false" ] && ODP='true' || ODP='false'
writeConfigKey "arc.odp" "${ODP}" "${USER_CONFIG_FILE}"
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
;;
/)
[ "${HDDSORT}" = "true" ] && HDDSORT='false' || HDDSORT='true'
writeConfigKey "arc.hddsort" "${HDDSORT}" "${USER_CONFIG_FILE}"
writeConfigKey "arc.builddone" "false" "${USER_CONFIG_FILE}"
BUILDDONE="$(readConfigKey "arc.builddone" "${USER_CONFIG_FILE}")"
NEXT="/"
;;
o) [ "${MACSYS}" = "hardware" ] && MACSYS='custom' || MACSYS='hardware'
writeConfigKey "arc.macsys" "${MACSYS}" "${USER_CONFIG_FILE}"
Expand Down
53 changes: 32 additions & 21 deletions files/board/arc/overlayfs/opt/arc/boot.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
#0!/usr/bin/env bash

set -e

. /opt/arc/include/functions.sh

LOADER_DISK="$(blkid | grep 'LABEL="ARC3"' | cut -d3 -f1)"
BUS=$(udevadm info --query property --name "${LOADER_DISK}" | grep ID_BUS | cut -d= -f2)
[ "${BUS}" = "ata" ] && BUS="sata"
[ -z "${ARC_PATH}" ] || [ ! -d "${ARC_PATH}/include" ] && ARC_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"

. ${ARC_PATH}/include/functions.sh

# Wait kernel enumerate the disks
CNT=3
while true; do
[ ${CNT} -eq 0 ] && break
LOADER_DISK="$(blkid | grep 'LABEL="ARC3"' | cut -d3 -f1)"
[ -n "${LOADER_DISK}" ] && break
CNT=$((${CNT} - 1))
sleep 1
done
BUS=$(getBus "${LOADER_DISK}")

# Check if machine has EFI
[ -d /sys/firmware/efi ] && EFI=1 || EFI=0
Expand Down Expand Up @@ -73,6 +81,16 @@ if [ ! -f "${MODEL_CONFIG_PATH}/${MODEL}.yml" ] || [ -z "$(readModelKey "${MODEL
exit 1
fi

HASATA=0
for D in $(lsblk -dpno NAME); do
[ "${D}" = "${LOADER_DISK}" ] && continue
if [ "$(getBus "${D}")" = "sata" ] || [ "$(getBus "${D}")" = "scsi" ]; then
HASATA=1
break
fi
done
[ ${HASATA} = "0" ] && echo -e "\033[1;33m*** Please insert at least one sata/scsi disk for system installation, except for the bootloader disk. ***\033[0m"

# Read necessary variables
VID="$(readConfigKey "vid" "${USER_CONFIG_FILE}")"
PID="$(readConfigKey "pid" "${USER_CONFIG_FILE}")"
Expand All @@ -82,7 +100,7 @@ KERNELLOAD="$(readConfigKey "arc.kernelload" "${USER_CONFIG_FILE}")"
KERNELPANIC="$(readConfigKey "arc.kernelpanic" "${USER_CONFIG_FILE}")"
DIRECTBOOT="$(readConfigKey "arc.directboot" "${USER_CONFIG_FILE}")"
BOOTCOUNT="$(readConfigKey "arc.bootcount" "${USER_CONFIG_FILE}")"
ETHX=($(ls /sys/class/net/ | grep eth)) # real network cards list

[ -z "${BOOTCOUNT}" ] && BOOTCOUNT=0

declare -A CMDLINE
Expand All @@ -91,14 +109,10 @@ declare -A CMDLINE
if grep -q "force_junior" /proc/cmdline; then
CMDLINE['force_junior']=""
fi
if [ ${EFI} -eq 1 ]; then
CMDLINE['withefi']=""
else
CMDLINE['noefi']=""
fi
[ ${EFI} -eq 1 ] && CMDLINE['withefi']="" || CMDLINE['noefi']=""
if [ ! "${BUS}" = "usb" ]; then
LOADER_DEVICE_NAME=$(echo ${LOADER_DISK} | sed 's|/dev/||')
SIZE=$(($(cat /sys/block/${LOADER_DEVICE_NAME}/size) / 2048 + 10))
SIZE=$(($(cat /sys/block/${LOADER_DISK/\/dev\//}/size) / 2048 + 10))
# Read SATADoM type
DOM="$(readModelKey "${MODEL}" "dom")"
CMDLINE['synoboot_satadom']="${DOM}"
Expand All @@ -118,12 +132,9 @@ CMDLINE['loglevel']="15"
CMDLINE['log_buf_len']="32M"
CMDLINE['sn']="${SN}"
CMDLINE['mac1']="${MAC1}"
CMDLINE['net.ifnames']="0"
CMDLINE['netif_num']="1"
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']="1,2,3,4,5,6,7"
fi
[ "${MACSYS}" = "hardware" ] && CMDLINE['skip_vender_mac_interfaces']="0,1,2,3,4,5,6,7" || CMDLINE['skip_vender_mac_interfaces']="1,2,3,4,5,6,7"

# Read cmdline
while IFS=': ' read -r KEY VALUE; do
Expand Down Expand Up @@ -162,7 +173,7 @@ elif [ "${DIRECTBOOT}" = "true" ] && [ ${BOOTCOUNT} -eq 0 ]; then
echo -e "\033[1;34mDSM not installed - Reboot with Directboot\033[0m"
exec reboot
elif [ "${DIRECTBOOT}" = "false" ]; then
# Read Ip Settings
ETHX=($(ls /sys/class/net/ | grep eth)) # real network cards list
STATICIP="$(readConfigKey "arc.staticip" "${USER_CONFIG_FILE}")"
BOOTIPWAIT="$(readConfigKey "arc.bootipwait" "${USER_CONFIG_FILE}")"
echo -e "\033[1;34mDetected ${#ETHX[@]} NIC.\033[0m \033[1;37mWaiting for Connection:\033[0m"
Expand All @@ -174,7 +185,7 @@ elif [ "${DIRECTBOOT}" = "false" ]; then
echo -e "\r${DRIVER}: NOT CONNECTED"
break
fi
IP=$(ip route show dev ${ETHX[${N}]} 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p')
IP="$(getIP ${ETHX[${N}]})"
if [ "${STATICIP}" = "true" ]; then
ARCIP="$(readConfigKey "arc.ip" "${USER_CONFIG_FILE}")"
NETMASK="$(readConfigKey "arc.netmask" "${USER_CONFIG_FILE}")"
Expand Down Expand Up @@ -231,7 +242,7 @@ kexec -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDL
echo -e "\033[1;37m"Booting DSM..."\033[0m"
for T in $(w | grep -v "TTY" | awk -F' ' '{print $2}')
do
echo -e "\n\033[1;37mThis interface will not be operational. Please use \033[1;34mhttps://finds.synology.com/ \033[1;37mto find DSM and connect.\033[0m\n" >"/dev/${T}" 2>/dev/null || true
echo -e "\n\033[1;37mThis interface will not be operational. Wait a few minutes.\nPlease use \033[1;34mhttp://find.synology.com/ \033[1;37mto find DSM and connect.\033[0m\n" >"/dev/${T}" 2>/dev/null || true
done
[ "${KERNELLOAD}" = "kexec" ] && kexec -f -e || poweroff
exit 0
Loading

0 comments on commit d6fa841

Please sign in to comment.