PROXMOX and Windows ROK license for DELL

Stefano Giunchi

Renowned Member
Jan 17, 2016
92
15
73
51
Forlì, Italy
www.soasi.com
I have a new DELL server, and installed PROXMOX without a problem.
I'm now installing W2016 ROK, but it hangs in ROK license check, that is the check that it's real DELL hardware.

I already dealt with this problem with HP hardware, and resolved using SMBIOS parameters. With Dell I'm not able to make it work.

This is my dmidecode output:

System Information
Manufacturer: Dell Inc.
Product Name: PowerEdge T330
Version: Not Specified
Serial Number: 4xxxxxx2
UUID: 4C4C4544-0030-3910-8042-B4C04F465632
Wake-up Type: Power Switch
SKU Number: SKU=NotProvided;ModelName=PowerEdge T330
Family: Not Specified

And these are the settings.

upload_2019-4-9_19-44-0.png

I also tried to leave empty in Version, SKU and Family.
 
Hi,

this has nothing to do with Proxmox VE and I guess the only one who can help you is DELL or Mircosoft.
 
Hi Wolfgang,
thank you for your answer.

Maybe you have never dealt with ROK licenses, they work on bare metal but not with virtualized.
To make it to work, in vmware there is the Smbios.reflecthost flag in the vmx file, and Hyper-v has a solution too.
Proxmox also has the solution, which is to edit the SMBIOS1 options I have shown.
With HP hardware it works, with Dell it doesn't.

I *think* the problem stays in the fact that the manufacturer name is "Dell Inc.", with a space.
Anyway I tried to put "DellInc.", "Dell Inc.", "Dell\ Inc." in the configuration file (via interface spaces are forbidden), but it never works.

I will ask to Dell support too, but I think to have more chances to get and answer for this problem in this forum.

Stefano
 
I will ask to Dell support too, but I think to have more chances to get and answer for this problem in this forum.
I think your right.

The main problem is that this is all undocumented stuff.
 
With a bit of luck, I managed to make it work but I need a patch in PVE.
I explain everything, hoping to be helpful to others.

After mounting Dell's Win2016 ISO, and mounting sources/install.wim with wimtools, I opened the windows\system32\rok.vbe file using https://master.ayra.ch/vbs/vbs.aspx (online vbe decoder).
In the rok.vbs file I found that the error was in reading the value OEMStringArray.
I found out, using a win livecd in a vm, that that value is indeed empty, while in the host it contains some string values. These values are NOT used to check the license, it only need not to be empty.

Here I found that the value OEMStringArray is supported by qemu, using -smbios type=11. Starting kvm directly, with the next commandline, made it work (see last two lines):

/usr/bin/kvm \
-id 100 \
-name x \
-chardev socket,id=qmp,path=/var/run/qemu-server/100.qmp,server,nowait \
-mon chardev=qmp,mode=control \
-chardev socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5 \
-mon chardev=qmp-event,mode=control \
-pidfile /var/run/qemu-server/100.pid \
-daemonize \
-smp 1,sockets=1,cores=1,maxcpus=1 \
-nodefaults \
-boot menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg \
-vnc unix:/var/run/qemu-server/100.vnc,x509,password \
-no-hpet \
-cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,hv_synic,hv_stimer,enforce \
-m 8192 \
-device pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e \
-device pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f \
-device vmgenid,guid=c8271096-79e8-4548-b013-8bc84571bf9f \
-device piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2 \
-device usb-tablet,id=tablet,bus=uhci.0,port=1 \
-device VGA,id=vga,bus=pci.0,addr=0x2 \
-iscsi initiator-name=iqn.1993-08.org.debian:01:fe16a6772e8 \
-drive file=/var/lib/vz/template/iso/WIN_2016_ROK.iso,if=none,id=drive-ide0,media=cdrom,aio=threads \
-device ide-cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=200 \
-drive file=/var/lib/vz/template/iso/virtio-win.iso,if=none,id=drive-ide2,media=cdrom,aio=threads \
-device ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=201 \
-drive file=/var/lib/vz/images/100/vm-100-disk-0.qcow2,if=none,id=drive-virtio1,format=qcow2,cache=none,aio=native,detect-zeroes=on \
-device virtio-blk-pci,drive=drive-virtio1,id=virtio1,bus=pci.0,addr=0xb \
-netdev type=tap,id=net0,ifname=tap100i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown \
-device e1000,mac=FA:77:A8:4F:53:F1,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300 \
-rtc driftfix=slew,base=localtime \
-machine type=pc \
-global kvm-pit.lost_tick_policy=discard \
-smbios type=11,value=x \
-smbios type=1,uuid=94af935d-c66a-4224-a83e-855b8f00865d,manufacturer=Dell\ Computer\ Corporation


