From b909555ef3e9cbdd5c38aede84fdbf73436e2ba0 Mon Sep 17 00:00:00 2001 From: Kroese Date: Sun, 16 Aug 2026 06:18:04 +0200 Subject: [PATCH] fix: Make RNG device configurable (#1381) --- src/config.sh | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/config.sh b/src/config.sh index 8a10b47..ef002d6 100644 --- a/src/config.sh +++ b/src/config.sh @@ -1,13 +1,11 @@ #!/usr/bin/env bash set -Eeuo pipefail +: "${RNG:=""}" : "${QMP:=""}" : "${UUID:=""}" : "${MONITOR:=""}" -DEF_OPTS="-nodefaults -boot strict=on" -DEV_OPTS="" - configureProcessor() { # Expose one thread per core in a single socket; DSM licensing and topology @@ -60,24 +58,31 @@ configureVirtioDevices() { local bus bus=$(getPciBus) + DEV_OPTS="" + + if ! disabled "$RNG"; then + DEV_OPTS+=" -object rng-random,id=objrng0,filename=/dev/urandom" + DEV_OPTS+=" -device virtio-rng-pci,rng=objrng0,id=rng0,bus=$bus,addr=0x1c" + fi + # Keep the existing balloon device by default. When dynamic ballooning is # enabled, expose guest statistics and a dedicated QMP control socket. if ! enabled "${BALLOONING:-}"; then - DEV_OPTS="-device virtio-balloon-pci,id=balloon0,bus=$bus,addr=0x4" + DEV_OPTS+=" -device virtio-balloon-pci,id=balloon0,bus=$bus,addr=0x4" else MON_OPTS+=" -qmp unix:${BALLOONING_SOCKET},server=on,wait=off" - DEV_OPTS="-device virtio-balloon-pci,free-page-reporting=on,guest-stats-polling-interval=1,id=balloon0,bus=$bus,addr=0x4" + DEV_OPTS+=" -device virtio-balloon-pci,free-page-reporting=on,guest-stats-polling-interval=1,id=balloon0,bus=$bus,addr=0x4" fi - DEV_OPTS+=" -object rng-random,id=objrng0,filename=/dev/urandom" - DEV_OPTS+=" -device virtio-rng-pci,rng=objrng0,id=rng0,bus=$bus,addr=0x1c" + DEV_OPTS="${DEV_OPTS# }" return 0 } buildArguments() { - ARGS="$DEF_OPTS $CPU_OPTS $RAM_OPTS $MAC_OPTS $DISPLAY_OPTS $MON_OPTS $SERIAL_OPTS $NET_OPTS $DISK_OPTS $BOOT_OPTS $DEV_OPTS $ARGUMENTS" + local default="-nodefaults -boot strict=on" + ARGS="$default $CPU_OPTS $RAM_OPTS $MAC_OPTS $DISPLAY_OPTS $MON_OPTS $SERIAL_OPTS $NET_OPTS $DISK_OPTS $BOOT_OPTS $DEV_OPTS $ARGUMENTS" # Collapse whitespace after optional argument groups are assembled so empty # features cannot leave malformed spacing in the final QEMU command.