Skip to content

Instantly share code, notes, and snippets.

@Informatic
Last active February 7, 2026 16:29
Show Gist options
  • Select an option

  • Save Informatic/49bd034d43e054bd1d8d4fec38c305ec to your computer and use it in GitHub Desktop.

Select an option

Save Informatic/49bd034d43e054bd1d8d4fec38c305ec to your computer and use it in GitHub Desktop.
How to use Windows 10 OEM license in libvirt VM (<smbios mode='host' /> does not work as Windows seems to verify UUID; apparmor/security configuration changes may be needed)
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
<!-- ... -->
<qemu:commandline>
<qemu:arg value='-acpitable'/>
<qemu:arg value='file=/some/path/slic.bin'/>
<qemu:arg value='-acpitable'/>
<qemu:arg value='file=/some/path/msdm.bin'/>
<qemu:arg value='-smbios'/>
<qemu:arg value='file=/some/path/smbios_type_0.bin'/>
<qemu:arg value='-smbios'/>
<qemu:arg value='file=/some/path/smbios_type_1.bin'/>
</qemu:commandline>
</domain>
#!/bin/bash
set -e
cat /sys/firmware/acpi/tables/SLIC > slic.bin
cat /sys/firmware/acpi/tables/MSDM > msdm.bin
dmidecode -t 0 -u | grep $'^\t\t[^"]' | xargs -n1 | perl -lne 'printf "%c", hex($_)' > smbios_type_0.bin
dmidecode -t 1 -u | grep $'^\t\t[^"]' | xargs -n1 | perl -lne 'printf "%c", hex($_)' > smbios_type_1.bin
@xrobau
Copy link

xrobau commented Feb 25, 2024

Note that this is a much better (and doesn't accidentally corrupt) way to generate the smbios extracts:

dmidecode -t 0 -u | awk '/^\t\t[0-9A-F][0-9A-F]( |$)/' | xxd -r -p > smbios_type_0.bin
dmidecode -t 1 -u | awk '/^\t\t[0-9A-F][0-9A-F]( |$)/' | xxd -r -p > smbios_type_1.bin

@xrobau
Copy link

xrobau commented Apr 7, 2024

@JL2210
Copy link

JL2210 commented Aug 23, 2024

slic doesn't exist for me, do I just remove it or is there an alternative?

@juresaht2
Copy link

slic doesn't exist for me, do I just remove it or is there an alternative?

This is expected for newer windows versions. Just skip it and use what you have.

@aarmea
Copy link

aarmea commented Feb 7, 2026

If you're using virt-manager and the configuration is not applying, or if you then drop down to virsh and it fails with:

$ virsh -c qemu:///system edit win11
error: XML document failed to validate against schema: Unable to validate doc against /usr/share/libvirt/schemas/domain.rng
Element domain has extra content: qemu:commandline

Failed. Try again? [y,n,i,f,?]: 

keep in mind that the xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0' at the root of the configuration is not fluff and is likely missing from yours. After I added this manually and booted the VM, Windows 11 activated for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment