PROXMOX and Windows ROK license for DELL

Stefano Giunchi

Renowned Member
Jan 17, 2016
88
13
73
50
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.
 

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!