FAQ:VirtualBox

来自Wikioe
跳到导航 跳到搜索


UUID

uuid有虚拟机uuid介质uuid(HardDisks、DVDImages等)的区别!

虚拟机uuid

  • 注册虚拟机的uuid可以从C:\Documents and Settings\用户名\.VirtualBox文件夹下的VirtualBox.xml文件中查看。如:
    <MachineRegistry>
      <MachineEntry uuid="{6f74cba0-b3ab-45ef-9e71-e1e69ae897df}" src="D:\Documents\Virtual Box\CentOS7\CentOS7.vbox"/>
      <MachineEntry uuid="{1dedf8c9-c77a-4d04-a98f-99f535711463}" src="D:\Documents\Virtual Box\Debian\Debian.vbox"/>
    </MachineRegistry>
也可在虚拟机配置文件(.vbox文件)中查看,见下节“介质uuid”。
  • cmd命令"VBoxManage list vms":列出当前注册到Oracle VM VirtualBox的所有虚拟机。默认显示包含每个虚拟机名称和UUID的紧凑列表。如果指定了--long或--l参数,将显示和showvminfo命令一样的详细列表。
Microsoft Windows [版本 10.0.18363.1016]
(c) 2019 Microsoft Corporation。保留所有权利。

C:\Users\eijux>d:

D:\>cd D:\Program Files\Oracle\VirtualBox

D:\Program Files\Oracle\VirtualBox>VBoxManage list vms
"CentOS7" {6f74cba0-b3ab-45ef-9e71-e1e69ae897df}
"Debian" {1dedf8c9-c77a-4d04-a98f-99f535711463}

介质uuid

  • 介质的uuid,可以在具体的虚拟机配置文件(.vbox文件)中查看,如:
    配置文件:“D:\Documents\Virtual Box\CentOS7\CentOS7.vbox”
    <Machine uuid="{6f74cba0-b3ab-45ef-9e71-e1e69ae897df}" name="CentOS7" OSType="RedHat_64" snapshotFolder="Snapshots" lastStateChange="2019-09-07T16:05:07Z">
      <MediaRegistry>
        <HardDisks>
          <HardDisk uuid="{863486bc-ce7d-4145-a669-03cb36729f5f}" location="CentOS7.vdi" format="VDI" type="Normal"/>
        </HardDisks>
        <DVDImages>
          <Image uuid="{c9d02f1a-5ac8-4dce-9aa2-2261b14863ad}" location="E:/Downloads/IDM/CentOS-7-x86_64-DVD-1810.iso"/>
        </DVDImages>
      </MediaRegistry>
      ...
    </Machine>

    配置文件:“D:\Documents\Virtual Box\Debian\Debian.vbox”
    <Machine uuid="{1dedf8c9-c77a-4d04-a98f-99f535711463}" name="Debian" OSType="Debian_64" snapshotFolder="Snapshots" lastStateChange="2019-10-07T05:57:18Z">
      <MediaRegistry>
        <HardDisks>
          <HardDisk uuid="{910ae991-a039-47e6-b5f6-7a8e8d6b5e18}" location="Debian.vdi" format="VDI" type="Normal"/>
        </HardDisks>
        <DVDImages>
          <Image uuid="{a16463a6-a15b-4a6c-beca-829d6e42e5b1}" location="D:/Program Files/Oracle/VirtualBox/VBoxGuestAdditions.iso"/>
          <Image uuid="{f6126c05-d11d-4a5e-bfcc-0f0eb203a6ac}" location="E:/Downloads/IDM/debian-10.0.0-amd64-DVD-1.iso"/>
        </DVDImages>
      </MediaRegistry>
      ...
    </Machine>
其中<Machine uuid="...">为虚拟机uuid,<HardDisk uuid="...">为硬盘uuid(.vdi的uuid),<Image uuid="...">为镜像uuid。
  • cmd命令"VBoxManage list hdds":显示有关Oracle VM VirtualBox当前使用的虚拟磁盘映像的信息,包括其所有设置、Oracle VM VirtualBox与它们关联的唯一标识符(UUID)以及与它们关联的所有文件。这是相当于虚拟介质管理器的命令行。