The started vm is manageable by proxmox. After win install, the -smbios type=11 is not needed anymore, but the -smbios type=1 can't be edited in webgui because it contains spaces, which are not allowed.

So I edited /etc/pve/qemu-server/100.conf manually:
balloon: 0
bootdisk: ide0
cores: 1
ide0: local:iso/WIN_2016_ROK.iso,media=cdrom,size=7897440K
ide2: local:iso/virtio-win.iso,media=cdrom,size=309208K
memory: 8192
name: x
net0: e1000=FA:77:A8:4F:53:F1,bridge=vmbr0
numa: 0
ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=94af935d-c66a-4224-a83e-855b8f00865d,manufacturer=Dell\ Computer \Corporation
sockets: 1
virtio1: local:100/vm-100-disk-0.qcow2,size=32G
vmgenid: c8271096-79e8-4548-b013-8bc84571bf9f

I need two patches from Proxmox:
1) allow spaces in smbios input fields (and replace with "\ " in conf files)
2) allow all smbios types supported by qemu

Stefano
 
  • Like
Reactions: enlar
could you open a feature request for the spaces in smbios? https://bugzilla.proxmox.com/
as for the type=11

you can do this via the 'args' parameter already just add
Code:
args: '-smbios type=11,value=x'
to the config (this also works with the api, e.g. qm set ID -args '-smbios type=11,value=x'
 
  • Like
Reactions: fireon
could you open a feature request for the spaces in smbios? https://bugzilla.proxmox.com/
as for the type=11
Yes, sure, I will do.
you can do this via the 'args' parameter already just add
Code:
args: '-smbios type=11,value=x'
to the config (this also works with the api, e.g. qm set ID -args '-smbios type=11,value=x'
Yes, it's what I did but it is removed if I enter in smbios webgui after that. I post it in bugzilla.
 
Yes, it's what I did but it is removed if I enter in smbios webgui after that. I post it in bugzilla.
that works here without problems, the 'args' line should not be touched by other setings
 
For me it's not working. When i only write string in arg option it's worked:
Code:
args: -smbios type=11,value=x -smbios type=1,uuid=356ff16d-4185-4f05-8513-bc6911d6b5ad,manufacturer=Dell\ Computer\ Corporation
and the rok.vbe script was in the boot.wmi image (WS2016-DC-STD_MUI_amd64_d5.iso)
 
Last edited:
With a bit of luck, I managed to make it work but I need a patch in PVE.
I explain everything, hoping to be helpful to others.

After mounting Dell's Win2016 ISO, and mounting sources/install.wim with wimtools, I opened the windows\system32\rok.vbe file using https://master.ayra.ch/vbs/vbs.aspx (online vbe decoder).
In the rok.vbs file I found that the error was in reading the value OEMStringArray.
I found out, using a win livecd in a vm, that that value is indeed empty, while in the host it contains some string values. These values are NOT used to check the license, it only need not to be empty.

Here I found that the value OEMStringArray is supported by qemu, using -smbios type=11. Starting kvm directly, with the next commandline, made it work (see last two lines):

/usr/bin/kvm \
-id 100 \
-name x \
-chardev socket,id=qmp,path=/var/run/qemu-server/100.qmp,server,nowait \
-mon chardev=qmp,mode=control \
-chardev socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5 \
-mon chardev=qmp-event,mode=control \
-pidfile /var/run/qemu-server/100.pid \
-daemonize \
-smp 1,sockets=1,cores=1,maxcpus=1 \
-nodefaults \
-boot menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg \
-vnc unix:/var/run/qemu-server/100.vnc,x509,password \
-no-hpet \
-cpu kvm64,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,hv_synic,hv_stimer,enforce \
-m 8192 \
-device pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e \
-device pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f \
-device vmgenid,guid=c8271096-79e8-4548-b013-8bc84571bf9f \
-device piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2 \
-device usb-tablet,id=tablet,bus=uhci.0,port=1 \
-device VGA,id=vga,bus=pci.0,addr=0x2 \
-iscsi initiator-name=iqn.1993-08.org.debian:01:fe16a6772e8 \
-drive file=/var/lib/vz/template/iso/WIN_2016_ROK.iso,if=none,id=drive-ide0,media=cdrom,aio=threads \
-device ide-cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=200 \
-drive file=/var/lib/vz/template/iso/virtio-win.iso,if=none,id=drive-ide2,media=cdrom,aio=threads \
-device ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=201 \
-drive file=/var/lib/vz/images/100/vm-100-disk-0.qcow2,if=none,id=drive-virtio1,format=qcow2,cache=none,aio=native,detect-zeroes=on \
-device virtio-blk-pci,drive=drive-virtio1,id=virtio1,bus=pci.0,addr=0xb \
-netdev type=tap,id=net0,ifname=tap100i0,script=/var/lib/qemu-server/pve-bridge,downscript=/var/lib/qemu-server/pve-bridgedown \
-device e1000,mac=FA:77:A8:4F:53:F1,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300 \
-rtc driftfix=slew,base=localtime \
-machine type=pc \
-global kvm-pit.lost_tick_policy=discard \
-smbios type=11,value=x \
-smbios type=1,uuid=94af935d-c66a-4224-a83e-855b8f00865d,manufacturer=Dell\ Computer\ Corporation


The started vm is manageable by proxmox. After win install, the -smbios type=11 is not needed anymore, but the -smbios type=1 can't be edited in webgui because it contains spaces, which are not allowed.

So I edited /etc/pve/qemu-server/100.conf manually:
balloon: 0
bootdisk: ide0
cores: 1
ide0: local:iso/WIN_2016_ROK.iso,media=cdrom,size=7897440K
ide2: local:iso/virtio-win.iso,media=cdrom,size=309208K
memory: 8192
name: x
net0: e1000=FA:77:A8:4F:53:F1,bridge=vmbr0
numa: 0
ostype: win10
scsihw: virtio-scsi-pci
smbios1: uuid=94af935d-c66a-4224-a83e-855b8f00865d,manufacturer=Dell\ Computer \Corporation
sockets: 1
virtio1: local:100/vm-100-disk-0.qcow2,size=32G
vmgenid: c8271096-79e8-4548-b013-8bc84571bf9f

I need two patches from Proxmox:
1) allow spaces in smbios input fields (and replace with "\ " in conf files)
2) allow all smbios types supported by qemu

