Q: Win10Pro VM Guest install / "Bios" Activation key?

fortechitsolutions

Renowned Member
Jun 4, 2008
434
46
93
Hi, a 'fun' question I wonder if anyone has experience with.

I'm setting up a small 'lenovo mid-level workstation' as a small on-prem server for a client. They need 2 x small VMs, one will be a linux ClearOS "NAS Fileserver" and the second will be Win10Pro for running Sage Simply Accounting. Whee. (lovely app, ha ha ha).

The Lenovo workstation I'm planning to use is a tower / i7 CPU / support for 32gb ram easily / decent solid system. With an add-in LSI Raid card it makes a decent little server (Pair of SSD drives for proxmox, and probably a pair of SATA drives for a 'bulk backup data mirror storage disk volume'). The system hardware -- comes out of box with a Win10Pro license bundled, which is 'burned into the bios' of the hardware / motherboard.

I am curious if anyone knows, is there any way I can make use of this Bios-embedded license key for my windows VM Guest install on proxmox? Or is that more or less impossible, because we're using a virtualized bios for Proxmox KVM Win10 guest, and no way to harvest/pass through this "Windows license key" from the underlying hardware. ie, just plan on spending the extra $200 or whatever for a vanilla Win10pro license key for install purpose for the VM... ?


Thanks,

Tim
 
I am curious if anyone knows, is there any way I can make use of this Bios-embedded license key for my windows VM Guest install on proxmox? Or is that more or less impossible, because we're using a virtualized bios for Proxmox KVM Win10 guest, and no way to harvest/pass through this "Windows license key" from the underlying hardware. ie, just plan on spending the extra $200 or whatever for a vanilla Win10pro license key for install purpose for the VM... ?

Technically yes, legally hmmm maybe, but most of the time no.

What you're looking for is the SLIC table inside of your BIOS, where the Windows key is stored. This SLIC table can be passed through to your VM and your Windows will recognise this. The process of getting this to work is cumbersome and takes a lot of time.

Best is to buy another license and just go with it. Unfortunately, this may also not be legally okay, but please contact your MS sales representative. Licensing issues has been discussed here:

https://forum.proxmox.com/threads/windows-10-licensing.47028/
 
Thanks for the reply. If you can point me to any hints on how to do the SLIC Table pass through from physical to virtual, that would be great. I am slightly confused how such a process can be time intensive (a few config stanzas for pass through in the KVM VM Config file most likely? But maybe there is more song and dance?)

Strictly speaking I am not going to fret about win10 license 'validity' to the degree beyond this. (ie, a Win10 instance running on the hardware with which the license was sold) - Strictly speaking I am not sure Microsoft officially condone Win10 as a VM Guest OS (unless possibly you have lots of extra Enterprise / Software Assurance licenses involved - see thread link below) so attempting to stay on the good side of MS License restrictions with 100% strict adherence in such a scenario is - generally a lost cause. Or at least it feels this way to me.