Microsoft Windows [版本 10.0.18363.1016]
(c) 2019 Microsoft Corporation。保留所有权利。

C:\Users\eijux>cd D:\Program Files\Oracle\VirtualBox

C:\Users\eijux>d:

D:\Program Files\Oracle\VirtualBox>vboxmanage list hdds
UUID:           863486bc-ce7d-4145-a669-03cb36729f5f
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       D:\Documents\Virtual Box\CentOS7\CentOS7.vdi
Storage format: VDI
Capacity:       51200 MBytes
Encryption:     disabled

UUID:           910ae991-a039-47e6-b5f6-7a8e8d6b5e18
Parent UUID:    base
State:          created
Type:           normal (base)
Location:       D:\Documents\Virtual Box\Debian\Debian.vdi
Storage format: VDI
Capacity:       51200 MBytes
Encryption:     disabled

调整硬盘大小

使用modifymedium命令(调整存储介质),可以在磁盘映像创建后更改其特性。

With the modifymedium command, you can change the characteristics of a disk image after it has been created.

VBoxManage modifymedium  [disk|dvd|floppy]    <uuid|filename>
                         [--type normal|writethrough|immutable|shareable|
                                 readonly|multiattach]
                         [--autoreset on|off]
                         [--property <name=[value]>]
                         [--compact]
                         [--resize <megabytes>|--resizebyte <bytes>]
                         [--move <path>]
                         [--setlocation <path>]
Note
For compatibility with earlier versions of Oracle VM VirtualBox, the modifyvdi and modifyhd commands are also supported and mapped internally to the modifymedium command.
(为了与早期版本的Oracle VM VirtualBox兼容,modifyvdi和modifyhd命令也受支持,并在内部映射到modifymedium命令。)
The disk image to modify must be specified either by its UUID, if the medium is registered, or by its filename. Registered images can be listed using VBoxManage list hdds. A filename must be specified as a valid path, either as an absolute path or as a relative path starting from the current directory.
要修改的磁盘映像必须通过其UUID(如果介质已注册)或其文件名指定。可使用“VBoxManage list hdd”列出已注册的映像。文件名必须指定为有效路径,可以是绝对路径,也可以是从当前目录开始的相对路径。
  • modifyhd、modifyvdi与modifymedium等效;
如:"VBoxManage modifyhd <uuid>|<filename> --resize 40960"。(40960 单位M)
"VBoxManage modifyvdi <uuid>|<filename> --compact"
  • <filename> 为.vdi文件名,用绝对路径或当前路径的相对路径;
  • uuid为.vdi文件的注册id(存储介质的注册id,区别于虚拟机的注册id),可用"VBoxManage list hdds"命令查看(而非"VBoxManage list vms");
  • 使用.vdi文件名可能不成功,可改用uuid。
  • 在调整硬盘之前,一定要先关闭该虚拟机。
  • Windows Server虚拟机扩容后,需要在磁盘管理分配新磁盘;
  • Windows Server虚拟机压缩磁盘前,可先在虚拟机中用SDelete进行磁盘优化(“sdelete -z c:”)。

虚拟网卡消失问题

Virtual Box 一般安装时会在本地新建一个VirtualBox Host-Only Network的虚拟网卡,本机可以通过这个网卡和虚拟机通信。
然而Windows在升级时有可能会丢失掉这个网卡(比如: Windows8升级到Windows10) , 而且升级后原来的网卡还有残留配置,导致VirtualBox再新建一个网卡名字会变成VirtualBox Host-Only Network #2,并且在设置原来的地址时会报地址重复占用的提示:

解决:(“Problem after updating to Windows 10 1703”相关的讨论)

  1. 关闭 Virtual Box;
  2. 下载RunAsTI(注册表编辑工具Github:RunAsTI,此工具可以看到注册表被保护的内容);
  3. 运行RunAsTI64打开cmd, 输入regedit打开注册表(被WindowsDefender拦截时,右键管理员启动);
  4. 查找“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\NetworkSetup2\Interfaces\”下残留Virtualbox Host-Only Network Adapter信息项,并将其删除;
  5. 重启电脑;

