Many users encounter this confusing scenario where virtualization appears enabled in BIOS, but Linux KVM still reports it as disabled. The key error messages we're seeing:
[ 57.887352] kvm: disable TXT in the BIOS or activate TXT before enabling KVM
[ 57.887354] kvm: disabled by bios
The root cause is a conflict with Intel's Trusted Execution Technology (TXT). On older Dell systems like the OptiPlex 755, TXT takes precedence over VT-x. You'll need to either:
- Completely disable TXT in BIOS, or
- Activate TXT properly before enabling KVM (requires additional configuration)
Here's the most reliable fix for Dell OptiPlex systems:
# First verify your CPU actually supports VT-x
grep -E 'vmx|svm' /proc/cpuinfo
# Check loaded modules
lsmod | grep kvm
# Clear any stale modules
sudo modprobe -r kvm_intel
sudo modprobe -r kvm
# Reinsert with TXT workaround
sudo modprobe kvm ignore_msrs=1
sudo modprobe kvm_intel
To make these changes persistent across reboots:
# Create modprobe config file
echo "options kvm ignore_msrs=1" | sudo tee /etc/modprobe.d/kvm.conf
# Update initramfs (for Debian/Ubuntu)
sudo update-initramfs -u
After applying these changes, verify with:
# Check kernel messages
dmesg | grep kvm
# Verify KVM device exists
ls -la /dev/kvm
# Final check
kvm-ok
If the software workaround doesn't work, you'll need to:
- Enter BIOS setup (F2 during boot)
- Navigate to Security → Trusted Execution
- Disable "Trusted Execution Technology"
- Save changes and power cycle (full shutdown, not reboot)
Note: Some Dell systems hide these options under "Virtualization" → "VT for Direct I/O".
With older Intel Core 2 processors (like in OptiPlex 755), you might also need:
# For very old kernels
echo "options kvm-intel enable_apicv=0" | sudo tee /etc/modprobe.d/kvm-intel.conf
When working with KVM virtualization on older Dell hardware like the Optiplex 755, you might encounter a particularly frustrating scenario where VT (Virtualization Technology) appears enabled in BIOS but KVM stubbornly refuses to acknowledge it. The diagnostic messages tell two conflicting stories:
dmesg output shows:
[ 57.887352] kvm: disable TXT in the BIOS or activate TXT before enabling KVM
[ 57.887354] kvm: disabled by bios
Trusted Execution Technology (TXT) is often intertwined with VT-x on Dell systems. The BIOS might be reporting VT as "enabled" while actually keeping it disabled due to TXT-related security policies.
Try this diagnostic command to verify CPU flags:
grep -E 'vmx|svm' /proc/cpuinfo
# If no output appears, virtualization truly isn't available
Many pre-2010 Dell systems have a quirk where VT settings don't properly "stick" after BIOS changes. Here's the nuclear option that often works:
- Power off completely (not reboot)
- Unplug power cable for 2 minutes
- Enter BIOS and disable both VT and TXT
- Save and power off completely again
- Re-enable VT (leave TXT disabled)
- Perform another full power cycle
As a last resort, you can force KVM to ignore BIOS restrictions (not recommended for production):
# Edit /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="... ignore_msrs=1 kvm.ignore_bios=1"
# Then update grub and reboot
update-grub
reboot
If hardware VT remains unavailable, consider nested virt on a capable host:
# On the physical host:
modprobe kvm-intel nested=1
echo "options kvm-intel nested=1" > /etc/modprobe.d/kvm-intel.conf
Then configure your VM to pass through virtualization:
<cpu mode='host-passthrough' check='none'>
<feature policy='require' name='vmx'/>
</cpu>