我正在尝试在VirtualBox中使用我的本机
Windows安装,并且由于它具有OEM许可证,我需要重用bios UUID才能使激活工作.
一些系统信息:
操作系统:Arch Linux,内核4.1.6-1
Virtualbox:5.0.4_OSEr102546
本机使用的原始vmdk磁盘仅限于本机Windows安装使用的6个分区.
我已经为很多dmi数据应用了诸如modifyvm –hardwareuuid和setextradata之类的命令.
配置中的相关行是:
<ExtraData>
...
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardLocInChass" value="Type2 - Board Chassis Location"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" value="Lancer 5A5"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardSerial" value="string:1052326401165"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardVendor" value="LENOVO"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiBoardVersion" value="31900058WIN"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiChassisSerial" value="YB10465037"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiChassisVendor" value="LENOVO"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiChassisVersion" value="Lenovo Z50-70"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiProcManufacturer" value="Intel(R) Corporation"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiProcVersion" value="Intel(R) Core(TM) i5-4210U CPU @ 1.70GHz"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemUuid" value="1abbb2fc-c938-11e4-a961-68f728a77e71"/>
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/UUID" value="bytes:Gruy/Mk4EeSpYWj3KKd+cQ=="/><!-- UUID in BASE64 -->
</ExtraData>
<Hardware version="2" uuid="{1abbb2fc-c938-11e4-a961-68f728a77e71}">
<CPU count="1" hotplug="false">
<HardwareVirtEx enabled="true"/>
<HardwareVirtExNestedPaging enabled="true"/>
<HardwareVirtExVPID enabled="true"/>
<HardwareVirtExUX enabled="true"/>
<PAE enabled="true"/>
<LongMode enabled="true"/>
<HardwareVirtExLargePages enabled="false"/>
<HardwareVirtForce enabled="false"/>
</CPU>
<Memory RAMSize="2560" PageFusion="false"/>
<Firmware type="EFI"/>
<HID Pointing="USBTablet" Keyboard="PS2Keyboard"/>
<HPET enabled="false"/>
<Chipset type="PIIX3"/>
Vboxmanage showvminfo返回以下行:
Hardware UUID: 1abbb2fc-c938-11e4-a961-68f728a77e71
正如您所看到的,我使用了VirtualBox的hardwareuuid设置,dmi设置DmiSystemUuid和UUID(这个我必须从日志中进行逆向工程并找出如何通过它 – 通过base64和转换为字节).
然而,当我运行机器时,VirtualBox以某种方式决定它更清楚并使用机器的初始UUID.它在日志中显示(最后一行):
00:00:00.586671 ************************* CFGM dump *************************
00:00:00.586674 [/] (level 0)
00:00:00.586680 CSAMEnabled <integer> = 0x0000000000000001 (1)
00:00:00.586683 CpuExecutionCap <integer> = 0x0000000000000064 (100)
00:00:00.586686 EnablePAE <integer> = 0x0000000000000001 (1)
00:00:00.586687 HMEnabled <integer> = 0x0000000000000001 (1)
00:00:00.586689 MemBalloonSize <integer> = 0x0000000000000000 (0)
00:00:00.586690 Name <string> = "Windows 8" (cb=10)
00:00:00.586692 NumCPUs <integer> = 0x0000000000000001 (1)
00:00:00.586693 PATMEnabled <integer> = 0x0000000000000001 (1)
00:00:00.586695 PageFusionAllowed <integer> = 0x0000000000000000 (0)
00:00:00.586696 RamHoleSize <integer> = 0x0000000020000000 (536 870 912, 512 MB)
00:00:00.586699 RamSize <integer> = 0x00000000a0000000 (2 684 354 560, 2 GB)
00:00:00.586701 RawR0Enabled <integer> = 0x0000000000000001 (1)
00:00:00.586702 RawR3Enabled <integer> = 0x0000000000000001 (1)
00:00:00.586704 TimerMillies <integer> = 0x000000000000000a (10)
00:00:00.586705 UUID <bytes> = "fc b2 bb 1a 38 c9 e4 11 a9 61 68 f7 28 a7 7e 71" (cb=16)
不幸的是,这个是重要的UUID.在Windows 8中,如果我使用wmic命令,它会报告UUID:fcb2bb1a-38c9-e411-a961-68f728a77e71,而我想要1abbb2fc-c938-11e4-a961-68f728a77e71.
我已经推断出它可能会被从root开始的extradata操纵,所以我试图排成一行:
<ExtraDataItem name="VBoxInternal/UUID" value="bytes:Gruy/Mk4EeSpYWj3KKd+cQ=="/>
这将日志值更改为正确的值,但是wmic仍然报告以“fc”开头的那个. Windows激活也无法正常工作.
所以现在我真的没有想法.
有没有人成功地设置了这个,如果有的话怎么样?
最佳答案 重要的是:
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemUuid" value="1abbb2fc-c938-11e4-a961-68f728a77e71"/>
但是前四个组中的字节顺序是相反的,因此需要将其写为:
<ExtraDataItem name="VBoxInternal/Devices/efi/0/Config/DmiSystemUuid" value="fcb2bb1a-38c9-e411-a961-68f728a77e71"/>