安装 MacOS X 遇到的问题

在 VirtualBox 中安装 MacOS X 会遇到几个问题,总结如下。

注意事项:

  1. dmg 格式的系统镜像不能直接使用;
  2. 对于虚拟机错误:“Unresolved (unknown) host platform error. (VERR_UNRESOLVED_ERROR).”,其原因:VirtualBox_v6.1.32以及后续版本不再能安装 MacOS
    • 如果您正在寻找最新的 VirtualBox 6.0 软件包,请参阅 VirtualBox 6.0 版本。如果您需要使用软件虚拟化运行虚拟机,请使用 6.0 版,因为这已在 6.1 版中停止。版本 6.0 将一直支持到 2020 年 7 月。
      
      如果您正在寻找最新的 VirtualBox 5.2 软件包,请参阅 VirtualBox 5.2 版本。如果您仍然需要对 32 位主机的支持,请使用 5.2 版,因为这在 6.0 中已经停止。版本 5.2 将一直支持到 2020 年 7 月。
      
    • 实测 VirtualBox_v6.0.4 可用。
  3. 对于虚拟机错误:“Failed to query SMC value from the host (VERR_INVALID_HANDLE).”,其原因:MacOS的机器信息验证?未通过,需要修改虚拟机信息
    • 修改虚拟机信息(安装BigsSur):
      cd "C:\Program Files\Oracle\VirtualBox\"
      
      # 修改虚拟机信息
      VBoxManage.exe modifyvm "<虚拟机名字>" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac19,1"
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Mac-AA95B1DDAB278B95"
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
      
      # VirtualBox调整虚拟机分辨率
      VBoxManage setextradata "<虚拟机名字>" VBoxInternal2/EfiGraphicsResolution 1920x1080
      
    • 修改虚拟机信息(Catalina):
      cd "D:\Program Files\Oracle\VirtualBox\"
      
      # 修改虚拟机信息
      VBoxManage.exe modifyvm "<虚拟机名字>" --cpuidset 00000001 000106e5 00100800 0098e3fd bfebfbff
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/efi/0/Config/DmiSystemProduct" "iMac11,3"
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/efi/0/Config/DmiSystemVersion" "1.0"
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/efi/0/Config/DmiBoardProduct" "Iloveapple"
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/smc/0/Config/DeviceKey" "ourhardworkbythesewordsguardedpleasedontsteal(c)AppleComputerInc"
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/Devices/smc/0/Config/GetKeyFromRealSMC" 1
      
      # VirtualBox调整虚拟机分辨率
      VBoxManage setextradata "<虚拟机名字>" VBoxInternal2/EfiGraphicsResolution 1920x1080
      
  4. 对于虚拟机错误:“Call to WHvSetupPartition failed: ERROR_SUCCESS (Last=0xc000000d/87) (VERR_NEM_VM_CREATE_FAILED)”,其原因:Hyper-v 不能与 vbox 和 vm 共存
    • Hyper-v 的虚拟方式不一样,开启 Hyper-v 后会将用户的桌面系统给虚拟化,用户的桌面系统就会成为 Hyper-v 的虚拟系统,而 Hyper-v 的虚拟系统是不允许再开虚拟机的,因此开启 Hyper-v 后 VM 和 Vbox 就不能运行。
      
      ???但是使用 VMware 直接(安装 Unlocker 之后)就安装了 Bigsur,并没有遇到类似问题。???
      
    • 共存问题解决:
      ## Hyper-v与Vbox 共存,方法二选一(VM 暂时还没有和 Hyper-v 共存,好像也没遇到)
      
      #指定vbox下的虚拟系统开启这个功能
      VBoxManage setextradata "<虚拟机名字>" "VBoxInternal/NEM/UseRing0Runloop" 0
      
      #或指定vbox所有虚拟系统开启
      VBoxManage setextradata global "VBoxInternal/NEM/UseRing0Runloop" 0