Virtualbox

跳转至: 导航, 搜索
Oracle VM VirtualBox 是一个 x86 虚拟化软件包; 它以一个应用程序的形式安装到主机操作系统上; 该主机程序允许执行额外的客户机操作系统,每个客户机操作系统叫做一个虚拟机,可以在其自身的虚拟环境中载入和运行。

安装 Virtualbox

使用官网提供的 RPM 安装

sudo zypper in gcc make kernel-devel
  • 安装 RPM
sudo zypper --norefresh in Virtualbox*.rpm

使用软件源安装

Virtualbox 的主包在 openSUSE 自己的源里也可以安装,与网上下载的没有任何区别(只是版本略旧):

sudo zypper in virtualbox virtualbox-qt virtualbox-guest-x11 virtualbox-guest-tools

要是 GNOME 的话就把 virtualbox-qt 去掉,会自动装 python-virtualbox 和 vboxgtk。vboxgtk 有一个小 bug,解决方法见下。

安装扩展包

扩展包主要提供了 USB 驱动和 3D 加速驱动等版权内容。

  • 下载 Virtualbox 扩展包(Extension Pack)
  • 在应用程序菜单中启动 Virtualbox,将扩展包拖到 Virtualbox 窗口,将会弹出 kdesu/gnome-sudo 提示输入 root 密码,自动安装。

命令行安装扩展包(extpack)

有时候在非 GNOME/KDE 这样的其它桌面环境下,因为缺少 kdesu 这样的图形化提示输入 root 密码机制,可能无法在图形界面下安装 VirtualBox 的扩展包(extpack)。这里教大家如何使用命令行安装:

1. 列出之前安装的扩展包

$sudo VBoxManage list extpacks
Extension Packs: 1
Pack no. 0:   Oracle VM VirtualBox Extension Pack
Version:      4.2.18
Revision:     88780
Edition:      
Description:  USB 2.0 Host Controller, VirtualBox RDP, PXE ROM with E1000 support.
VRDE Module:  VBoxVRDP
Usable:       false
Why unusable: VBoxExtPackRegister returned VERR_VERSION_MISMATCH, pReg=0000000000000000 ErrInfo='VirtualBox version mismatch - expected 4.2 got 4.3'

2. 卸载之

$sudo VBoxManage extpack uninstall "Oracle VM VirtualBox Extension Pack"

3. 安装新的扩展包

$sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.3.4-91027.vbox-extpack 

4. 清理

$sudo VBoxManage extpack cleanup

新建虚拟机

在应用程序菜单中启动 Virtualbox:

  • 「新建」
  • 输入虚拟机名称,选择操作系统类别和版本
  • 内存调高点
  • 创建新的虚拟硬盘,选择 VDI(Virtualbox 磁盘映像),下面两个是为了与别的虚拟化软件兼容的,我们没有。
Virtualbox 磁盘硬件位于 $HOME/Virtualbox VMs/ 目录中,可以理解为一个很大的二进制文件,磁盘空间不够的时候,把创建过的,上面却没有虚拟机的 VDI 删除会节省很多空间。
  • 「动态分配」还是「固定大小」看自己心情。一般我选动态分配。
  • 输入名字,选择大小
  • 然后确定
注意 Virtualbox 默认方法创建的并不能完全满足您的需要,比如光驱,声卡等更详细的设置,要在创建好后,选择该虚拟机,点击设置来继续配置。

Windows

所有的 Windows 设置都一样,这里以 Windows 8 为例。

Windows8 setup.gif


值得注意的是:

  • 芯片组那里是 ICH9
  • 2D 视频加速可以打开,3D 也可以,但要安装 Virtualbox 的「增强功能」也就是虚拟硬件驱动才能实现。
  • PAE/NX 和 VT-x/AMD-v 以及嵌套分页都要打开,第一个是传递主机物理地址的,第二个是 BIOS 里面的虚拟化的东西。
