From d4680fd57dde9b43ff7e662ba94f7a1743c3c23b Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 4 Jul 2023 12:52:49 +0200 Subject: [PATCH 1/6] fix: Wait for address --- run/network.sh | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/run/network.sh b/run/network.sh index 45982b7a..9ff37b73 100644 --- a/run/network.sh +++ b/run/network.sh @@ -31,7 +31,11 @@ configureDHCP() { error "and that the NET_ADMIN capability has been added to the container config: --cap-add NET_ADMIN" && exit 16 fi - ip link set "${VM_NET_TAP}" up + while [ ! ip link set "${VM_NET_TAP}" up ] + do + info "Waiting for address to become available..." + sleep 2 + done TAP_NR=$( Date: Tue, 4 Jul 2023 18:20:03 +0200 Subject: [PATCH 2/6] feat: Close network on shutdown --- run/network.sh | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/run/network.sh b/run/network.sh index 9ff37b73..2287cc25 100644 --- a/run/network.sh +++ b/run/network.sh @@ -140,7 +140,13 @@ configureNAT () { # QEMU Works with taps, set tap to the bridge created ip tuntap add dev "${VM_NET_TAP}" mode tap - ip link set "${VM_NET_TAP}" up promisc on + + while [ ! ip link set "${VM_NET_TAP}" up promisc on ] + do + info "Waiting for tap to become available..." + sleep 2 + done + ip link set dev "${VM_NET_TAP}" master dockerbridge # Add internet connection to the VM @@ -174,6 +180,19 @@ configureNAT () { return 0 } +closeNetwork () { + + ip link set "${VM_NET_TAP}" down + ip link delete "${VM_NET_TAP}" + + if [[ "${DHCP}" != [Yy1]* ]]; then + + ip link set dockerbridge down + ip link delete dockerbridge + + fi +} + # ###################################### # Configure Network # ###################################### From de75662d7652054a23c578a008ce2986175b68aa Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 4 Jul 2023 18:21:37 +0200 Subject: [PATCH 3/6] feat: Close network on shutdown --- run/power.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/run/power.sh b/run/power.sh index 30486f71..31022a2d 100644 --- a/run/power.sh +++ b/run/power.sh @@ -81,6 +81,8 @@ _graceful_shutdown() { echo && echo "❯ Quitting..." echo 'quit' | nc -q 1 -w 1 localhost "${QEMU_MONPORT}" >/dev/null 2>&1 || true + closeNetwork + return } From 0f8665494efc57d244a090bd8295720e24832f5a Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 4 Jul 2023 18:22:50 +0200 Subject: [PATCH 4/6] fix: Use pidwait only on recent kernels --- run/run.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/run.sh b/run/run.sh index 0d6fd478..ff4856f3 100755 --- a/run/run.sh +++ b/run/run.sh @@ -93,7 +93,7 @@ set -m ) set +m -if (( KERNEL > 5 )) || ( (( KERNEL == 5 )) && (( MINOR > 2 )) ); then +if (( KERNEL > 5 )) || ( (( KERNEL == 5 )) && (( MINOR > 10 )) ); then pidwait -F "${_QEMU_PID}" & wait $! else tail --pid "$(cat "${_QEMU_PID}")" --follow /dev/null & wait $! From c2661d92131bdb45a509b5952cf242f0894560ba Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 4 Jul 2023 18:36:38 +0200 Subject: [PATCH 5/6] feat: Close network on shutdown --- run/network.sh | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/run/network.sh b/run/network.sh index 2287cc25..122c1fc0 100644 --- a/run/network.sh +++ b/run/network.sh @@ -31,8 +31,7 @@ configureDHCP() { error "and that the NET_ADMIN capability has been added to the container config: --cap-add NET_ADMIN" && exit 16 fi - while [ ! ip link set "${VM_NET_TAP}" up ] - do + while ! ip link set "${VM_NET_TAP}" up; do info "Waiting for address to become available..." sleep 2 done @@ -132,8 +131,7 @@ configureNAT () { ip address add ${VM_NET_IP%.*}.1/24 broadcast ${VM_NET_IP%.*}.255 dev dockerbridge - while [ ! ip link set dockerbridge up ] - do + while ! ip link set dockerbridge up; do info "Waiting for address to become available..." sleep 2 done @@ -141,8 +139,7 @@ configureNAT () { # QEMU Works with taps, set tap to the bridge created ip tuntap add dev "${VM_NET_TAP}" mode tap - while [ ! ip link set "${VM_NET_TAP}" up promisc on ] - do + while ! ip link set "${VM_NET_TAP}" up promisc on; do info "Waiting for tap to become available..." sleep 2 done @@ -182,13 +179,18 @@ configureNAT () { closeNetwork () { - ip link set "${VM_NET_TAP}" down - ip link delete "${VM_NET_TAP}" - - if [[ "${DHCP}" != [Yy1]* ]]; then + if [[ "${DHCP}" == [Yy1]* ]]; then - ip link set dockerbridge down - ip link delete dockerbridge + ip link set "${VM_NET_TAP}" down || true + ip link delete "${VM_NET_TAP}" || true + + else + + ip link set "${VM_NET_TAP}" down promisc off || true + ip link delete "${VM_NET_TAP}" || true + + ip link set dockerbridge down || true + ip link delete dockerbridge || true fi } From 76e17722d790d046a3a207a21844c159737aa0a3 Mon Sep 17 00:00:00 2001 From: Kroese Date: Tue, 4 Jul 2023 18:46:16 +0200 Subject: [PATCH 6/6] style: Remove spaces --- run/disk.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/run/disk.sh b/run/disk.sh index f9f98e66..165364c7 100644 --- a/run/disk.sh +++ b/run/disk.sh @@ -47,7 +47,7 @@ if [ -f "${DATA}" ]; then REQ=$((DATA_SIZE-OLD_SIZE)) - # Check free diskspace + # Check free diskspace SPACE=$(df --output=avail -B 1 "${STORAGE}" | tail -n 1) if (( REQ > SPACE )); then