如何在VirtualBox中更改BIOS序列号?


17

VirtualBox将每个VM实例的BIOS序列号设置为0。似乎可以更改某些BIOS设置,但是我没有看到任何直接引用该序列号的东西。

有人可以建议一种方法吗?


1
您要这样做的任何特殊原因?
贾里德·哈雷

1
是。我有一个PC库存软件工具,该工具使用BIOS序列号唯一地标识计算机。它适用于物理硬件和其他供应商提供的VM,但不知道如何处理多个VirtualBox VM。
罗杰

编辑了我的答案以反映您发现的错误。
矮子

你有什么消息吗,罗杰?很想知道结果如何。
矮子

我从未确定如何去做。我在VirtualBox论坛上收到了一些答复,但没有发现任何有效的方法。如果我遇到了答案,请确保在此处添加更新。
罗杰

Answers:


22

http://www.virtualbox.org/manual/ch09.html#changedmi

对此确实有详细的答案。

您可以通过以下操作设置BIOS序列号:

VBoxManage setextradata "VM name" 
"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "System Serial"

您收到的错误是由于未将序列号设置为字符串值引起的,如果您使用的是纯数字,则应在其前面加上string:如下代码:

VBoxManage setextradata "VM name" 
"VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "string:1234"

注意:如果您的VM配置为使用EFI固件,则需要在密钥中用efi替换pcbios。


3
请注意,这些说明适用于使用BIOS的系统。如果您的系统使用EFI(由“设置->系统->主板->启用EFI”控制),则需要在上述命令中将“ pcbios”替换为“ efi”。
ntc2

8

并非来自任何外部设置。但是您可以从代码中自己构建:

源文件: DevPcBios.cpp
行: 1014READCFGSTR("DmiSystemSerial", pszDmiSystemSerial, "0");

将“ 0”更改为所需的任何值。


编辑:您显然可以使用VBoxManage setextradata。过去,我曾将它用于其他类型的配置(与BIOS无关),并且未测试此特定设置。搏一搏:

VBoxManage setextradata *YourVMName* VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial "*yourserial*"

否则...恢复为源代码编辑和构建。

祝你好运。


1
嗯 谢谢-非常接近,但还没有。我试过这个:“ c:\ Program Files \ Sun \ VirtualBox \ VBoxManage.exe” setextradata“ Demo Server” VBoxInternal / Devices / pcbios / 0 / Config / DmiSerial“ 123”似乎可以用,但是当我启动VM时,收到此错误消息:无法启动虚拟机演示服务器。设备pcbios设备(VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES)的配置无效。创建VM(VERR_PDM_DEVINS_UNKNOWN_CFG_VALUES)时发生未知错误。删除并重新创建计算机定义可修复该问题,因此不会造成任何危害。我认为您真的很亲密-还有其他建议吗?
罗杰

嗯...您是否将命令原样复制/粘贴到注释框中?因为/ Config和/ DmiSerial之间没有备用。无论如何,我都会进一步探讨。猜猜我将不得不安装VirtualBox。到目前为止,仅依靠我的笔记:)
矮人

呸! 我的头 我发布了相关的代码行,然后甚至没有将其与我的旧笔记进行对照。不是/ DmiSerial。从1.5版到现在,它已被重命名。现在是/ DmiSystemSerial
矮人

谢谢,矮人,为您提供的所有帮助。我尝试用DmiSystemSerial替换DmiSerial,重新运行命令行(没有空格,这是一个错字),并得到了相同的错误。
罗杰

据我所知,这仅意味着还没有完全实施,您不能以这种方式进行。在这一点上,我恐怕不再有用。您应该去VirtualBox论坛,然后从那里尝试。他们是优秀的人,您将获得更明智的答案。但是,我很想知道最终的结果,如果您愿意的话,并在出现这种情况时提出自己的问题的答案。祝一切顺利。
矮人

3

如果运行该命令,并得到Roger引用的错误,则需要通过运行不带最后一个参数(VALUE)的命令来撤消该命令。

这将删除导致错误的条目。

如果不确定最后一个令人讨厌的命令是什么,请在特定VM的VirtualMachines文件夹的根目录中打开~~~ .vbox(XML)文件,然后查看EXTRADATA部分。

对vboxmanage运行命令行调用是修改它们的最佳方法。编辑xml文件不会持续100%的时间。


2

接受的答案没有为我正确更新序列号;相反,我按照以下步骤成功更新了序列号。请注意,来宾操作系统为macOS,主机为Windows。

注意:您必须在运行此命令之前关闭virtualbox才能保存它。

  1. 以管理员身份打开Windows命令提示符
  2. cd "C:\Program Files\Oracle\VirtualBox\"
  3. VBoxManage.exe setextradata "VM NAME" "VBoxInternal/Devices/efi/0/Config/DmiSystemSerial" "SERIAL_HERE" 请参阅源代码。*
    不知道为什么pcbios命令不起作用,而efi起作用了。

有用的网址

  • 如果您找不到有效的序列号,请按照此处的说明进行操作
  • 如果您不确定您的虚拟机名称是运行的VBoxManage.exe list vms

1
如果您需要“ efi”并使用“ pcbios”接受了答案,这可能是因为您使用的是(U)EFI,而那个人正在使用传统的BIOS。是否使用EFI还是BIOS,取决于VirtualBox中的“设置->系统->主板->启用EFI”复选框。
ntc2

啊有道理!感谢@ ntc2
josh7weaver

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.