(I did find a thread on this topic, at https://community.spiceworks.com/ho...ws-10-with-virtualization-technologies-how-to and the level of complexity involved makes me just shake my head. )

(This kind of 'license hell' is part of why I love Linux stack environments / with open source license products. You don't end up spending a lot of time and effort going to agonizing trouble trying to determine what is suitable / and then attempting to adhere to extreme license complications).

Anyhoo. Many thanks for the reply; and if you could point me in correct direction WRT the SLIC Table Pass Through, that would be great.


Tim
 
Footnote, with your keywords and a bit of google digging, I located this thread,

https://lists.gnu.org/archive/html/qemu-devel/2011-03/msg03080.html

and I think I start to see why this is an exercise in "not quite futility, but only for the enthusiast'

ie, much simpler to just purchase a Win10Pro COA which can be typed in. Or make sure you purchase a machine which has such a COA affixed on the chassis. Ironically I know that "Win10Pro for recertified PC" hardware tends to be sold with such a physical sticker affixed, ie, simple and easy way to be sure I have a key available that works with no drama.

Lots of fun!
 
Last edited:
We used this:

Code:
$ cat /sys/firmware/acpi/tables/SLIC > slic_table
$ dmidecode | grep -A8 'System Information'

and put it in the vm.conf

Code:
args: -acpitable file=/path/to/slic_table
smbios1: uuid=<UUID>,manufacturer=<manufacturer>,product=<prodcut>,serial=<serial>
 
Thanks very much for this info. That looks pretty straight forward to try. If I end up getting this machine / doing this setup for the client (project is not a 'go' yet) - I will followup on this thread to confirm how this worked. Worst case I will just buy a suitable Win10Pro license after the fact.

Thanks,
Tim
 
  • Like
Reactions: AlexLup
Footnote on this thread, in case of any interest. I just was setting up another box today, and managed to get this working for the first time.
Process was slightly different than in the thread above, but general process is the same.

Precise steps used, which were a success:

setup the VM in proxmox
don't boot it yet
in root SSH session on proxmox, harvest the required info. This meant, more or less,

Code:
Get Info needed PART ONE:

root@proxmox:/data/images/100# dmidecode | grep -A8 'System Information'
System Information
        Manufacturer: LENOVO
        Product Name: 11DA001UUS
        Version: ThinkCentre M70t
        Serial Number: AB0EGVXE
        UUID: 1ab23c4f-8842-11eb-b3a5-c45526114300
        Wake-up Type: Power Switch
        SKU Number: LENOVO_MT_11DA_BU_Think_FM_ThinkCentre M70t
        Family: ThinkCentre M70t
       
        (NOTE VALUES ABOVE ARE SLIGHTLY TWEAKED FOR -privacy-)
root@proxmox:/data/images/100#


GET INFO NEEDED PART TWO:

THIS IS WHAT IT LOOKS LIKE IF YOU JUST CAT THE THING:
root@proxmox:/data/images/100# cat /sys/firmware/acpi/tables/MSDM
MSDMU▒LENOVOTC-M2T ABCD NHJ7Y-ABCD4-A2B4C-ABCD4-AB3CProot@proxmox:/data/images/100#

NOTE IN ABOVE I HAVE CHANGED ALPHA LETTERS TO HIDE MY ACTUAL VALUE. JUST TO ILLUSTRATE
THE STRING YOU EXPECT TO SEE HERE.

THEN HARVEST THE INFO INTO A FILE YOU WILL NEED TO REFER TO IN YOUR VM CONFIG:
root@proxmox:/data/images/100#
root@proxmox:/data/images/100# cat /sys/firmware/acpi/tables/MSDM > slic_table


FINALLY: WITH THIS ALL IN PLACE MANUALLY EDIT THE VM CONFIG FILE, APPROX THUS IS ENDGAME:

HINTS:

SLIC_TABLE FILE NOW EXIST:
root@proxmox:/data/images/100# ls -la /data/images/100/slic_table
-rw-r--r-- 1 root root 85 May 26 05:37 /data/images/100/slic_table

EDIT MY CONFIG FILE
root@proxmox:/data/images/100# vi /etc/pve/qemu-server/100.conf

GENERAL GOAL:

$ dmidecode | grep -A8 'System Information'

and put it in the vm.conf

Code:
args: -acpitable file=/path/to/slic_table
smbios1: uuid=<UUID>,manufacturer=<manufacturer>,product=<prodcut>,serial=<serial>


CONTENT THERE FOR REF HINT:
root@proxmox:/data/images/100# cat /etc/pve/qemu-server/100.conf

agent: 1
args: -acpitable file=/data/images/100/slic_table
boot: order=virtio0
cores: 12
ide2: data:iso/virtio-win-0.1.190.iso,media=cdrom,size=489986K
machine: pc-i440fx-5.2
memory: 6144
name: win10
net0: virtio=B2:B4:97:EE:B7:46,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=1ab23c4f-8842-11eb-b3a5-c45526114300,manufacturer=LENOVO,product=11DA001UUS,serial=AB0EGVXE
sockets: 1
virtio0: data:100/vm-100-disk-0.qcow2,size=500G
vmgenid: f5ce9f25-8ae1-443c-9652-4c2beccbecbc




root@proxmox:/data/images/100#

Once I did all this.

Boot the VM from my vanilla Win10 ISO. As I might have hoped, it did NOT ask me what flavour of win10 I was trying to install (Home, Pro, etc) during install process - ie - first hint that the new config was doing what I wanted, ie, it already knew what license was available so did not ask.

after install windows, get network connected / installed VirtIO drivers.

check status of windows 10 activation in settings - bingo - it shows a happy "windows is activated with digital license" message as per norm

so no intervention was required to get it to self-activate, it 'just worked'. so yay for things that work.

I will leave it to the philosophers or others who have more time than me, to debate if this is legit use of license for win10.
arguably last time I looked, it is hard to get a straight answer from MS on licensing, other than generally if you ask, they tell you that whatever you want is not valid and you must pay them more, to do what you want. For example running win10 as a VM Guest. On a non HyperV physical virtualizing host. Or goodness knows. So. I shall just wave my hands and say, this is purely for educational and testing use only, your mile may vary, this may work horribly for you, etc etc etc.

at very least I can find this info in future if I go looking for it again.


Tim
 
Last edited:
@tim, thank you, your instructions worked perfectly, and it was definitely less effort than buying a new license at eBay :cool:
 
Great news .. glad to hear the instructions work for someone else! :) thanks for confirming.

I also agree - it had bugged me (nothing serious, just 'annoyance') that I had trouble getting this working in the past :) So definitely cool :)

