Hello everyone,

as a follow-up to yesterdays coversation, I've uploaded the script to my private Git in case anyone wants to take a look at it.

It consists of the actual tool itself and an rc-script that supports start/stop functionality during system boot-up and shutdown. The configuration of the VMs needs to be provided in a (hard-coded) conf.d directory.

However, I want to mention upfront that it was put together hastily and only meets the minimum requirements. Nevertheless, it might serve as inspiration for more sophisticated tooling in the future.

Kind regards
Matthias

[1] https://forge.petermann-it.de/mpeterma/vmctl

On 23.05.23 16:38, Matthias Petermann wrote:
Hi Robert,

On 23.05.23 15:51, Robert Nestor wrote:

Commenting on your follow-up on Xen startup and how I considered doing this in NVMM.  I have a rudamentory script that I use to define/create guest systems which also includes some hooks for starting up guest systems. There’s not currently any way I found in NVMM to send in shutdown commands or instructions though which seem to be available in Xen and KVM.  I did put hooks in my script to backup and restore guest systems.

Assuming you are using Qemu as the frontend to nvmm you can redirect Qemus "monitor" console to a Unix domain socket.

I use this command in my scripts:

```
  MONITOR_SOCKET=/tmp/$VM_ID.monitor
  CONSOLE_SOCKET=/tmp/$VM_ID.console

 nohup qemu-system-x86_64 -name $VM_ID -machine pc-q35-7.0 -smp $VM_CORES -m $VM_RAM -accel nvmm \
                         -device virtio-balloon-pci,id=balloon0 \
                         -k de -boot cd -cdrom $VM_CDROM \
                         -machine graphics=off -display none -vga none \
                        -object rng-random,filename=/dev/urandom,id=viornd0 \
                         -device virtio-rng-pci,rng=viornd0 \
                         -object iothread,id=t0 \
                         $BLK \
                         -device virtio-net-pci,netdev=vioif0,mac=$VM_MAC \
                        -netdev tap,id=vioif0,ifname=$VM_NETIF,script=no,downscript=no \                         -chardev socket,id=monitor,path=$MONITOR_SOCKET,server=on,wait=off \
                         -monitor chardev:monitor \
                        -chardev socket,id=serial0,path=$CONSOLE_SOCKET,server=on,wait=off \
                         -serial chardev:serial0 \
                         -pidfile /tmp/$VM_ID.pid \
                         2>&1 | logger -p local0.notice &
```

Shutdown is possible by sendung the system_powerdown qemu monitor command:

```
MONITOR_SOCKET=/tmp/$VM_ID.monitor
echo "system_powerdown" | nc -N -U $MONITOR_SOCKET
echo ""
```

On my systems this result in an ACPI poweroff event which triggers the shutdown procedure in the NetBSD guest.

Kind regards
Matthias

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Reply via email to