VirtualBox

跳转到:导航搜索
VirtualBox

VirtualBox 4.2.6 启动窗口

openSUSE 下载

厂商: Oracle

许可: GPL, PUEL
网站: virtualbox.org


关于

VirtualBox 是一种 虚拟化 产品,最初由 innotek 开发,现在归 Oracle 所有。VirtualBox 的当前版本可以在 64 位 Intel 和 AMD CPU 上使用。VirtualBox 6.0.14 是在 32 位主机上构建的最后一个版本。基础软件包于 2007 年 1 月以自由开源软件 (GPLv2) 的形式发布。一个附加软件包包含一些缺失于开源版本的功能,例如 USB 2.0/3.0 支持,其许可是专有的,允许个人和教育用户免费使用。由于此许可不符合 openSUSE 的要求,我们不会构建和分发此软件。当前版本的必要 ...extpack 文件可以从 下载,并通过 GUI 在“工具/扩展”选项卡下安装。

VirtualBox 随附 openSUSE,应该可以开箱即用。自 openSUSE 11.4 以来,如果由此产生的安全风险可接受,连接到主机的 USB 设备可以在客户操作系统中使用。有关更多详细信息,请参阅下文。

VirtualBox 在 openSUSE 12.3 上运行 PCBSD Rolling Release 会话

安装最新版本的 Guest Additions

VirtualBox 的现代版本 (7.0..X 及更高版本) 不需要运行 Guest Additions 来进行 Linux 客户,因为 Oracle 的 ISO 中包含的驱动程序已经包含在标准内核中。对于非 Linux 客户,您可能需要安装此软件。如果您已下载适用于您主机 VirtualBox 版本的 VirtualBoxGuestAddition...iso 版本,则使用“设备”选项卡将文件附加到虚拟光驱,否则,选择“设备”选项卡下的“升级 Guest Additions”选项,这将下载并挂载虚拟 CD。您的客户机可能会自动启动安装,否则使用文件浏览器找到适合您客户机的安装文件并启动它。在 Linux 上,此步骤需要以 root 身份完成。

允许普通用户访问共享文件夹

默认情况下,只有 root 用户才能访问从主机系统挂载的共享文件夹(通常这些文件夹出现在 /media 下)。要允许普通用户访问这些文件夹

  1. 在 YaST 中打开用户和组管理模块,并将您想要授予权限的每个用户添加到 vboxsf 组
  2. 让受影响的用户注销并重新登录,他们现在应该能够访问共享文件夹。
  3. 打开 /media 目录时,您可能会遇到权限错误。快速解决方法是更改该目录的权限。
  4. chmod o+rx /media

这应该足够了,并且 /media 下的 sf_SHARENAME 目录现在应该可以访问了。


注意:许多论坛帖子和网络上的指南建议您在 /etc/fstab 设置中进行调整或使用脚本手动挂载共享文件夹。这种更简单的方法消除了对类似黑客行为的需求。

USB 直通 (来自发行版的 rpm 包)

请注意,这是一种安全风险,请参阅 bug 664520

由于安全风险,openSUSE 的版本维护了文件 ~/.config/VirtualBox/enable 和 ~/.config/VirtualBox/disable。如果 VirtualBox GUI 启动时不存在这两个文件中的任何一个,将运行一个单独的程序,询问用户的偏好。根据偏好,将创建 ../enable 或 ../disable。只有创建 ../enable 才会启用 USB 直通。

如果您从 virtualbox.org 下载并安装了软件包,将不会有任何针对 USB 操作的保护。

故障排除

重建主机内核模块

问题

内核更新后,VirtualBox 在启动虚拟机之前可能会抛出错误

解决方案

可能缺少一些必需的软件包。

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

签名主机内核模块

问题

如果您找不到预打包的内核模块,则必须自己对其进行签名。

UEFI/安全启动: 如果 /sbin/vboxconfig 因签名问题而失败 (`Key was rejected...`),尽管已安装了来自 repo 的所有相关软件包,您需要手动签名模块(例如,因为版本不寻常)。

请参阅以下“ERROR”消息

Building kernel modules...
Kernel modules built correctly. They will now be installed.
insmod /usr/lib/modules/6.12.0-160000.5-default/updates/vboxdrv.ko
modprobe: ERROR: could not insert 'vboxnetflt': Key was rejected by service

解决方案

手动 签名内核模块 需要三个步骤,假设您以前没有这样做过(或者密钥/证书不可用)。请注意参数 `-addext`,据我所知,它是 openSUSE 特有的。

1. 创建您的个人密钥和证书(替换 `<FULL_NAME>`)

openssl req -new -x509 -newkey rsa:2048 -keyout MOK.key -out MOK.crt -nodes -days 3650 -subj "/CN=<FULL_NAME>/" -addext "extendedKeyUsage=codeSigning"
openssl x509 -in MOK.crt -out MOK.der -outform DER
chmod 600 MOK.*

这将生成文件 `MOK.crt`、`MOK.key` 和 `MOK.der`。

2. 通过 shim 将密钥告知 UEFI

mokutil --import MOK.der

记住密码。重新启动,您将看到 MOK Management,选择 Enroll key,确认所有问题并重新输入密码。

3. 签名所需的内核模块

您需要在 Linux 内核源代码中找到签名工具。请参阅以下命令,以找到正确的版本。例如,对于 `6.12.0-160000.5-default`,<VERSION> 是 `6.12.0-160000.5`...

uname -r

现在使用内核源代码中的 sign-file,请替换 <VERSION>

/usr/src/linux-<VERSION>-obj/x86_64/default/scripts/sign-file sha256 MOK.key MOK.der /lib/modules/`uname -r`/updates/vboxdrv.ko
/usr/src/linux-<VERSION>-obj/x86_64/default/scripts/sign-file sha256 MOK.key MOK.der /lib/modules/`uname -r`/updates/vboxnetadp.ko
/usr/src/linux-<VERSION>-obj/x86_64/default/scripts/sign-file sha256 MOK.key MOK.der /lib/modules/`uname -r`/updates/vboxnetflt.ko

将 MOK 文件保存在安全的地方。您可以稍后重新使用它们来签名其他模块(因为密钥保留在 UEFI 中)。

之后,您需要重新启动系统。

外部链接