Tim
 
After re-installing Windows a few more times yesterday I can report that it seems to be sufficient to add the args for the slic-table - at least when using OVMF (UEFI). It could be that it is needed for SeaBIOS but my understanding of proxmox is yet limited.
On my HP Pavilion machine, Windows 10 installs without asking for a Key.
 
  • Like
Reactions: DarkM
Footnote on this thread, in case of any interest. I just was setting up another box today, and managed to get this working for the first time.
Process was slightly different than in the thread above, but general process is the same.

Precise steps used, which were a success:

setup the VM in proxmox
don't boot it yet
in root SSH session on proxmox, harvest the required info. This meant, more or less,

Code:
Get Info needed PART ONE:

root@proxmox:/data/images/100# dmidecode | grep -A8 'System Information'
System Information
        Manufacturer: LENOVO
        Product Name: 11DA001UUS
        Version: ThinkCentre M70t
        Serial Number: AB0EGVXE
        UUID: 1ab23c4f-8842-11eb-b3a5-c45526114300
        Wake-up Type: Power Switch
        SKU Number: LENOVO_MT_11DA_BU_Think_FM_ThinkCentre M70t
        Family: ThinkCentre M70t
      
        (NOTE VALUES ABOVE ARE SLIGHTLY TWEAKED FOR -privacy-)
root@proxmox:/data/images/100#


GET INFO NEEDED PART TWO:

THIS IS WHAT IT LOOKS LIKE IF YOU JUST CAT THE THING:
root@proxmox:/data/images/100# cat /sys/firmware/acpi/tables/MSDM
MSDMU▒LENOVOTC-M2T ABCD NHJ7Y-ABCD4-A2B4C-ABCD4-AB3CProot@proxmox:/data/images/100#

NOTE IN ABOVE I HAVE CHANGED ALPHA LETTERS TO HIDE MY ACTUAL VALUE. JUST TO ILLUSTRATE
THE STRING YOU EXPECT TO SEE HERE.

THEN HARVEST THE INFO INTO A FILE YOU WILL NEED TO REFER TO IN YOUR VM CONFIG:
root@proxmox:/data/images/100#
root@proxmox:/data/images/100# cat /sys/firmware/acpi/tables/MSDM > slic_table


FINALLY: WITH THIS ALL IN PLACE MANUALLY EDIT THE VM CONFIG FILE, APPROX THUS IS ENDGAME:

HINTS:

SLIC_TABLE FILE NOW EXIST:
root@proxmox:/data/images/100# ls -la /data/images/100/slic_table
-rw-r--r-- 1 root root 85 May 26 05:37 /data/images/100/slic_table

EDIT MY CONFIG FILE
root@proxmox:/data/images/100# vi /etc/pve/qemu-server/100.conf

GENERAL GOAL:

$ dmidecode | grep -A8 'System Information'

and put it in the vm.conf

Code:
args: -acpitable file=/path/to/slic_table
smbios1: uuid=<UUID>,manufacturer=<manufacturer>,product=<prodcut>,serial=<serial>


CONTENT THERE FOR REF HINT:
root@proxmox:/data/images/100# cat /etc/pve/qemu-server/100.conf

agent: 1
args: -acpitable file=/data/images/100/slic_table
boot: order=virtio0
cores: 12
ide2: data:iso/virtio-win-0.1.190.iso,media=cdrom,size=489986K
machine: pc-i440fx-5.2
memory: 6144
name: win10
net0: virtio=B2:B4:97:EE:B7:46,bridge=vmbr0,firewall=1
numa: 0
ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=1ab23c4f-8842-11eb-b3a5-c45526114300,manufacturer=LENOVO,product=11DA001UUS,serial=AB0EGVXE
sockets: 1
virtio0: data:100/vm-100-disk-0.qcow2,size=500G
vmgenid: f5ce9f25-8ae1-443c-9652-4c2beccbecbc




root@proxmox:/data/images/100#

Once I did all this.

Boot the VM from my vanilla Win10 ISO. As I might have hoped, it did NOT ask me what flavour of win10 I was trying to install (Home, Pro, etc) during install process - ie - first hint that the new config was doing what I wanted, ie, it already knew what license was available so did not ask.

after install windows, get network connected / installed VirtIO drivers.

check status of windows 10 activation in settings - bingo - it shows a happy "windows is activated with digital license" message as per norm

so no intervention was required to get it to self-activate, it 'just worked'. so yay for things that work.

I will leave it to the philosophers or others who have more time than me, to debate if this is legit use of license for win10.
arguably last time I looked, it is hard to get a straight answer from MS on licensing, other than generally if you ask, they tell you that whatever you want is not valid and you must pay them more, to do what you want. For example running win10 as a VM Guest. On a non HyperV physical virtualizing host. Or goodness knows. So. I shall just wave my hands and say, this is purely for educational and testing use only, your mile may vary, this may work horribly for you, etc etc etc.

