diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 28a5d3c5..1e197159 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -71,8 +71,12 @@ jobs: sudo timedatectl set-timezone "Europe/Berlin" sudo apt update - sudo apt install -y jq gawk cpio gettext libelf-dev qemu-utils busybox dialog curl sed - sudo snap install yq + sudo apt install -y locales busybox dialog gettext sed gawk jq curl + sudo apt install -y python-is-python3 python3-pip libelf-dev qemu-utils cpio xz-utils lz4 lzma bzip2 gzip zstd + # sudo snap install yq + if ! command -v yq &>/dev/null || ! yq --version 2>/dev/null | grep -q "v4."; then + sudo curl -kL https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 -o /usr/bin/yq && sudo chmod a+x /usr/bin/yq + fi df -h diff --git a/files/initrd/opt/arc/boot.sh b/files/initrd/opt/arc/boot.sh index 138e9caf..0ab3c517 100755 --- a/files/initrd/opt/arc/boot.sh +++ b/files/initrd/opt/arc/boot.sh @@ -220,28 +220,6 @@ done CMDLINE_LINE=$(echo "${CMDLINE_LINE}" | sed 's/^ //') # Remove leading space echo "${CMDLINE_LINE}" >"${PART1_PATH}/cmdline.yml" -function _bootwait() { - # Exec Bootwait to check SSH/Web connection - BOOTWAIT=5 - w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WB - MSG="" - while test ${BOOTWAIT} -ge 0; do - MSG="\033[1;33mAccess SSH/Web will interrupt boot...\033[0m" - echo -en "\r${MSG}" - 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;33mAccess SSH/Web detected and boot is interrupted.\033[0m\n" - rm -f WB WC - exit 0 - fi - sleep 1 - BOOTWAIT=$((BOOTWAIT - 1)) - done - rm -f WB WC - echo -en "\r$(printf "%$((${#MSG} * 2))s" " ")\n" - return 0 -} - # Boot DIRECTBOOT="$(readConfigKey "directboot" "${USER_CONFIG_FILE}")" if [ "${DIRECTBOOT}" = "true" ]; then @@ -308,7 +286,7 @@ elif [ "${DIRECTBOOT}" = "false" ]; then [ -f "${TMP_PATH}/qrcode_boot.png" ] && echo | fbv -acufi "${TMP_PATH}/qrcode_boot.png" >/dev/null 2>/dev/null || true fi - for T in $(w 2>/dev/null | grep -v 'TTY' | awk '{print $2}'); do + for T in $(busybox w 2>/dev/null | grep -v 'TTY' | awk '{print $2}'); do if [ -w "/dev/${T}" ]; then [ -n "${IPCON}" ] && echo -e "Use \033[1;34mhttp://${IPCON}:5000\033[0m or try \033[1;34mhttp://find.synology.com/ \033[0mto find DSM and proceed.\n\n\033[1;37mThis interface will not be operational. Wait a few minutes.\033[0m\n" >"/dev/${T}" 2>/dev/null || echo -e "Try \033[1;34mhttp://find.synology.com/ \033[0mto find DSM and proceed.\n\n\033[1;37mThis interface will not be operational. Wait a few minutes.\nNo IP found.\033[0m\n" >"/dev/${T}" 2>/dev/null fi diff --git a/files/initrd/opt/arc/include/functions.sh b/files/initrd/opt/arc/include/functions.sh index abcc6fe8..b886575e 100755 --- a/files/initrd/opt/arc/include/functions.sh +++ b/files/initrd/opt/arc/include/functions.sh @@ -589,4 +589,28 @@ function __umountNewBlDisk() { umount "${TMP_PATH}/sdX1" 2>/dev/null umount "${TMP_PATH}/sdX2" 2>/dev/null umount "${TMP_PATH}/sdX3" 2>/dev/null +} + +############################################################################### +# bootwait SSH/Web +function _bootwait() { + # Exec Bootwait to check SSH/Web connection + BOOTWAIT=5 + busybox w 2>/dev/null | awk '{print $1" "$2" "$4" "$5" "$6}' >WB + MSG="" + while test ${BOOTWAIT} -ge 0; do + MSG="\033[1;33mAccess SSH/Web will interrupt boot...\033[0m" + echo -en "\r${MSG}" + busybox 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;33mAccess SSH/Web detected and boot is interrupted.\033[0m\n" + rm -f WB WC + exit 0 + fi + sleep 1 + BOOTWAIT=$((BOOTWAIT - 1)) + done + rm -f WB WC + echo -en "\r$(printf "%$((${#MSG} * 2))s" " ")\n" + return 0 } \ No newline at end of file diff --git a/files/initrd/opt/arc/ramdisk-patch.sh b/files/initrd/opt/arc/ramdisk-patch.sh index a94d18f1..f82e9ca1 100755 --- a/files/initrd/opt/arc/ramdisk-patch.sh +++ b/files/initrd/opt/arc/ramdisk-patch.sh @@ -106,7 +106,7 @@ for PE in ${PATCHES[@]}; do echo "Patching with ${PF}" >>"${LOG_FILE}" ( cd "${RAMDISK_PATH}" - patch -p1 -i "${PF}" >>"${LOG_FILE}" 2>&1 # busybox patch and gun patch have different processing methods and parameters. + busybox patch -p1 -i "${PF}" >>"${LOG_FILE}" 2>&1 # busybox patch and gun patch have different processing methods and parameters. ) RET=$? [ ${RET} -eq 0 ] && break