From cd3b2642ab7de82059bb35eb7a2cc3592e421ac7 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 25 Sep 2023 01:15:17 +0200 Subject: [PATCH 1/6] docs: Update readme.md --- readme.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/readme.md b/readme.md index 32ac017..76e897a 100644 --- a/readme.md +++ b/readme.md @@ -16,7 +16,6 @@ QEMU in a docker container using KVM acceleration. - Multi-platform - KVM acceleration - - Graceful shutdown ## Usage @@ -38,7 +37,6 @@ services: ports: - 22:22 restart: on-failure - stop_grace_period: 1m ``` Via `docker run` From 9f85b5182ff330e056af054687028c1b2a4f188d Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 25 Sep 2023 01:16:43 +0200 Subject: [PATCH 2/6] Delete run/power.sh --- run/power.sh | 60 ---------------------------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 run/power.sh diff --git a/run/power.sh b/run/power.sh deleted file mode 100644 index 4e4f95f..0000000 --- a/run/power.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env bash -set -Eeuo pipefail - -# Configure QEMU for graceful shutdown - -QEMU_MONPORT=7100 -QEMU_POWERDOWN_TIMEOUT=8 - -_QEMU_PID=/run/qemu.pid -_QEMU_SHUTDOWN_COUNTER=/run/qemu.counter - -rm -f "${_QEMU_PID}" -rm -f "${_QEMU_SHUTDOWN_COUNTER}" - -_trap(){ - func="$1" ; shift - for sig ; do - trap "$func $sig" "$sig" - done -} - -_graceful_shutdown() { - - set +e - - [ ! -f "${_QEMU_PID}" ] && return - [ -f "${_QEMU_SHUTDOWN_COUNTER}" ] && return - - echo && info "Received $1 signal, shutting down..." - echo 0 > "${_QEMU_SHUTDOWN_COUNTER}" - - # Send the shutdown (system_powerdown) command to the QMP monitor - echo 'system_powerdown' | nc -q 1 -w 1 localhost "${QEMU_MONPORT}" > /dev/null - - while [ "$(cat ${_QEMU_SHUTDOWN_COUNTER})" -lt "${QEMU_POWERDOWN_TIMEOUT}" ]; do - - # Increase the counter - echo $(($(cat ${_QEMU_SHUTDOWN_COUNTER})+1)) > ${_QEMU_SHUTDOWN_COUNTER} - - # Try to connect to qemu - if echo 'info version'| nc -q 1 -w 1 localhost "${QEMU_MONPORT}" >/dev/null 2>&1 ; then - - sleep 1 - info "Shutting down, waiting... ($(cat ${_QEMU_SHUTDOWN_COUNTER})/${QEMU_POWERDOWN_TIMEOUT})" - - fi - - done - - echo && echo "❯ Quitting..." - echo 'quit' | nc -q 1 -w 1 localhost "${QEMU_MONPORT}" >/dev/null 2>&1 || true - - closeNetwork - - return -} - -_trap _graceful_shutdown SIGTERM SIGHUP SIGINT SIGABRT SIGQUIT - -MON_OPTS="-monitor telnet:localhost:${QEMU_MONPORT},server,nowait,nodelay" From 06202fdb74e3450780f6bf73f667df7ddb73cfd0 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 25 Sep 2023 01:21:08 +0200 Subject: [PATCH 3/6] fix: Run as foreground process --- run/run.sh | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) diff --git a/run/run.sh b/run/run.sh index 3d25082..27b77e8 100755 --- a/run/run.sh +++ b/run/run.sh @@ -38,9 +38,6 @@ fi # Initialize network . /run/network.sh -# Configure shutdown -. /run/power.sh - KVM_ERR="" KVM_OPTS="" @@ -73,16 +70,6 @@ ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ') trap - ERR -set -m -( - [[ "${DEBUG}" == [Yy1]* ]] && info "$VERS" && set -x - qemu-system-x86_64 ${ARGS:+ $ARGS} & echo $! > "${_QEMU_PID}" - { set +x; } 2>/dev/null -) -set +m - -#if (( KERNEL > 5 )) || ( (( KERNEL == 5 )) && (( MINOR > 2 )) ); then -# pidwait -F "${_QEMU_PID}" & wait $! -#else - -tail --pid "$(cat "${_QEMU_PID}")" --follow /dev/null & wait $! +[[ "${DEBUG}" == [Yy1]* ]] && info "$VERS" && set -x +qemu-system-x86_64 ${ARGS:+ $ARGS} +{ set +x; } 2>/dev/null From c164542f306bcab8a688140372195fa4ed6d8449 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 25 Sep 2023 01:22:19 +0200 Subject: [PATCH 4/6] fix: Run as foreground process --- run/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/run.sh b/run/run.sh index 27b77e8..a209d57 100755 --- a/run/run.sh +++ b/run/run.sh @@ -71,5 +71,5 @@ ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ') trap - ERR [[ "${DEBUG}" == [Yy1]* ]] && info "$VERS" && set -x -qemu-system-x86_64 ${ARGS:+ $ARGS} +exec qemu-system-x86_64 ${ARGS:+ $ARGS} { set +x; } 2>/dev/null From d6ffc014bd12771f166682acc3bbaa5200d5f3d0 Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 25 Sep 2023 01:26:20 +0200 Subject: [PATCH 5/6] Update check.yml --- .github/workflows/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 06d2a1c..28af5f1 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -11,4 +11,4 @@ jobs: - name: Run ShellCheck uses: ludeeus/action-shellcheck@master env: - SHELLCHECK_OPTS: -x -e SC2001 -e SC2002 -e SC2223 -e SC2034 -e SC2064 -e SC2317 + SHELLCHECK_OPTS: -x -e SC2001 -e SC2002 -e SC2223 -e SC2034 -e SC2064 -e SC2317 -e SC2093 From c4566f7f5efbf59f92dd38aa2622cc20fb1f44bc Mon Sep 17 00:00:00 2001 From: Kroese Date: Mon, 25 Sep 2023 01:28:05 +0200 Subject: [PATCH 6/6] fix: Run as foreground process --- run/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/run.sh b/run/run.sh index a209d57..ab3e472 100755 --- a/run/run.sh +++ b/run/run.sh @@ -65,7 +65,7 @@ MAC_OPTS="-machine type=q35,usb=off,dump-guest-core=off,hpet=off${KVM_OPTS}" SERIAL_OPTS="-serial mon:stdio -device virtio-serial-pci,id=virtio-serial0,bus=pcie.0,addr=0x3" EXTRA_OPTS="-device virtio-balloon-pci,id=balloon0 -object rng-random,id=rng0,filename=/dev/urandom -device virtio-rng-pci,rng=rng0" -ARGS="${DEF_OPTS} ${CPU_OPTS} ${RAM_OPTS} ${MAC_OPTS} ${MON_OPTS} ${SERIAL_OPTS} ${NET_OPTS} ${DISK_OPTS} ${EXTRA_OPTS} ${ARGUMENTS}" +ARGS="${DEF_OPTS} ${CPU_OPTS} ${RAM_OPTS} ${MAC_OPTS} ${SERIAL_OPTS} ${NET_OPTS} ${DISK_OPTS} ${EXTRA_OPTS} ${ARGUMENTS}" ARGS=$(echo "$ARGS" | sed 's/\t/ /g' | tr -s ' ') trap - ERR