Skip to main content
Last updated: July 31, 2026tiCrypt 2.17.9

VM Image Troubleshooting

If a VM image fails to register after deployment, access the VM directly via VNC to diagnose.

Prerequisites

Before booting the VM for debugging:

  1. In the tiCrypt frontend, set the video attribute to VNC on the hardware setup. This places the VM in debug mode.
  2. Set registration-timeout-debug to at least 1 hour.

All commands below require root access on the VM host.

VNC Access

List running VMs and find yours (typically the last entry):

virsh list

Get the VNC display port:

virsh vncdisplay vm-<uuid>

VNC binds to localhost. Forward the port to your desktop via SSH:

ssh -L 5901:localhost:5900 vm-host

Connect your VNC client to localhost:1. If the display port is :10, change the remote port to 5910.

Verification Checklist

Log in as Administrator via VNC and verify:

CheckHowExpected
NetworkipconfigIPv4 address assigned via DHCP
VM Installer serviceGet-Service ticrypt-vm-controllerRunning
Service logsEvent Viewer > Application logNo controller registration or download errors
SSH disabledGet-Service sshdStopped / Disabled. If running, it is blocking port 22
VirtIO driversDevice ManagerNo missing devices or driver warnings

RDP Troubleshooting (Linux)

If the VM Controller registers successfully but RDP connections fail, check the appropriate section below based on your remote desktop configuration.

XRDP (Rocky 8/9)

CheckCommandExpected
XRDP servicesystemctl status xrdpActive, listening on port 3389
XRDP sesmansystemctl status xrdp-sesmanActive, no errors
Port bindingss -tlnp | grep 3389xrdp process listening
XRDP logscat /var/log/xrdp-sesman.logNo session startup or authentication errors
D-Bussystemctl status dbusActive
SELinux denialsausearch -m avc -ts recentNo denials related to xrdp, Xorg, or /tmp/.X11-unix
Startup orderingsystemctl cat xrdp-sesmanDrop-in shows After=dbus.service network-online.target

The most common cause of intermittent XRDP failures is a missing systemd startup ordering override. If xrdp-sesman starts before D-Bus or NFS mounts are ready, connections fail non-deterministically. See the XRDP configuration guide for the required drop-in overrides.

GNOME Remote Desktop (Rocky 10+)

GRD uses headless mode with per-user provisioning via a controller.toml hook. Replace <user> with the tiCrypt-provisioned username.

CheckCommandExpected
GDM servicesystemctl status gdmActive
Headless sessionsystemctl status gnome-headless-session@<user>Active
Boot targetsystemctl get-defaultgraphical.target (not multi-user.target)
Port bindingss -tlnp | grep 3389gnome-remote-d process listening
GRD statussudo -u <user> XDG_RUNTIME_DIR=/run/user/$(id -u <user>) grdctl --headless statusRDP enabled, valid TLS cert paths
User lingerls /var/lib/systemd/linger/<user>File exists
SELinux denialsausearch -m avc -ts recentNo denials related to gnome-remote-desktop, gdm, mutter
Startup orderingsystemctl cat gdmDrop-in shows After=dbus.service network-online.target
Provisioning scriptls -la /usr/local/bin/ticrypt-grd-provision.shExists and is executable

The most common GRD issues are: (1) a missing graphical.target default, which prevents GDM from starting; (2) a missing or non-executable provisioning script; (3) SELinux denials blocking the headless session. See the GNOME Remote Desktop guide for the required configuration.

Modifying an Image In Place

To fix an image directly on the VM host without transferring it:

  1. Shut down all VMs using the image.
  2. Boot a temporary VM from the image:
virt-install --name fix-image \
--vcpus 1 --ram 1024 \
--controller type=scsi,model=virtio-scsi \
--disk /ticrypt/libvirt/pools/ticrypt-bricks/image.qcow2,bus=scsi,size=80 \
--import --graphics vnc --noautoconsole \
--network bridge=virbr0
  1. Connect via VNC (virsh vncdisplay fix-image), apply fixes, then shut down.
  2. Clean up: virsh undefine fix-image