注意 不开装不了 Windows 8。
  • USB 2.0 EHCI 驱动没有安装扩展包是勾选不上的。
  • 显存给到最大,CPU 用单核。不然会卡。

然后 Windows 8 安装按下图走:

Windows8 installation.gif

值得注意的就是复制好文件第一次重启,输入完计算机名之后,是注册 Microsoft 帐号,那个超麻烦,直接选下面的「不使用 Microsoft 帐号登录」,然后选择「本地帐号」。

Ubuntu

Ubuntu virtualbox setup.gif

如图,其中声音下面的 Intel HD 音频是根据你声卡来的。然后 USB 控制器的话你没有安装扩展包是勾选不上的。

为什么这么设置的原因在 为蝶变和乌斑兔打包#安装虚拟开发机中有讲。

其它,请补充

往虚拟机内安装操作系统

如下图所示,点击右上角的光盘图标挂载操作系统的 ISO:

Virtualbox mount iso.png

Virtualbox select iso.png

或者将操作系统的光盘放入物理 DVD 驱动器。openSUSE 会自动挂载它,这里你要先选择卸载,不然被主机占用的光驱,虚拟机是没法使用的。然后在选择 ISO 那里选择物理设备。随后启动虚拟机即可进入相应的操作系统安装界面。

在虚拟机内安装 Virtualbox 驱动

Windows

Windows 需要在安全模式下才能安装 Virtualbox 增强功能,非安全模式下安装的增强功能没有 3D 虚拟硬件驱动。

首先在正常的 Windows 桌面下,找到开始菜单,在搜索栏输入“msconfig”,在「引导选项」中勾选「安全引导」-「最小」后点击确定自动重启到安全模式。

打开「我的计算机」,在光驱中已经装入了 Virtualbox Addon,但是安全模式下,直接点击是不会自动运行的。我们要进入这个光驱,然后运行 VBoxGuestAdditions。

Windows 8 按下 Win 键 + C,按图操作:

Virtualbox windows driver installaion.gif

openSUSE

如果你的 openSUSE 是在 Virtualbox 里装的,它会自动识别到你是装在 Virtualbox 环境的,因此会为您预装好 virtualbox-guest-kmp-desktop virtualbox-guest-tools virtualbox-guest-x11 这三个软件包(相当于从官网下载的那个增强功能扩展)。而如果你的 Virtualbox 是从官网下载 RPM 安装的,这两个的版本一般是不会匹配的。这会导致显示效果不是很好,比如 GNOME shell 非全屏打开应用程序时背景是白色的,然后程序的阴影变成了大黑框,以及鼠标移动到的位置会闪色块等(看上去跟没装显卡驱动的感觉是一样的),这都是因为驱动版本不匹配的原因。

所以要先打开 YaST 软件管理,把预装的这几个软件包卸载掉。

然后安装 kernel-desktop-devel gcc make automake 这四个软件包。接着按照上面说的点击「安装增强功能」按钮就可以了。

在 GNOME 下面会直接问你有个软件,要不要安装,选是,会提示你输入 root 密码然后弹出一个 gnome terminal 窗口,等所有的项目都出现绿色的 done 后,会提示你按 return 这时按回车。然后重启就好。

KDE 下面可以打开 Dolphin 定位到挂载好的那个文件夹(跟你平时挂载 U 盘是一样的),双击那个 autorun.sh。其它同 GNOME。也可以用命令行:

cd /var/run/media/<你的用户名>
./autorun.sh

Linux

Linux 只要有 root 权限和 kernel 的开发包就可以安装虚拟硬件驱动。安装方法看下图:

Virtualbox linux driver installation.png

Linux 下面,deb 系发行版的内核开发包叫 linux-headers,而 rpm 系发行版的内核开发包叫 kernel-devel。这个搞错容易找不到开发包来装。

命令行安装

有时候你进不去图形界面(因为刚卸载了 virtualbox 的那些东西后重启没有虚拟显卡驱动了),可以这样安装:

  • 命令行登录
  • 使用 mount 命令挂载你的光驱
