diff --git a/modules/scripts.nix b/modules/scripts.nix index e0ba458..cf16e1b 100644 --- a/modules/scripts.nix +++ b/modules/scripts.nix @@ -1017,8 +1017,7 @@ let free_page_reporting = true; }; serial = { - mode = "Socket"; - socket = "/run/vmsilo/${vm.name}/serial.socket"; + mode = "Pty"; }; console = { mode = "Off"; @@ -1130,7 +1129,6 @@ let # Remove stale sockets rm -f /run/vmsilo/${vm.name}/cloud-hypervisor-control.socket - rm -f /run/vmsilo/${vm.name}/serial.socket rm -f /run/vmsilo/${vm.name}/vsock.socket # Step 1: Start cloud-hypervisor VMM in background @@ -1190,6 +1188,18 @@ let --api-socket /run/vmsilo/${vm.name}/cloud-hypervisor-control.socket \ create -- ${chConfigFile} + # Discover serial PTY allocated by cloud-hypervisor and symlink to standard path + CONSOLE_PTY=$(${chRemote} \ + --api-socket /run/vmsilo/${vm.name}/cloud-hypervisor-control.socket \ + info | ${pkgs.jq}/bin/jq -r '.config.serial.file') + if [ -z "$CONSOLE_PTY" ] || [ "$CONSOLE_PTY" = "null" ]; then + echo "Failed to discover serial PTY from cloud-hypervisor API" >&2 + kill $CH_PID 2>/dev/null || true + exit 1 + fi + ln -sf "$CONSOLE_PTY" /run/vmsilo/${vm.name}/console + chown ${toString userUid} /run/vmsilo/${vm.name}/console + # Step 3: Boot VM ${chRemote} \ --api-socket /run/vmsilo/${vm.name}/cloud-hypervisor-control.socket \