From 6017ea9ac6cf6e72ffb2d034f851a41dba7e8664 Mon Sep 17 00:00:00 2001 From: Ing Date: Thu, 7 Mar 2024 04:32:12 +0800 Subject: [PATCH] add 2>/dev/null --- files/initrd/opt/rr/boot.sh | 20 ++-- files/initrd/opt/rr/include/addons.sh | 2 +- files/initrd/opt/rr/include/functions.sh | 18 ++-- files/initrd/opt/rr/include/modules.sh | 4 +- files/initrd/opt/rr/init.sh | 14 +-- files/initrd/opt/rr/menu.sh | 108 +++++++++++----------- files/initrd/opt/rr/ramdisk-patch.sh | 4 +- files/initrd/opt/rr/vmlinux-to-bzImage.sh | 4 +- files/initrd/opt/rr/zimage-patch.sh | 2 +- scripts/func.sh | 4 +- 10 files changed, 90 insertions(+), 90 deletions(-) diff --git a/files/initrd/opt/rr/boot.sh b/files/initrd/opt/rr/boot.sh index 654ec421..cbff1a22 100755 --- a/files/initrd/opt/rr/boot.sh +++ b/files/initrd/opt/rr/boot.sh @@ -29,7 +29,7 @@ printf "\033[1;33m%*s\033[0m\n" $(((${#TITLE} + ${COLUMNS}) / 2)) "${TITLE}" # Check if DSM zImage changed, patch it if necessary ZIMAGE_HASH="$(readConfigKey "zimage-hash" "${USER_CONFIG_FILE}")" -if [ -f ${PART1_PATH}/.build -o "$(sha256sum "${ORI_ZIMAGE_FILE}" | awk '{print$1}')" != "${ZIMAGE_HASH}" ]; then +if [ -f ${PART1_PATH}/.build -o "$(sha256sum "${ORI_ZIMAGE_FILE}" | awk '{print $1}')" != "${ZIMAGE_HASH}" ]; then echo -e "\033[1;43m$(TEXT "DSM zImage changed")\033[0m" ${WORK_PATH}/zimage-patch.sh if [ $? -ne 0 ]; then @@ -58,9 +58,9 @@ SMALLNUM="$(readConfigKey "smallnum" "${USER_CONFIG_FILE}")" KERNEL="$(readConfigKey "kernel" "${USER_CONFIG_FILE}")" LKM="$(readConfigKey "lkm" "${USER_CONFIG_FILE}")" -DMI="$(dmesg | grep -i "DMI:" | sed 's/\[.*\] DMI: //i')" -CPU="$(echo $(cat /proc/cpuinfo | grep 'model name' | uniq | awk -F':' '{print $2}'))" -MEM="$(free -m | grep -i mem | awk '{print$2}') MB" +DMI="$(dmesg 2>/dev/null | grep -i "DMI:" | sed 's/\[.*\] DMI: //i')" +CPU="$(echo $(cat /proc/cpuinfo 2>/dev/null | grep 'model name' | uniq | awk -F':' '{print $2}'))" +MEM="$(free -m 2>/dev/null | grep -i mem | awk '{print $2}') MB" echo -e "$(TEXT "Model: ") \033[1;36m${MODEL}\033[0m" echo -e "$(TEXT "Version: ") \033[1;36m${PRODUCTVER}(${BUILDNUM}$([ ${SMALLNUM:-0} -ne 0 ] && echo "u${SMALLNUM}"))\033[0m" @@ -186,7 +186,7 @@ else while [ ${COUNT} -lt $((${BOOTIPWAIT} + 32)) ]; do hasConnect="false" for N in ${ETHX}; do - if ethtool ${N} | grep 'Link detected' | grep -q 'yes'; then + if ethtool ${N} 2>/dev/null | grep 'Link detected' | grep -q 'yes'; then echo -en "${N} " hasConnect="true" fi @@ -205,11 +205,11 @@ else DRIVER=$(ls -ld /sys/class/net/${N}/device/driver 2>/dev/null | awk -F '/' '{print $NF}') echo -en "${N}(${DRIVER}): " while true; do - if ! ip link show ${N} | grep -q 'UP'; then + if ! ip link show ${N} 2>/dev/null | grep -q 'UP'; then echo -en "\r${N}(${DRIVER}): $(TEXT "DOWN")\n" break fi - if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then + if ethtool ${N} 2>/dev/null | grep 'Link detected' | grep -q 'no'; then echo -en "\r${N}(${DRIVER}): $(TEXT "NOT CONNECTED")\n" break fi @@ -229,12 +229,12 @@ else done BOOTWAIT="$(readConfigKey "bootwait" "${USER_CONFIG_FILE}")" [ -z "${BOOTWAIT}" ] && BOOTWAIT=10 - w | awk '{print $1" "$2" "$4" "$5" "$6}' >WB + w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WB MSG="" while test ${BOOTWAIT} -ge 0; do MSG="$(printf "\033[1;33m$(TEXT "%2ds (Changing access(ssh/web) status will interrupt boot)")\033[0m" "${BOOTWAIT}")" echo -en "\r${MSG}" - w | awk '{print $1" "$2" "$4" "$5" "$6}' >WC + w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WC if ! diff WB WC >/dev/null 2>&1; then echo -en "\r\033[1;33m$(TEXT "access(ssh/web) status has changed and booting is interrupted.")\033[0m\n" rm -f WB WC @@ -268,7 +268,7 @@ else kexec -l "${MOD_ZIMAGE_FILE}" --initrd "${MOD_RDGZ_FILE}" --command-line="${CMDLINE_LINE}" >"${LOG_FILE}" 2>&1 || dieLog fi echo -e "\033[1;37m$(TEXT "Booting ...")\033[0m" - for T in $(w | grep -v "TTY" | awk -F' ' '{print $2}'); do + for T in $(w 2>/dev/null | grep -v "TTY" | awk -F' ' '{print $2}'); do echo -e "\n\033[1;43m$(TEXT "[This interface will not be operational. Please wait a few minutes.\nFind DSM via http://find.synology.com/ or Synology Assistant and connect.]")\033[0m\n" >"/dev/${T}" 2>/dev/null || true done diff --git a/files/initrd/opt/rr/include/addons.sh b/files/initrd/opt/rr/include/addons.sh index 36ee8a43..51b44588 100755 --- a/files/initrd/opt/rr/include/addons.sh +++ b/files/initrd/opt/rr/include/addons.sh @@ -7,7 +7,7 @@ function availableAddons() { echo "" return 1 fi - for D in $(find "${ADDONS_PATH}" -maxdepth 1 -type d | sort); do + for D in $(find "${ADDONS_PATH}" -maxdepth 1 -type d 2>/dev/null | sort); do [ ! -f "${D}/manifest.yml" ] && continue ADDON=$(basename ${D}) checkAddonExist "${ADDON}" "${1}" "${2}" || continue diff --git a/files/initrd/opt/rr/include/functions.sh b/files/initrd/opt/rr/include/functions.sh index 2971d34a..a222ad8d 100755 --- a/files/initrd/opt/rr/include/functions.sh +++ b/files/initrd/opt/rr/include/functions.sh @@ -214,8 +214,8 @@ function _sort_netif() { ETHLIST="" ETHX=$(ls /sys/class/net/ 2>/dev/null | grep eth) # real network cards list for ETH in ${ETHX}; do - MAC="$(cat /sys/class/net/${ETH}/address | sed 's/://g' | tr '[:upper:]' '[:lower:]')" - BUS=$(ethtool -i ${ETH} | grep bus-info | awk '{print $2}') + MAC="$(cat /sys/class/net/${ETH}/address 2>/dev/null | sed 's/://g' | tr '[:upper:]' '[:lower:]')" + BUS=$(ethtool -i ${ETH} 2>/dev/null | grep bus-info | awk '{print $2}') ETHLIST="${ETHLIST}${BUS} ${MAC} ${ETH}\n" done @@ -295,10 +295,10 @@ function getIP() { IP="" if [ -n "${1}" -a -d "/sys/class/net/${1}" ]; then IP=$(ip route show dev ${1} 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p') - [ -z "${IP}" ] && IP=$(ip addr show ${1} | grep -E "inet .* eth" | awk '{print $2}' | cut -f1 -d'/' | head -1) + [ -z "${IP}" ] && IP=$(ip addr show ${1} 2>/dev/null | grep -E "inet .* eth" | awk '{print $2}' | cut -f1 -d'/' | head -1) else IP=$(ip route show 2>/dev/null | sed -n 's/.* via .* src \(.*\) metric .*/\1/p' | head -1) - [ -z "${IP}" ] && IP=$(ip addr show | grep -E "inet .* eth" | awk '{print $2}' | cut -f1 -d'/' | head -1) + [ -z "${IP}" ] && IP=$(ip addr show 2>/dev/null | grep -E "inet .* eth" | awk '{print $2}' | cut -f1 -d'/' | head -1) fi echo "${IP}" } @@ -322,12 +322,12 @@ function getLogo() { # Find and mount the DSM root filesystem # (based on pocopico's TCRP code) function findAndMountDSMRoot() { - [ $(mount | grep -i "${DSMROOT_PATH}" | wc -l) -gt 0 ] && return 0 - dsmrootdisk="$(blkid | grep -i linux_raid_member | grep -E "/dev/.*1: " | head -1 | awk -F ":" '{print $1}')" + [ $(mount 2>/dev/null | grep -i "${DSMROOT_PATH}" | wc -l) -gt 0 ] && return 0 + dsmrootdisk="$(blkid 2>/dev/null | grep -i linux_raid_member | grep -E "/dev/.*1: " | head -1 | awk -F ":" '{print $1}')" [ -z "${dsmrootdisk}" ] && return -1 [ ! -d "${DSMROOT_PATH}" ] && mkdir -p "${DSMROOT_PATH}" - [ $(mount | grep -i "${DSMROOT_PATH}" | wc -l) -eq 0 ] && mount -t ext4 "${dsmrootdisk}" "${DSMROOT_PATH}" - if [ $(mount | grep -i "${DSMROOT_PATH}" | wc -l) -eq 0 ]; then + [ $(mount 2>/dev/null | grep -i "${DSMROOT_PATH}" | wc -l) -eq 0 ] && mount -t ext4 "${dsmrootdisk}" "${DSMROOT_PATH}" + if [ $(mount 2>/dev/null | grep -i "${DSMROOT_PATH}" | wc -l) -eq 0 ]; then echo "Failed to mount" return -1 fi @@ -339,7 +339,7 @@ function findAndMountDSMRoot() { function rebootTo() { [ "${1}" != "junior" -a "${1}" != "config" ] && exit 1 # echo "Rebooting to ${1} mode" - GRUBPATH="$(dirname $(find ${PART1_PATH}/ -name grub.cfg | head -1))" + GRUBPATH="$(dirname $(find ${PART1_PATH}/ -name grub.cfg 2>/dev/null | head -1))" ENVFILE="${GRUBPATH}/grubenv" [ ! -f "${ENVFILE}" ] && grub-editenv ${ENVFILE} create grub-editenv ${ENVFILE} set next_entry="${1}" diff --git a/files/initrd/opt/rr/include/modules.sh b/files/initrd/opt/rr/include/modules.sh index e2755d67..786a7941 100755 --- a/files/initrd/opt/rr/include/modules.sh +++ b/files/initrd/opt/rr/include/modules.sh @@ -23,7 +23,7 @@ function getAllModules() { for F in $(ls ${TMP_PATH}/modules/*.ko 2>/dev/null); do local X=$(basename ${F}) local M=${X:0:-3} - local DESC=$(modinfo ${F} | awk -F':' '/description:/{ print $2}' | awk '{sub(/^[ ]+/,""); print}') + local DESC=$(modinfo ${F} 2>/dev/null | awk -F':' '/description:/{ print $2}' | awk '{sub(/^[ ]+/,""); print}') [ -z "${DESC}" ] && DESC="${X}" echo "${M} \"${DESC}\"" done @@ -144,7 +144,7 @@ function delToModules() { function getdepends() { function _getdepends() { if [ -f "${TMP_PATH}/modules/${1}.ko" ]; then - depends=($(modinfo "${TMP_PATH}/modules/${1}.ko" | grep depends: | awk -F: '{print $2}' | awk '$1=$1' | sed 's/,/ /g')) + depends=($(modinfo "${TMP_PATH}/modules/${1}.ko" 2>/dev/null | grep depends: | awk -F: '{print $2}' | awk '$1=$1' | sed 's/,/ /g')) if [ ${#depends[@]} -gt 0 ]; then for k in ${depends[@]}; do echo "${k}" diff --git a/files/initrd/opt/rr/init.sh b/files/initrd/opt/rr/init.sh index bb46919e..dd94d55d 100755 --- a/files/initrd/opt/rr/init.sh +++ b/files/initrd/opt/rr/init.sh @@ -65,7 +65,7 @@ initConfigKey "modules" "{}" "${USER_CONFIG_FILE}" for ETH in ${ETHX}; do [ "${ETH::4}" = "wlan" ] && connectwlanif "${ETH}" && sleep 1 - MACR="$(cat /sys/class/net/${ETH}/address | sed 's/://g')" + MACR="$(cat /sys/class/net/${ETH}/address 2>/dev/null | sed 's/://g')" IPR="$(readConfigKey "network.${MACR}" "${USER_CONFIG_FILE}")" if [ -n "${IPR}" ]; then ip addr add ${IPC}/24 dev ${ETH} @@ -80,8 +80,8 @@ PID="0x0001" BUS=$(getBus "${LOADER_DISK}") if [ "${BUS}" = "usb" ]; then - VID="0x$(udevadm info --query property --name ${LOADER_DISK} | grep ID_VENDOR_ID | cut -d= -f2)" - PID="0x$(udevadm info --query property --name ${LOADER_DISK} | grep ID_MODEL_ID | cut -d= -f2)" + VID="0x$(udevadm info --query property --name ${LOADER_DISK} 2>/dev/null | grep ID_VENDOR_ID | cut -d= -f2)" + PID="0x$(udevadm info --query property --name ${LOADER_DISK} 2>/dev/null | grep ID_MODEL_ID | cut -d= -f2)" elif [ "${BUS}" != "sata" -a "${BUS}" != "scsi" -a "${BUS}" != "nvme" -a "${BUS}" != "mmc" ]; then die "$(TEXT "Loader disk neither USB or SATA/SCSI/NVME/MMC DoM")" fi @@ -125,7 +125,7 @@ COUNT=0 while [ ${COUNT} -lt 30 ]; do hasConnect="false" for N in ${ETHX}; do - if ethtool ${N} | grep 'Link detected' | grep -q 'yes'; then + if ethtool ${N} 2>/dev/null | grep 'Link detected' | grep -q 'yes'; then echo -en "${N} " hasConnect="true" fi @@ -144,11 +144,11 @@ for N in ${ETHX}; do DRIVER=$(ls -ld /sys/class/net/${N}/device/driver 2>/dev/null | awk -F '/' '{print $NF}') echo -en "${N}(${DRIVER}): " while true; do - if ! ip link show ${N} | grep -q 'UP'; then + if ! ip link show ${N} 2>/dev/null | grep -q 'UP'; then echo -en "\r${N}(${DRIVER}): $(TEXT "DOWN")\n" break fi - if ethtool ${N} | grep 'Link detected' | grep -q 'no'; then + if ethtool ${N} 2>/dev/null | grep 'Link detected' | grep -q 'no'; then echo -en "\r${N}(${DRIVER}): $(TEXT "NOT CONNECTED")\n" break fi @@ -191,7 +191,7 @@ if [ "${DSMLOGO}" = "true" -a -c "/dev/fb0" ]; then fi # Check memory -RAM=$(free -m 2>/dev/null | awk '/Mem:/{print$2}') +RAM=$(free -m 2>/dev/null | awk '/Mem:/{print $2}') if [ ${RAM:-0} -le 3500 ]; then echo -e "\033[1;33m$(TEXT "You have less than 4GB of RAM, if errors occur in loader creation, please increase the amount of memory.")\033[0m\n" fi diff --git a/files/initrd/opt/rr/menu.sh b/files/initrd/opt/rr/menu.sh index 45c93f48..261da80d 100755 --- a/files/initrd/opt/rr/menu.sh +++ b/files/initrd/opt/rr/menu.sh @@ -11,7 +11,7 @@ alias DIALOG='dialog --backtitle "$(backtitle)" --colors --aspect 50' # Check partition 3 space, if < 2GiB is necessary clean cache folder -PACELEFT=$(df -m ${LOADER_DISK_PART3} | awk 'NR==2 {print $4}') +PACELEFT=$(df -m ${LOADER_DISK_PART3} 2>/dev/null | awk 'NR==2 {print $4}') CLEARCACHE=0 if [ ${PACELEFT:-0} -lt 430 ]; then CLEARCACHE=1 @@ -106,7 +106,7 @@ function modelMenu() { 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 | sed 's/.*\///; s/\.yml//') + done <<<$(find "${WORK_PATH}/model-configs" -maxdepth 1 -name \*.yml 2>/dev/null | sed 's/.*\///; s/\.yml//') while true; do echo -n "" >"${TMP_PATH}/menu" @@ -141,11 +141,11 @@ function modelMenu() { [ -z "${resp}" ] && return if [ "${resp}" = "c" ]; then models=(DS918+ RS1619xs+ DS419+ DS1019+ DS719+ DS1621xs+) - [ $(lspci -d ::300 | grep 8086 | wc -l) -gt 0 ] && iGPU=1 || iGPU=0 - [ $(lspci -d ::104 | wc -l) -gt 0 -o $(lspci -d ::107 | wc -l) -gt 0 ] && LSI=1 || LSI=0 - [ $(lspci -d ::108 | wc -l) -gt 0 ] && NVME=1 || NVME=0 + [ $(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 | awk '{print $1}'); do + 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 @@ -374,13 +374,13 @@ function ParsePat() { break fi - MODELTMP=$(grep -E "MODEL=\".*\"" ${UNTAR_PAT_PATH}/GRUB_VER | sed 's/.*MODEL="\(.*\)".*/\1/') + 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 | sed 's/.*\///; s/\.yml//'); do + 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" @@ -421,9 +421,9 @@ function ParsePat() { mkdir -p "${PART3_PATH}/dl" # Check disk space left - SPACELEFT=$(df -m ${LOADER_DISK_PART3} | awk 'NR==2 {print $4}') + SPACELEFT=$(df -m ${LOADER_DISK_PART3} 2>/dev/null | awk 'NR==2 {print $4}') # Discover remote file size - FILESIZE=$(du -m "${PAT_PATH}" | awk '{print $1}') + FILESIZE=$(du -m "${PAT_PATH}" 2>/dev/null | awk '{print $1}') if [ ${FILESIZE:-0} -ge ${SPACELEFT:-0} ]; then # No disk space to copy, mv it to dl mv -f "${PAT_PATH}" "${PART3_PATH}/dl/${MODEL}-${PRODUCTVER}.pat" @@ -694,7 +694,7 @@ function moduleMenu() { DIALOG --title "$(TEXT "Modules")" \ --infobox "$(TEXT "Selecting loaded modules")" 0 0 KOLIST="" - for I in $(lsmod | awk -F' ' '{print $1}' | grep -v 'Module'); do + for I in $(lsmod 2>/dev/null | awk -F' ' '{print $1}' | grep -v 'Module'); do KOLIST+="$(getdepends "${PLATFORM}" "$([ -n "${KPRE}" ] && echo "${KPRE}-")${KVER}" "${I}") ${I} " done KOLIST=($(echo ${KOLIST} | tr ' ' '\n' | sort -u)) @@ -705,7 +705,7 @@ function moduleMenu() { touch ${PART1_PATH}/.build ;; u) - if ! tty | grep -q "/dev/pts"; then #if ! tty | grep -q "/dev/pts" || [ -z "${SSH_TTY}" ]; then + if ! tty 2>/dev/null | grep -q "/dev/pts"; then #if ! tty 2>/dev/null | grep -q "/dev/pts" || [ -z "${SSH_TTY}" ]; then MSG="" MSG+="$(TEXT "This feature is only available when accessed via ssh (Requires a terminal that supports ZModem protocol).\n")" DIALOG --title "$(TEXT "Modules")" \ @@ -1156,9 +1156,9 @@ function extractDsmFiles() { fi echo "$(printf "$(TEXT "Downloading %s ...")" "${PAT_FILE}")" # Check disk space left - SPACELEFT=$(df --block-size=1 ${LOADER_DISK_PART3} | awk 'NR==2 {print $4}') + SPACELEFT=$(df --block-size=1 ${LOADER_DISK_PART3} 2>/dev/null | awk 'NR==2 {print $4}') # Discover remote file size - FILESIZE=$(curl -skLI --connect-timeout 10 "${PATURL}" | grep -i Content-Length | awk '{print$2}') + FILESIZE=$(curl -skLI --connect-timeout 10 "${PATURL}" | grep -i Content-Length | tail -n 1 | awk '{print $2}') if [ ${FILESIZE:-0} -ge ${SPACELEFT:-0} ]; then # No disk space to download, change it to RAMDISK PAT_PATH="${TMP_PATH}/${PAT_FILE}" @@ -1519,10 +1519,10 @@ function advancedMenu() { y) DIALOG --title "$(TEXT "Advanced")" \ --infobox "$(TEXT "Scanning ...")" 0 0 - ITEM=$(iw wlan0 scan | grep SSID: | awk '{print $2}') + ITEM=$(iw wlan0 scan 2>/dev/null | grep SSID: | awk '{print $2}') MSG="" MSG+="$(TEXT "Scanned SSIDs:\n")" - for I in $(iw wlan0 scan | grep SSID: | awk '{print $2}'); do MSG+="${I}\n"; done + for I in $(iw wlan0 scan 2>/dev/null | grep SSID: | awk '{print $2}'); do MSG+="${I}\n"; done LINENUM=$(($(echo -e "${MSG}" | wc -l) + 8)) while true; do SSID=$(cat ${PART1_PATH}/wpa_supplicant.conf 2>/dev/null | grep -i SSID | cut -d'=' -f2) @@ -1553,7 +1553,7 @@ function advancedMenu() { for ETH in $(ls /sys/class/net/ 2>/dev/null | grep wlan); do connectwlanif "${ETH}" && sleep 1 - MACR="$(cat /sys/class/net/${ETH}/address | sed 's/://g')" + MACR="$(cat /sys/class/net/${ETH}/address 2>/dev/null | sed 's/://g')" IPR="$(readConfigKey "network.${MACR}" "${USER_CONFIG_FILE}")" if [ -n "${IPR}" ]; then ip addr add ${IPC}/24 dev ${ETH} @@ -1589,13 +1589,13 @@ function advancedMenu() { s) MSG="" NUMPORTS=0 - [ $(lspci -d ::106 | wc -l) -gt 0 ] && MSG+="\nATA:\n" - for PCI in $(lspci -d ::106 | awk '{print $1}'); do - NAME=$(lspci -s "${PCI}" | sed "s/\ .*://") + [ $(lspci -d ::106 2>/dev/null | wc -l) -gt 0 ] && MSG+="\nATA:\n" + for PCI in $(lspci -d ::106 2>/dev/null | awk '{print $1}'); do + NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") MSG+="\Zb${NAME}\Zn\nPorts: " PORTS=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n) for P in ${PORTS}; do - if lsscsi -b | grep -v - | grep -q "\[${P}:"; then + if lsscsi -b 2>/dev/null | grep -v - | grep -q "\[${P}:"; then DUMMY="$([ "$(cat /sys/class/scsi_host/host${P}/ahci_port_cmd)" = "0" ] && echo 1 || echo 2)" if [ "$(cat /sys/class/scsi_host/host${P}/ahci_port_cmd)" = "0" ]; then MSG+="\Z1$(printf "%02d" ${P})\Zn " @@ -1609,52 +1609,52 @@ function advancedMenu() { done MSG+="\n" done - [ $(lspci -d ::104 | wc -l) -gt 0 ] && MSG+="\nRAID:\n" - for PCI in $(lspci -d ::104 | awk '{print $1}'); do - NAME=$(lspci -s "${PCI}" | sed "s/\ .*://") + [ $(lspci -d ::104 2>/dev/null | wc -l) -gt 0 ] && MSG+="\nRAID:\n" + for PCI in $(lspci -d ::104 2>/dev/null | awk '{print $1}'); do + NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n) - PORTNUM=$(lsscsi -b | grep -v - | grep "\[${PORT}:" | wc -l) + PORTNUM=$(lsscsi -b 2>/dev/null | grep -v - | grep "\[${PORT}:" | wc -l) MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) done - [ $(lspci -d ::107 | wc -l) -gt 0 ] && MSG+="\nSerial Attached SCSI:\n" - for PCI in $(lspci -d ::107 | awk '{print $1}'); do - NAME=$(lspci -s "${PCI}" | sed "s/\ .*://") + [ $(lspci -d ::107 2>/dev/null | wc -l) -gt 0 ] && MSG+="\nSerial Attached SCSI:\n" + for PCI in $(lspci -d ::107 2>/dev/null | awk '{print $1}'); do + NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n) - PORTNUM=$(lsscsi -b | grep -v - | grep "\[${PORT}:" | wc -l) + PORTNUM=$(lsscsi -b 2>/dev/null | grep -v - | grep "\[${PORT}:" | wc -l) MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) done - [ $(lspci -d ::100 | wc -l) -gt 0 ] && MSG+="\nSCSI:\n" - for PCI in $(lspci -d ::100 | awk '{print $1}'); do - NAME=$(lspci -s "${PCI}" | sed "s/\ .*://") + [ $(lspci -d ::100 2>/dev/null | wc -l) -gt 0 ] && MSG+="\nSCSI:\n" + for PCI in $(lspci -d ::100 2>/dev/null | awk '{print $1}'); do + NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") PORTNUM=$(ls -l /sys/block/* 2>/dev/null | grep "${PCI}" | wc -l) [ ${PORTNUM} -eq 0 ] && continue MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) done [ $(ls -l /sys/class/scsi_host 2>/dev/null | grep usb | wc -l) -gt 0 ] && MSG+="\nUSB:\n" - for PCI in $(lspci -d ::c03 | awk '{print $1}'); do - NAME=$(lspci -s "${PCI}" | sed "s/\ .*://") + for PCI in $(lspci -d ::c03 2>/dev/null | awk '{print $1}'); do + NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") PORT=$(ls -l /sys/class/scsi_host 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/host//' | sort -n) - PORTNUM=$(lsscsi -b | grep -v - | grep "\[${PORT}:" | wc -l) + PORTNUM=$(lsscsi -b 2>/dev/null | grep -v - | grep "\[${PORT}:" | wc -l) [ ${PORTNUM} -eq 0 ] && continue MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) done [ $(ls -l /sys/class/mmc_host 2>/dev/null | grep mmc_host | wc -l) -gt 0 ] && MSG+="\nMMC:\n" - for PCI in $(lspci -d ::805 | awk '{print $1}'); do - NAME=$(lspci -s "${PCI}" | sed "s/\ .*://") + for PCI in $(lspci -d ::805 2>/dev/null | awk '{print $1}'); do + NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") PORTNUM=$(ls -l /sys/block/mmc* 2>/dev/null | grep "${PCI}" | wc -l) [ ${PORTNUM} -eq 0 ] && continue MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) done - [ $(lspci -d ::108 | wc -l) -gt 0 ] && MSG+="\nNVME:\n" - for PCI in $(lspci -d ::108 | awk '{print $1}'); do - NAME=$(lspci -s "${PCI}" | sed "s/\ .*://") + [ $(lspci -d ::108 2>/dev/null | wc -l) -gt 0 ] && MSG+="\nNVME:\n" + for PCI in $(lspci -d ::108 2>/dev/null | awk '{print $1}'); do + NAME=$(lspci -s "${PCI}" 2>/dev/null | sed "s/\ .*://") PORT=$(ls -l /sys/class/nvme 2>/dev/null | grep "${PCI}" | awk -F'/' '{print $NF}' | sed 's/nvme//' | sort -n) - PORTNUM=$(lsscsi -b | grep -v - | grep "\[N:${PORT}:" | wc -l) + PORTNUM=$(lsscsi -b 2>/dev/null | grep -v - | grep "\[N:${PORT}:" | wc -l) MSG+="\Zb${NAME}\Zn\nNumber: ${PORTNUM}\n" NUMPORTS=$((${NUMPORTS} + ${PORTNUM})) done @@ -1777,7 +1777,7 @@ function advancedMenu() { --no-items --menu "$(TEXT "Choose a user name")" 0 0 0 --file "${TMP_PATH}/menu" \ 2>${TMP_PATH}/resp [ $? -ne 0 ] && return - USER="$(cat "${TMP_PATH}/resp" | awk '{print $1}')" + USER="$(cat "${TMP_PATH}/resp" 2>/dev/null | awk '{print $1}')" [ -z "${USER}" ] && return while true; do DIALOG --title "$(TEXT "Advanced")" \ @@ -1794,7 +1794,7 @@ function advancedMenu() { mkdir -p "${TMP_PATH}/sdX1" for I in $(ls /dev/sd*1 2>/dev/null | grep -v "${LOADER_DISK_PART1}"); do mount "${I}" "${TMP_PATH}/sdX1" - OLDPASSWD="$(cat "${TMP_PATH}/sdX1/etc/shadow" | grep "^${USER}:" | awk -F ':' '{print $2}')" + OLDPASSWD="$(cat "${TMP_PATH}/sdX1/etc/shadow" 2>/dev/null | grep "^${USER}:" | awk -F ':' '{print $2}')" if [ -n "${NEWPASSWD}" -a -n "${OLDPASSWD}" ]; then sed -i "s|${OLDPASSWD}|${NEWPASSWD}|g" "${TMP_PATH}/sdX1/etc/shadow" sed -i "/^${USER}:/ s/\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\):\([^:]*\)/\1:\2:\3:\4:\5:\6:\7::\9/" "${TMP_PATH}/sdX1/etc/shadow" @@ -1916,7 +1916,7 @@ EOF --msgbox "$(TEXT "No disk selected!")" 0 0 return else - SIZE=$(df -m ${RESP} | awk 'NR==2 {print $2}') + SIZE=$(df -m ${RESP} 2>/dev/null | awk 'NR==2 {print $2}') if [ ${SIZE:-0} -lt 1024 ]; then DIALOG --title "$(TEXT "Advanced")" \ --msgbox "$(printf "$(TEXT "Disk %s size is less than 1GB and cannot be cloned!")" "${RESP}")" 0 0 @@ -1938,19 +1938,19 @@ EOF sleep 3 mkdir -p "${TMP_PATH}/sdX1" - mount "$(lsblk "${RESP}" -pno KNAME,LABEL | grep RR1 | awk '{print $1}')" "${TMP_PATH}/sdX1" + mount "$(lsblk "${RESP}" -pno KNAME,LABEL 2>/dev/null | grep RR1 | awk '{print $1}')" "${TMP_PATH}/sdX1" cp -vRf "${PART1_PATH}/". "${TMP_PATH}/sdX1/" sync umount "${TMP_PATH}/sdX1" mkdir -p "${TMP_PATH}/sdX2" - mount "$(lsblk "${RESP}" -pno KNAME,LABEL | grep RR2 | awk '{print $1}')" "${TMP_PATH}/sdX2" + mount "$(lsblk "${RESP}" -pno KNAME,LABEL 2>/dev/null | grep RR2 | awk '{print $1}')" "${TMP_PATH}/sdX2" cp -vRf "${PART2_PATH}/". "${TMP_PATH}/sdX2/" sync umount "${TMP_PATH}/sdX2" mkdir -p "${TMP_PATH}/sdX3" - mount "$(lsblk "${RESP}" -pno KNAME,LABEL | grep RR3 | awk '{print $1}')" "${TMP_PATH}/sdX3" + mount "$(lsblk "${RESP}" -pno KNAME,LABEL 2>/dev/null | grep RR3 | awk '{print $1}')" "${TMP_PATH}/sdX3" cp -vRf "${PART3_PATH}/". "${TMP_PATH}/sdX3/" sync umount "${TMP_PATH}/sdX3" @@ -2086,11 +2086,11 @@ function tryRecoveryDSM() { MODEL="" PRODUCTVER="" if [ -f "${DSMROOT_PATH}/.syno/patch/VERSION" ]; then - eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION | grep unique) - eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION | grep majorversion) - eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION | grep minorversion) - eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION | grep buildnumber) - eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION | grep smallfixnumber) + eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION 2>/dev/null | grep unique) + eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION 2>/dev/null | grep majorversion) + eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION 2>/dev/null | grep minorversion) + eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION 2>/dev/null | grep buildnumber) + eval $(cat ${DSMROOT_PATH}/.syno/patch/VERSION 2>/dev/null | grep smallfixnumber) if [ -n "${unique}" ]; then while read F; do M="$(basename ${F})" @@ -2099,7 +2099,7 @@ function tryRecoveryDSM() { [ "${unique}" = "${UNIQUE}" ] || continue # Found modelMenu "${M}" - done <<<$(find "${WORK_PATH}/model-configs" -maxdepth 1 -name \*.yml | sort) + done <<<$(find "${WORK_PATH}/model-configs" -maxdepth 1 -name \*.yml 2>/dev/null | sort) if [ -n "${MODEL}" ]; then productversMenu "${majorversion}.${minorversion}" if [ -n "${PRODUCTVER}" ]; then @@ -2667,7 +2667,7 @@ function updateMenu() { [ -n "${F}" ] && updateCKs "${F}" "${SILENT}" ;; u) - if ! tty | grep -q "/dev/pts" || [ -z "${SSH_TTY}" ]; then + if ! tty 2>/dev/null | grep -q "/dev/pts" || [ -z "${SSH_TTY}" ]; then MSG="" MSG+="$(TEXT "This feature is only available when accessed via ssh (Requires a terminal that supports ZModem protocol).\n")" MSG+="$(TEXT "Manually uploading update*.zip,addons*.zip,modules*.zip,rp-lkms*.zip,rr-cks*.zip to /tmp/ will skip the download.")" diff --git a/files/initrd/opt/rr/ramdisk-patch.sh b/files/initrd/opt/rr/ramdisk-patch.sh index 23e2b1d7..ddd18398 100755 --- a/files/initrd/opt/rr/ramdisk-patch.sh +++ b/files/initrd/opt/rr/ramdisk-patch.sh @@ -227,9 +227,9 @@ done # Reassembly ramdisk echo -n "." if [ "${RD_COMPRESSED}" == "true" ]; then - (cd "${RAMDISK_PATH}" && find . | cpio -o -H newc -R root:root | xz -9 --format=lzma >"${MOD_RDGZ_FILE}") >"${LOG_FILE}" 2>&1 || dieLog + (cd "${RAMDISK_PATH}" && find . 2>/dev/null | cpio -o -H newc -R root:root | xz -9 --format=lzma >"${MOD_RDGZ_FILE}") >"${LOG_FILE}" 2>&1 || dieLog else - (cd "${RAMDISK_PATH}" && find . | cpio -o -H newc -R root:root >"${MOD_RDGZ_FILE}") >"${LOG_FILE}" 2>&1 || dieLog + (cd "${RAMDISK_PATH}" && find . 2>/dev/null | cpio -o -H newc -R root:root >"${MOD_RDGZ_FILE}") >"${LOG_FILE}" 2>&1 || dieLog fi # Clean diff --git a/files/initrd/opt/rr/vmlinux-to-bzImage.sh b/files/initrd/opt/rr/vmlinux-to-bzImage.sh index bc380137..cbf78e4d 100755 --- a/files/initrd/opt/rr/vmlinux-to-bzImage.sh +++ b/files/initrd/opt/rr/vmlinux-to-bzImage.sh @@ -68,7 +68,7 @@ if [ ${KVER_MAJOR} -eq 4 ] || [ ${KVER_MAJOR} -eq 3 ]; then RUN_SIZE=$(objdump -h ${VMLINUX_MOD} | sh "${SCRIPT_DIR}/calc_run_size.sh") size_le ${RUN_SIZE} | dd of=${ZIMAGE_MOD} bs=15745210 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog - size_le $(($((16#$(crc32 "${ZIMAGE_MOD}" | awk '{print$1}'))) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog + size_le $(($((16#$(crc32 "${ZIMAGE_MOD}" | awk '{print $1}'))) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog else # Kernel version 5.x gzip -dc "${SCRIPT_DIR}/bzImage-template-v5.gz" >"${ZIMAGE_MOD}" @@ -78,5 +78,5 @@ else file_size_le "${VMLINUX_MOD}" | dd of="${ZIMAGE_MOD}" bs=34479132 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog # RUN_SIZE=`objdump -h ${VMLINUX_MOD} | sh "${SCRIPT_DIR}/calc_run_size.sh"` # size_le ${RUN_SIZE} | dd of=${ZIMAGE_MOD} bs=34626904 seek=1 conv=notrunc >"${LOG_FILE}" 2>&1 || dieLog - size_le $(($((16#$(crc32 "${ZIMAGE_MOD}" | awk '{print$1}'))) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog + size_le $(($((16#$(crc32 "${ZIMAGE_MOD}" | awk '{print $1}'))) ^ 0xFFFFFFFF)) | dd of="${ZIMAGE_MOD}" conv=notrunc oflag=append >"${LOG_FILE}" 2>&1 || dieLog fi diff --git a/files/initrd/opt/rr/zimage-patch.sh b/files/initrd/opt/rr/zimage-patch.sh index eb1e35fc..98540560 100755 --- a/files/initrd/opt/rr/zimage-patch.sh +++ b/files/initrd/opt/rr/zimage-patch.sh @@ -37,7 +37,7 @@ fi echo -n "." # Update HASH of new DSM zImage -HASH="$(sha256sum ${ORI_ZIMAGE_FILE} | awk '{print$1}')" +HASH="$(sha256sum ${ORI_ZIMAGE_FILE} | awk '{print $1}')" writeConfigKey "zimage-hash" "${HASH}" "${USER_CONFIG_FILE}" echo diff --git a/scripts/func.sh b/scripts/func.sh index 1456d93c..54ec67c7 100755 --- a/scripts/func.sh +++ b/scripts/func.sh @@ -272,8 +272,8 @@ function resizeImg() { INPUT_FILE="$(readlink -f "${INPUT_FILE}")" OUTPUT_FILE="$(readlink -f "${OUTPUT_FILE}")" - SIZE=$(($(du -m "${INPUT_FILE}" | awk '{print $1}')$(echo "${CHANGE_SIZE}" | sed 's/M//g; s/b//g'))) - [ -z "${SIZE}" -o "${SIZE}" -lt 0 ] && exit 1 + SIZE=$(($(du -m "${INPUT_FILE}" 2>/dev/null | awk '{print $1}')$(echo "${CHANGE_SIZE}" | sed 's/M//g; s/b//g'))) + [ "${SIZE:-0}" -lt 0 ] && exit 1 if [ ! "${INPUT_FILE}" = "${OUTPUT_FILE}" ]; then sudo cp -f "${INPUT_FILE}" "${OUTPUT_FILE}"