如何设置VirtualBox bios UUID

我正在尝试在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"/>
点赞