Skip to content

Instantly share code, notes, and snippets.

@Informatic
Last active April 7, 2024 23:20
Show Gist options
  • Star 85 You must be signed in to star a gist
  • Fork 13 You must be signed in to fork a gist
  • Save Informatic/49bd034d43e054bd1d8d4fec38c305ec to your computer and use it in GitHub Desktop.
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
@sun-jiao
Copy link

sun-jiao commented Dec 2, 2023

There is no SLIC file in /sys/firmware/acpi/tables/ directory, while I can confirm that my computer has an MS Windows license from OEM.

图片
图片

@juresaht2
Copy link

@sun-jiao it depends on the hardware how it is implemented. It is also probably different for different OS versions (depending what OS the OEM licence is for). Technically all that is required for OEM licence to work is a machine unique ID (which is then used to activate over the internet), but some computers also have a digital signature that can be verified by the Microsoft cert.

@sun-jiao
Copy link

sun-jiao commented Dec 4, 2023

@sun-jiao it depends on the hardware how it is implemented. It is also probably different for different OS versions (depending what OS the OEM licence is for). Technically all that is required for OEM licence to work is a machine unique ID (which is then used to activate over the internet), but some computers also have a digital signature that can be verified by the Microsoft cert.

Thanks. I am wondering if it's possible to write a SLIC file manually based on the infos displayed in UEFI.

@juresaht2
Copy link

Thanks. I am wondering if it's possible to write a SLIC file manually based on the infos displayed in UEFI.

Why? If your licence is activated and the file does not exist then it is not used.

@sun-jiao
Copy link

sun-jiao commented Dec 4, 2023

Thanks. I am wondering if it's possible to write a SLIC file manually based on the infos displayed in UEFI.

Why? If your licence is activated and the file does not exist then it is not used.

OK, I have understood now.

@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

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