zzxworld

VirtualBox 进阶使用与配置

昨天分享了一篇面向 VirtualBox 虚拟机入门用户的教程式文章,内容以软件下载安装,虚拟机创建和系统安装为主。通过掌握这些内容虽然足以把 VirtualBox 用起来,但还不够。今天这篇文章将分享一些更加深入的配置和技巧,它们能让你创建的虚拟机发挥出更大价值。

安装增强功能

VirtualBox 默认安装好的桌面系统,在使用体验上并不是很好。比如鼠标操作,存在肉眼可见的迟滞感。以我虚拟的一台 Win10 为例,来看看如何改善这个问题。

Win10 虚拟机窗口

上面是 Win10 虚拟机启动后的界面。鼠标右键点击窗口最下方的光盘图标,在弹出的菜单中选择「移除虚拟盘」。

移除虚拟盘操作

然后选择窗口上方的「设备」菜单,选择最下面的「安装增强功能」菜单。稍等片刻,虚拟机中的系统应该会弹出这个来自光驱设备的自动运行提示。

安装提示

选择「运行 VBoxWindowsAdditions.exe」,随后会弹出一个安全提示框,选择「是」继续。开始 VirtualBox Guest Additions 程序的安装。

开始安装 VirtualBox Guest additions

安装过程很简单,只需要无脑点 Next 按钮就行了。完成后会提示需要重启系统。

VirtualBox Guest Additions 安装完成提示

保持默认选择,点击 Finish 按钮,系统会开始重启。重新进入系统后,会发现鼠标的移动和操作顺滑了许多。

如果虚拟机是 Linux,在点击了「安装增强功能」菜单后,需要在命令端进行操作。相关命令按操作顺序分别如下:

# 创建挂载目录
sudo mkdir /mnt/cdrom

# 挂载光驱
sudo mount /dev/cdrom /mnt/cdrom

# 进入挂载的而光驱目录
cd /mnt/cdrom

# 安装增强功能
sudo ./VBoxLinuxAdditions.run

安装 VirtualBox 增强功能除了对鼠标操作有所改善,在虚拟显卡性能方面也有所增强。建议在虚拟任何附带桌面环境的操作系统后,都安装一下这个增强功能。

和主机共享文件

虚拟机在一些场景下免不了要和主机之间互相交换文件,对于这个需求,可以通过 VirtualBox 的共享文件夹功能来解决。

在虚拟机运行界面的下方,找到一个类似文件夹样式的图标,它是灰色的,表示当前没有共享任何目录,右键点击它。

点击共享文件夹

选择弹出的「共享文件夹」菜单,进入共享文件夹设置界面。

共享文件夹设置界面

在这个界面的最右侧,有一个带加号的文件夹图标,点击它打开添加共享文件夹的操作界面。

添加共享文件夹界面

这个界面有如下几个操作项:

  • 共享文件夹路径: 选择主机上要共享给虚拟机的目录。
  • 共享文件夹名称: 自定义这个共享的名称,方便自己识别即可。
  • 只读分配: 设置共享目录的操作权限,选择后共享目录在虚拟机环境中只可查看,不能做文件编辑操作。
  • 自动挂载: 选择后虚拟机点确定后,包括下次启动时,自动加载这个共享目录。
  • 挂载点: 指定共享目录在虚拟机中的位置。如果虚拟机是 Windows 系统,这里只能填盘符。
  • 固定分配: 选择后表示这个共享目录在当前虚拟机一直有效。不选就是临时有效。

在 Windows 虚拟机上挂载的共享目录以网络驱动器的方式实现。比如我挂在了一个命名为 test 的共享文件夹,在 Win10 虚拟机的文件资源管理器中看起来如下。

Win10 挂载的共享文件夹

使用 USB 外设

除了使用文件共享的方式和虚拟机传输数据,VirtualBox 也支持虚拟机直连 USB 外设。使用这个功能前,需要先安装 VirtualBox 的扩展插件。插件下载地址:

打开这个页面后,找到 VirtualBox Extension Pack 这部分,下面有个 All supported platforms 的链接,点击即可下载到一个以 .vbox-extpack 后缀结尾的文件。

回到 VirtualBox 主界面,选择「管理」菜单,然后选择「全局设定」。在打开的全局设定窗口左侧,选择「扩展」项:

全局设定扩展设置

点击最右侧带加号的按钮,然后选择刚下载的扩展文件,并确认安装。安装好扩展后的界面如下:

已安装扩展后的界面

点击确定返回 VirtualBox 主界面。接下来打开虚拟机的设置窗口。

虚拟机设置窗口

控制器选择 USB3.0,然后点击筛选器右侧带加号的按钮,应该能看到当前系统上可用的 USB 外设。

可用的 USB 外设

选择要在虚拟机中直连的 USB 设备后,点击「确定」按钮返回主界面。启动虚拟机后,就能在虚拟机的系统中看到选择的 USB 设备了。

如果主机是 Linux 系统,并使用命令方式安装的 VirtualBox。还需要一些额外操作才能成功添加 USB 设备。

首先需要添加 usbfs 用户组。

sudo groupadd usbfs

然后把当前用户添加到 usbfsvboxusers 用户组。

sudo usermod -aG usbfs $USER
sudo usermod -aG vboxusers $USER

重启一下主机系统,再按上面的步骤操作即可。

网络设置

在虚拟机的设置界面有一个网络设置项:

虚拟机网络设置

VirtualBox 提供了多种网络类型,本文以应用为目的,所以不打算挨个介绍它们。仅以我的日常使用为参考,说说其中两种常用的网络模式:「网络地址转换(NAT)」和「桥接网卡」。

网络地址转换(NAT) 是 VirtualBox 创建虚拟机的默认网络模式。这是一种比较安全的单向网络访问模式。在虚拟机中可以访问主机所在的网络,包括互联网。但外部这些网络不能访问到虚拟机。如果必须要访问,只能通过配置端口转发的方式来实现。

桥接网卡 就比较粗暴了,虚拟机会占用主机网络的 IP。选择这种网络模式相当于把虚拟机放到了和主机平级的网络环境,暴露在主机网络下,所以和网络中任意主机都是互通状态。

对于这两种网络模式的使用选择,我会优先考虑网络地址转换模式,不会在主机网络暴露虚拟机,通过端口准发的方式也能达到桥接网卡模式的功能,但更可控。桥接网卡模式会是最后不得以的选择。

使用命令模式

除了使用界面来操作虚拟机,VirtualBox 还提供了更加高效的终端命令操作模式。比如创建虚拟机可以使用: vboxmanage createvm 命令,启动虚拟机可以使用: vboxmanage startvm 命令……。在界面上能对虚拟机进行的控制操作,在命令模式下基本都可以达到。

至于使用命令来操作虚拟机的好处,主要体现在效率和规范化方面。因为命令可以通过代码的方式来组织和编写,对于一些经常要重复创建和使用的虚拟机,直接通过代码把相关操作编写成脚本。之后使用的时候就只需要执行一下脚本,符合自己要求的虚拟机就创建好并启动起来了,是不是比自己用鼠标来一步步操作要更加有效率?

除此之外,使用命令模式还能实现界面端无法做到的功能。比如开机时自动在后台启动一个指定的虚拟机。

命令模式是对 VirtualBox 更加深度的应用领域,只有在一些专业领域才会用到。以后有机会我再单独出一篇文章来深入介绍。