summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorHelmut Grohne <helmut@subdivi.de>2023-06-19 13:24:13 +0200
committerJohannes Schauer Marin Rodrigues <josch@mister-muffin.de>2023-06-19 13:32:41 +0200
commit8ce786ab8f39f2d7570355a5bbf26bc0669258d3 (patch)
tree61f9132c2d515add41d8e28d732f8763d3e4fc47 /bin
parent7d0b160531d66b0f8790f4034902904c7aa178bb (diff)
downloaddebvm-8ce786ab8f39f2d7570355a5bbf26bc0669258d3.tar.gz
debvm-run: avoid hard coding fds for kernel and initrd
qemu makes heavy use of fd passing, so we better avoid user-passed fds.
Diffstat (limited to 'bin')
-rwxr-xr-xbin/debvm-run16
1 files changed, 12 insertions, 4 deletions
diff --git a/bin/debvm-run b/bin/debvm-run
index 03cde3b..f3811ad 100755
--- a/bin/debvm-run
+++ b/bin/debvm-run
@@ -246,8 +246,16 @@ esac
KERNEL_CMDLINE="root=LABEL=$IMAGE_LABEL rw"
NETDEV="user,id=net0"
-exec 8<"$KERNELTMP"
-exec 9<"$INITRDTMP"
+KERNELFD=3
+while test -h "/proc/self/fd/$KERNELFD"; do
+ KERNELFD=$((KERNELFD + 1))
+done
+INITRDFD=$((KERNELFD + 1))
+while test -h "/proc/self/fd/$INITRDFD"; do
+ INITRDFD=$((INITRDFD + 1))
+done
+eval exec "$KERNELFD<"'"$KERNELTMP"'
+eval exec "$INITRDFD<"'"$INITRDTMP"'
rm -f "$KERNELTMP" "$INITRDTMP"
KERNELTMP=
INITRDTMP=
@@ -256,8 +264,8 @@ set -- \
-no-user-config \
-name "debvm-run $IMAGE" \
-m 1G \
- -kernel "/proc/self/fd/8" \
- -initrd "/proc/self/fd/9" \
+ -kernel "/proc/self/fd/$KERNELFD" \
+ -initrd "/proc/self/fd/$INITRDFD" \
-drive "media=disk,format=raw,discard=unmap,file=$IMAGE,if=virtio,cache=unsafe" \
-object rng-random,filename=/dev/urandom,id=rng0 \
"$@"