sudo mount /dev/sr0 /mnt
cd /mnt
  • 安装
sudo ./VBoxLinuxAdditions.run
  • 卸载光驱
sudo umount /mnt

文件夹共享设置

选中虚拟机,点击「设置 - 共享文件夹 - 右边的绿色 + 号」。「路径」选「其它」,然后选择宿主机中要共享的文件夹,会自动分配名称。下面的三个选项「只读分配」、「自动挂载」、「固定分配」请酌情选择。

启动进入虚拟机。

Windows XP

使用「网上邻居」来添加一个新的网上邻居。具体见下图。

Virtualbox share setup in XP.png

常见问题

在虚拟机中切换到 TTY

使用 Ctrl + Alt + F1 会把你的宿主机也就是物理计算机切换到 TTY 控制台。

正确的方法是使用「Host Key」也就是「右边的 Ctrl」+ F1 来做。

网银盾

进入虚拟机后使用上面工具栏的「设备 - 分配 USB 设备」把网银盾分配给虚拟机。其它照常。

Kernel driver not installed (rc=-1908)

在内核更新之后,就很可能会遇到打不开虚拟机的情况,错误如下图所示:

VirtualBox kernel driver not installed.jpg

解决方法:

su
zypper in virtualbox-host-source kernel-devel
systemctl stop vboxdrv
vboxconfig

然后重启系统。

测试于 openSUSE Tumbleweed 20180128

Vboxgtk: This parameter must be a string or Unicode object

解决方案(4 楼):https://forum.suse.org.cn/viewtopic.php?f=13&t=1373&hilit=vboxgtk

Virtualbox 中 USB 设备显示是灰色的

解决方案(2 楼):https://forum.suse.org.cn/viewtopic.php?f=13&t=3130&p=24052

Ubuntu 14.04 无法安装增强功能

在 Ubuntu 14.04 中,使用上面介绍的方法安装增强功能会失败。这时查看 /var/log/vboxadd-install.log 会看到这行:

grep: /lib/modules/3.13.0-35-generic/build/include/linux/version.h: 没有那个文件或目录

这是由于内核上游的改动造成的(这个问题曾经也使得 NVIDIA 驱动安装失败),解决方法也是通用的:

ln -sf /lib/modules/3.13.0-35-generic/build/include/generated/uapi/linux/version.h /lib/modules/3.13.0-35-generic/build/include/linux/version.h

然后重复上面的安装过程即可。

Error opening current controlling terminal for the process (`/dev/tty'): No such device or address

sudo VBoxManage extpack install Oracle_VM_XXX.vbox-extpack

不用图形界面装就行

include/generated/autoconf.h or include/config/auto.conf are missing

只是个表象,你继续往下拉真正的错误是:error: ‘alloc_netdev’ undeclared

解决方案见:http://pietrushnic.github.io/blog/2014/09/20/virtualbox-dkms-fix-alloc-netdev-problems-when-compiling-with-3-dot-17-dot-0-rcx-headers/

TW:libdevmapper.so.1.02()(64bit) 被需要

这是因为 openSUSE Tumbleweed 中的 device-mapper 在编译时人为的把 1.02.78 的版本号提升为了 1.03.01(非上游行为,我也不知道为什么,从 13.2 就开始了),所以编译出来的是 libdevmapper.so.1.03,因此无法提供 libdevmapper.so.1.02()(64bit),需要 tweak 一下,我已经提交了请求,目前可以用 home:MargueriteSu 源中的 device-mapper 先顶一下。

VT-x is not available. (VERR_VMX_NO_VMX)

这是因为你的 BIOS 中没有打开虚拟化(virtualization)选项。

这会导致比如宿主机明明是 64 位却创建不了 64 位的虚拟机,或者创建的是 64 位虚拟机却 fallback 成了 32 位的,以及启动 openSUSE 时出现“This is a 32 bit computer, you can't use 64 bit software on it”错误无法进入系统,等问题。

添加点我