HowTo: SLIC Windows auto activation on Solaris 11.3 host

Discussions related to using VirtualBox on Solaris hosts.
Post Reply
bqbauer
Posts: 159
Joined: 14. Dec 2008, 22:04

HowTo: SLIC Windows auto activation on Solaris 11.3 host

Post by bqbauer »

There's an early thread here for doing this on Windows and Linux hosts, so I thought I'd create one for Solaris 11.3 hosts. The passthrough mechanism in VirtualBox for SLIC data doesn't appear to have been included in the Solaris version as of release 5.1.8. If it has, it doesn't work for me.

I got a new Dell Precision 5810 at work just a few weeks ago, which runs Solaris 11.3 great with no driver issues. Here is how I got Windows that came with the computer to auto-activate in a VM. I started with other instructions in the forums here and modified them for Solaris 11.3. Not tested with any earlier version of Solaris. I had to install Solaris with the BIOS in UEFI mode due to the 2TB disks--I don't know if this impacts the information below.

1. If you don't have acipdump installed on your host, install it:

sudo pkg install pkg:/diagnostic/acpidump

2a. Test acpidump to see if it can find your ACPI tables:

sudo acpidump

If it can find them, you'll get a long list of of the tables in hex. Go to step 3a if your ACPI tables are found.

If the above command fails, then you'll see something like this:

ACPI tables were not found. If you know location of RSD PTR table (from dmesg, etc), supply it with either --addr or -a option

2b. No problem. Go to the BOTTOM of your current /var/adm/messages (with vi, this is the shift-G command). Then search backwards for RSDP (in vi, that's ?RSDP). Because this number changes with each boot, it's important you get this data for your current boot. That's why I say search backward from the bottom. For me, this last entry reads:

Nov 18 17:48:29 hostname acpica: [ID 139599 kern.notice] ACPI: RSDP 0x 82F6184E0 000024 (v2 DELL )

You need the number after 0x, which in this example is 82F6184E0. Go to step 3b.

3a. Now get the SLIC table. For those with success in step 2a:

sudo acpidump -t SLIC -o slic.bin -b

3b. If you had to do step 2b, then use the number collected from your messages file (the 0x in this example appears to be optional, but I include it to be thorough):

sudo acpidump -a 0x82F6184E0 -t SLIC -o slic.bin -b

4. Create the Windows VM you need if you haven't done so already. Place the slic.bin file where it will be safe and accessible; I put it in the Virtualbox directory for the VM I've created.

5. Make sure VirtualBox and the VM in question are shut down. Then add the slic.bin file to the VM. My VM is called "Windows 7", and note the use of quotes:

VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/acpi/0/Config/CustomTable" "/export/home/myuser/.VirtualBox/Machines/Windows/Windows 7/slic.bin"

That should be all you need. The VM should auto-activate. However, I'm not sure if the commands below are necessary since I did them before I figured out the stuff above. If you need to make the VM look more like the original host because Windows won't activate, then continue.

Adding additional extradata fields:

Use the "smbios" command to retrieve data from the BIOS. I'm going to shortcut this rather than a step-by-step. You need to use the following to collect the various data seen below:

smbios -t0
smbios -t1
smbios -t2
smbios -t3
smbios -t4


For my system, below are the commands you create using the output of the smbios commands. The serial and UUID strings are modified for privacy, but I've made them consistent with each other as appropriate. Note that a couple commands have blank data, or else the strings will have VB defaults in them. The DmiSystemSKU value includes the attribute keyword "string" or it won't boot. Again, note the quotation marks, and some lines may wrap:

VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" "Dell Inc."
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "A14"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseDate" "07/01/2016"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMajor" "0"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMinor" "0"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMajor" "0"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMinor" "0"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "Dell Inc."
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct" "Precision Tower 5810"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiChassisAssetTag" ""
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiProcManufacturer" "Intel"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiProcVersion" "Intel(R) Xeon(R) CPU E5-1630 v4 @ 3.70GHz"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemUuid" "11111c2b-2222-3333-8888-d1e012345678"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "2DD3LM3"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSKU" "string:0617"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemFamily" ""
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBoardVendor" "Dell Inc."
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBoardProduct" "0HHV7N"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBoardVersion" "A00"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiBoardSerial" "/2DD3LM3/CN8220088D13S2/"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiChassisVendor" "Dell Inc."
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiChassisType" "0x7"
VBoxManage setextradata "Windows 7" "VBoxInternal/Devices/pcbios/0/Config/DmiChassisSerial" "2DD3LM3"


All of this is the grand total of what I did. I hope other Solaris users find this helpful. I couldn't find this documented, so if it is, I apologize for the redundancy.
Last edited by bqbauer on 19. Nov 2016, 08:31, edited 3 times in total.
bqbauer
Posts: 159
Joined: 14. Dec 2008, 22:04

Re: HowTo: SLIC Windows auto activation on Solaris 11.3 host

Post by bqbauer »

I should also mention that extracting the Windows activation code from the MSDM table, as I've seen posted on Linux forums, for me resulted in a correct looking sequence, but one that the OEM install image from Dell would not accept. Couldn't enter the third letter, which Windows says is an invalid character (an "N" for me). Perhaps it would work for Windows 10, but not Windows 7.

If interested, the command would be "acpidump -t MSDM", or correctly modified as outlined in the original post just as for extracting the SLIC table. The Windows activation code is at the end of this table. Quite obvious when you see the sequence, but is it valid for anything by itself...?
PCab50
Posts: 2
Joined: 2. Nov 2015, 20:25

Re: HowTo: SLIC Windows auto activation on Solaris 11.3 host

Post by PCab50 »

Is there any progress on what I asked in another thread: I need both SLIC and MSDM as CustomTables?!? It's because I use a Windows 7 downgrade on a laptop with Windows 8 OEM license.
bqbauer
Posts: 159
Joined: 14. Dec 2008, 22:04

Re: HowTo: SLIC Windows auto activation on Solaris 11.3 host

Post by bqbauer »

PCab50 wrote:Is there any progress on what I asked in another thread: I need both SLIC and MSDM as CustomTables?!? It's because I use a Windows 7 downgrade on a laptop with Windows 8 OEM license.
I (the person that created this thread) am but a mere mortal and not one of the developers. Hopefully one of them will chime in.
Post Reply