feat: switch cloud-hypervisor serial to PTY-direct mode

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Davíð Steinn Geirsson 2026-03-21 19:45:50 +00:00
parent 73fa020cf7
commit a0c28a5c57

View file

@ -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 \