Stefano
Works PERFECTLY with WS2022 ;) Thx!
 
I tried all this options but without succes in my case, Dell PowerEdge R550 and Windows 2022 Standard ROK. The single solution for me was to install a Windows 2022 Standard Evaluation, i used UEFI, TMP2.0. and i installed windows with graphic interface. Then I mount the ROK ISO on this running windows and start setup from ISO and reinstalled over and activated with ROK KIT. Finally i have Windows 2022 Standard ROK installed with UEFI BIOS.
 
Hi guys,

I'm relatively new to Proxmox and am really struggling to get this to work, so I'm hoping someone can help here.

I have tried the suggestions in this thread and with Win2022 Std and it still will not activate so I'm wondering what the people who have got Win2022 working did differently. Of course, it's very possible that I am missing something..

I have an ISO provided by Dell for a new PowerEdge R360 that is now running Proxmox 8.3.1. When I tried the args: method

Code:
args: -smbios type11,value=x
smbios1: uuid=4e937246-c134-4e41-a4fe-4aedee351b17,manufacturer=Dell\ Computer\ Corporation

in the conf file the vm will not start and gives the following error.

vm 101 - unable to parse value of 'smbios1' - format error
manufacturer: value does not match the regex pattern
swtpm_setup: Not overwriting existing state file.
kvm: -smbios type11,value=x: warning: short-form boolean option 'type11' deprecated
Please use type11=on instead
kvm: -smbios type11,value=x: Must specify type= or file=
stopping swtpm instance (pid 1373200) due to QEMU startup error

TASK ERROR: start failed: QEMU exited with code 1

I have also tried...

Code:
smbios1: uuid=4e937246-c134-4e41-a4fe-4aedee351b17,manufacturer=Dell\ Computer\ Corporation
smbios11: value=x

That didn't give any Proxmox errors but wouldn't activate either.

Any help would be very much appreciated.

Many thanks.
Gareth
 
This works for us.
 

Attachments

  • Captura desde 2024-12-13 09-16-15.png
    Captura desde 2024-12-13 09-16-15.png
    31.7 KB · Views: 59
I found these old notes which may help - I was using a Dell Optiplex Micro to host Proxmox running a server 2019 VM with ROK license.

Replace <vmid> with the actual guest VMID

Create the VM but do not start it

In the host shell

cp /etc/pve/qemu-server/<vmid>.conf to /etc/pve/qemu-server/<vmid>.conf.ori

nano /etc/pve/qemu-server/<vmid>.conf

edit this line

smbios1: uuid=26844c41-fa3d-4b3c-9204-abc123abc123s2

to

args: -smbios type=11,value=x -smbios type=1,uuid=26844c41-fa3d-4b3c-9204-abc123abc123s2,manufacturer=Dell\ Computer\ Corporation

where x is a literal 'x'

and save the .conf

Start the VM setup as usual
 
  • Like
Reactions: Digram
dmidecode
Ah yes thanks..

So I have started with a fresh VM and populated all of the SMBIOS settings with the data from dmidecode (including the UUID) via the Proxmox UI, installed Win2022 Std and it still says it's an invalid key and won't activate. Am I missing something out?

There was discussion in this forum about the UI not allowing spaces, is that still the case?