at very least I can find this info in future if I go looking for it again.


Tim
Thanks Tim. Worked for me. Here is what i did using your reference. another point of view with same results for those looking.

1-get host system info. on proxmox PVE Shell run:

dmidecode | grep -A8 'System Information'

output:
System Information
Manufacturer: LENOVO
Product Name: 11DA001UUS
Version: ThinkCentre M70t
Serial Number: AB0EGVXE
UUID: 1ab23c4f-8842-11eb-b3a5-c45526114300
Wake-up Type: Power Switch
SKU Number: LENOVO_MT_11DA_BU_Think_FM_ThinkCentre M70t
Family: ThinkCentre M70t

2- create slic_table cat file:
Note: I used SLIC instead of MSDM. Should work either way I think.

cat /sys/firmware/acpi/tables/SLIC > /YOUR-PATH-TO-SAVE-FILE/slic_table

slic_table file should now be at:
/YOUR-PATH-TO-FILE/slic_table

3- edit VM (XXX.CONF) file
nano /etc/pve/qemu-server/<XXX>.conf

add the following to the ACTIVE configuration and edit PATH-TO-FILE & FILL smbios1 with info from step 1.

args: -acpitable file=/PATH-TO-FILE/slic_table
smbios1: uuid=<UUID>,manufacturer=<manufacturer>,product=<prodcut>,serial=<serial>

SAVE FILE
RESTART VM.
 
@fortechitsolutions
This looks really useful thank you ,
1 question , my manufacturer value and product value , have spaces in them . i.e Dell Inc. , Optiplex 7070 . Would I need to put single or double quotes around these ?

i.e smbios1: uuid=<UUID>,manufacturer='Dell Inc.',product='Optiplex 7070',serial=<serial>
or can I just use
smbios1: uuid=<UUID>,manufacturer=Dell Inc.,product=Optiplex 7070,serial=<serial>
 
  • Like
Reactions: mcgarrah
@fortechitsolutions
This looks really useful thank you ,
1 question , my manufacturer value and product value , have spaces in them . i.e Dell Inc. , Optiplex 7070 . Would I need to put single or double quotes around these ?

i.e smbios1: uuid=<UUID>,manufacturer='Dell Inc.',product='Optiplex 7070',serial=<serial>
or can I just use
smbios1: uuid=<UUID>,manufacturer=Dell Inc.,product=Optiplex 7070,serial=<serial>
Same question... I'll be testing it shortly.
 
Hi, I am not sure but you can test and if it works, you know the answer. Based on my re-reading of my own notes (ie, I forget) - it appears that the string dumped to file when I did this on a lenovo - did have spaces in the output - and I did not edit this output at all (ie, adding quotes was not done)

anyhoo. maybe you can post back what did/not work to this thread, so others can see answer for future reference.

-Tim
 
Hi. I feel like this might be a dumb question… I was able to follow the guides above, extracted the system information, got the key from the MSDM/SLIC table, edited the VM config - BUT I cannot start the VM as I get this error message “kvm: -acpitable file=slic_table: can't open file slic_table: No such file or directory”. Clearly I am doing something wrong when saving the slic_table file. The file’s contents look good, so it must be an issue with the file location.

Do I need to place it somewhere specific, create some shared directory for VM to access, etc.?

I’m new to Proxmox, this is just the 2nd VM I’m trying to spin up, so this is probably something really obvious.
 
Told you it was something obvious I had placed the file in the root directory… moving it to a different directory and adding the full file path did the trick. Thanks!
 
Followed @DarkM instructions which I found very clear and concise, and it worked perfectly. Even if you were already running the Windows VM beforehand without a product key, after you restart the VM it shows as activated. As for people who have spaces in the manufacturer or product name, you don’t have to put any quotes or anything in the string, just type whatever you need to. Thanks a lot for the instructions guys
 
As for people who have spaces in the manufacturer or product name, you don’t have to put any quotes or anything in the string, just type whatever you need to.
Yes, that's new and all Input will automatically be Base64-encoded in the vm configuration file.
 
Footnote on this thread, in case of any interest. I just was setting up another box today, and managed to get this working for the first time.
Process was slightly different than in the thread above, but general process is the same.

Precise steps used, which were a success:

<snip>


Tim

Tim! Thank you! I bought a brand new machine from Micro Center that had Win11 Pro pre-installed on it. I replaced the hard drive with a fresh one and followed your steps, and was able to install Win11 Pro fully licensed without a hitch (when I tried before, it said it needed to be activated). Thanks for the guide!
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!