Skip to main content

VM Image Troubleshooting

Last updated: July 31, 2026Latest Frontend Version: 2.17.4

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