16
8月
2023
通过 USB 闪存驱动器使用 Virtualbox
17:35

通过 USB 闪存驱动器使用 Virtualbox

16 8月 2023 17:35

本文介绍如何在运行 Linux Ubuntu / Mint / Debian 的计算机上设置 Oracle VirtualBox 虚拟机,以直接访问 USB 闪存,以便在其上存储来宾操作系统。

系统要求

1. oracle VirtualBox 6.x 和 7.x 需要处理器硬件支持硬件虚拟化选项 VT-X

  • 英特尔处理器制造 2011年以后 (“桑迪桥”及更新版本)。 例如,Intel Core i5-3330 于 2012 年发布,支持 Socket 1155 的 VT-X。
  • 几乎都是英特尔凌动。
  • 奔腾双核 E5500 无论标记如何,部分 E5300、E5400 适用于 Socket 775。
  • Core 2 Duo“Conroe”E6300...E6850,带 Wolfdale-2M 内核。 BIOS 中应该有一个菜单项“虚拟化技术” - 启用它。

2010 年之前发布的英特尔® 酷睿 2 双核“Allendale”E4300...E4700 和英特尔® 奔腾® D 处理器 945、奔腾® 双核 E2200 和赛扬处理器不支持 VT-X 虚拟化。

U AMD 硬件虚拟化技术被称为 AMD-V™
它在 AMD Athlon 64(“Orleans”)、Athlon 64 X2(“Windsor”)、Athlon 64 FX(“Windsor”)处理器、AM2 插槽处理器系列中实现 - Athlon 64 和 Athlon 64 X2 版本“F”或“G”步骤、Turion 64 X2 和 Opteron 第 2 代和第 3 代、Phenom 和 Phenom二.
当然,所有较新的 AMD Ryzen 处理器(Zen、Zen 2、Zen 3、Zen 4 架构)都支持硬件虚拟化。

您可以使用以下命令找出处理器型号:

sudo lshw -class cpu

然后查看制造商的网站以了解有关 VT-X 支持的信息。 如果处理器不支持 VT-X,则需要回滚到 Oracle VirtualBox 版本 5.22(请参阅最后一段)。

!!在BIOS或UEFI BIOS中,启用虚拟化的菜单项称为 《虚拟化技术》支持向量机VT-X- 必须开启 -启用。 还需要使用 VT-D 虚拟化来转发 I/O 端口和 PCI 设备(类似于 AMD 的 IOMMU)。

2. 需要处理器支持指令 上证SE2 (流 SIMD 扩展 2)。 大多数处理器都支持 - IA-32 硬件类别还指定为 i486、i586 和 i686 或更高版本 (x64):几乎所有 Intel 和 AMD 处理器。 这些指令未在 Athlon 64 之前的处理器(例如 Athlon XP)中实现。

3。 容量为 8 GB 或以上的 USB 闪存。

4。 连接到 Internet,下载来宾操作系统安装盘的 ISO 文件。

从 USB 驱动器启动操作系统的方法

选项#1。 使用闪存驱动器存储安装盘的ISO文件,并在本地硬盘或SSD上创建虚拟硬盘文件(例如VHD)。 创建虚拟机时,在 Oracle VM 中选择引导 ISO 文件,然后从 ISO 文件引导 VM 并在 Live 模式下运行或安装操作系统。

优点:您可以在闪存驱动器上存储多个 ISO 文件。
缺点:对于每个 VM,您需要在 PC 上创建自己的虚拟硬盘,这在使用 SSD 驱动器时非常昂贵,因为在使用虚拟机 (VM) 文件时,您很快就会耗尽空间。

选项#2。 可启动 USB 闪存驱动器 - 准备好的可启动磁盘在 Oracle VM 中启动。 物理磁盘 - 带有系统映像的“闪存驱动器”,使用 VMDK 文件作为虚拟 AHCI 控制器SATA 0

优点:节省硬盘空间,客户操作系统仅存储在 USB 闪存介质上。
缺点:初始初始化更困难(见下文),并且访问速度低于本地 SSD。

选项#3。 可启动闪存驱动器不在Oracle VM中使用,而是直接在硬件上使用——启动计算机时,需要在打开计算机时按F9或F12按钮进入启动“Boot menu”(或者进入BIOS设置菜单,在其中指定HDD启动优先级。例如“HDD USB General Udisk”)。 我们打开 PC 或重新启动 PC - 操作系统从 USB 闪存驱动器启动。 除了关于创建可启动闪存驱动器的建议外,不会考虑此选项 文章结束

选项 4 特殊实用程序“Ventoy”、“YUMI”、“WinSetupFromUSB”等,用于为多个操作系统创建可启动闪存驱动器(“多启动闪存驱动器”) - 不使用虚拟机,系统按照选项 3 启动,但能够选择操作系统。 我不考虑这个选项,因为……我对配置 Linux 虚拟机使用“闪存驱动器”作为真实操作系统的存储设备而不是 ISO 映像的方法感兴趣。

优点:易于实施(只需使用 dd 或“Balena Etcher”),在大多数 PC 上选择从 USB HDD 启动时加载,在 Linux antiX 和 MX Linux 发行版中“持久化”(将会话数据存储在闪存驱动器上)的可能性,并在 Rufus 或 MX_Live_USB_Maker 中带有特殊标记。 节省 SSD 磁盘空间。
缺点:并非所有电脑都可以从 USB 闪存启动;一些旧电脑只能从 CD/DVD 启动。 无法在具有 BIOS 的计算机上启动 UEFI 闪存驱动器。 启动 PC 时需要操作启动菜单。 要使用持久性写入闪存驱动器,您需要使用非实用程序 DD“巴莱纳蚀刻机”, 和 鲁弗斯MX_Live_USB_Maker。 请参阅有关的详细文章 持久写入可启动 USB 闪存驱动器

!!! 本文将主要讨论 选项 2— 从准备好的 USB 闪存驱动器和 VMDK 文件在 Oracle VirtualBox 中启动虚拟机,以便使用 USB 闪存 AHCI 控制器进行仿真。 所谓从虚拟机“直接访问”U盘。 机器的实时图像存储在闪存驱动器上,其文件系统为RAW格式。

我应该为 VirtualBox 来宾操作系统选择哪个发行版本 - x86 还是 x64?

如果主要“主机”PC(主机)的操作系统具有完整的 x64 支持,并且处理器是现代的 - 支持 VT-X 或 AMD-V 硬件虚拟化 - 您可以安全地选择 x64 操作系统(ISO 文件在文件名中包含标记“x64”)。

如果操作系统是x86或处理器不支持VT-X,则必须选择i386 - i486或i686版本(ISO文件通常在文件名中包含“x86”)。

从 Ubuntu 存储库为具有 VT-X 的处理器安装 Oracle VirtualBox 6.1

如果处理器支持硬件虚拟化,则 Ubuntu 或 Linux Mint 存储库中的 VirtualBox 6.1(注意!6.1 不是最新版本!)将与内核 5.15 及更高版本一起使用。

安装 VirtualBox 6.1 很简单:

sudo apt update
sudo apt install --reinstall linux-headers-$(uname -r) virtualbox-dkms dkms virtualbox-qt
sudo reboot

之后,您需要重新启动电脑。

sudo reboot

重新启动后,以超级用户身份运行模块加载命令 vboxdrv:

sudo modprobe vboxdrv

现在您可以从菜单或使用控制台命令启动 virtualbox

virtualbox

! 如果启动虚拟机时出现错误 VT-x 不可用(VERR_VMX_NO_VMX)。 错误代码:NS_ERROR_FAILURE (0x80004005),表示处理器不支持VT-X硬件虚拟化。 该问题可以通过升级主板和处理器来解决。

对于具有 VT-X 的新处理器,拒绝 VirtualBox 6 并安装 VirtualBox 7

此方法与现代 Linux 操作系统以及支持 VT-X 或 AMD-V 的处理器相关。

如果您从存储库安装 VirtualBox (apt install virtualbox),Ubuntu 22.04 将安装 VirtualBox 6.1。 而新版本的 Oracle Virtualbox 7.0 已于 2023 年 7 月 18 日发布。

卸载 Virtualbox 6.1:

sudo apt remove --purge virtualbox virtualbox-guest-utils

有关在 linuxcapable.com 上安装 VirtualBox 7.0 的详细文章 用英语。

在 Linux 上安装 Oracle VirtualBox 7.0、7.1 或 7.2:

sudo apt update
sudo apt upgrade
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y

导入存储库的 gpg 密钥

curl -fSsL https://www.virtualbox.org/download/oracle_vbox_2016.asc | gpg --dearmor | sudo tee /usr/share/keyrings/virtualbox.gpg > /dev/null
  • 适用于 Ubuntu 26.04“坚决”

    echo deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian resolute contrib | sudo tee /etc/apt/sources.list.d/virtualbox.list

  • 适用于 Ubuntu 24.04“Noble”及其衍生版本(Linux Green 22、Linux Mint 22)。

echo deb [arch=amd64signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian 高贵的贡献 | sudo tee /etc/apt/sources.list.d/virtualbox.list

  • 对于 Ubuntu 22.04“jammy”及其衍生操作系统(基于 Ubuntu 22.04 LTS 或 Linux Mint 21 软件包的 Linux Green 21“Victoria”):

    echo deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian jammy contrib | sudo tee /etc/apt/sources.list.d/virtualbox.list

  • 对于 Ubuntu 20.04“focal”及其衍生操作系统:

    echo deb [arch=amd64 signed-by=/usr/share/keyrings/virtualbox.gpg] http://download.virtualbox.org/virtualbox/debian focal contrib | sudo tee /etc/apt/sources.list.d/virtualbox.list

! 对于 Debian -请参阅 Wiki,了解如何在 Debian 11“Bullseye”、12“Bookworm”上安装 VirtualBox

!!! VirtualBox 版本 7.0-7.2 可用的 对于 Debian 11-13:“Bullseye”、“Bookworm”、“Trixie”。

以下命令显示以单词“virtualbox”开头的存储库包名称:

sudo apt update
apt-cache search virtualbox | grep "^virtualbox*" 

安装 linux-headers 内核模块依赖项:

sudo apt install linux-headers-$(uname -r) dkms virtualbox-dkms build-essential module-assistant -y

然后安装 virtualbox 本身,版本 7.0、7.1 或 7.2

sudo apt install virtualbox-7.0

sudo apt install virtualbox-7.1

sudo apt install virtualbox-7.2

! !! 7.0 主要版本。 7.1/7.2 扩展了与新主机操作系统版本的兼容性并解决了兼容性问题(特别是新版本的 macOS 和 Linux 内核)。 7.2 版本是这三个版本中最安全的。 因此,本文针对的是7.2版本。

安装“virtualbox-7.2”软件包后,我启动“vboxdrv”服务:

sudo systemctl enable vboxdrv --now

我在内核中启用VM驱动程序:

sudo modprobe vboxdrv

我从旧虚拟机中删除了驱动程序的痕迹。 否则会出现驱动版本与VM版本不匹配的错误

sudo mv /lib/modules/$(uname -r)/updates/dkms/vbox* /tmp

其中 $(uname -r) 替换操作系统使用的内核版本,例如 5.15.0-79。

为新的 Oracle VM 安装驱动程序 (!)

sudo /sbin/vboxconfig

方法一 - 使用 ISO 文件和 PC 硬盘上的本地虚拟机文件创建虚拟机

  • 启动应用程序 Oracle VirtualBox 管理器 (终端命令 virtualbox 或“开始”-“所有应用程序”-“Oracle VirtualBox”)
  • 菜单“机器”-“创建”
  • 指定一个名称,例如“sparky”(来宾操作系统映像可以从网站下载 来源锻造
  • 保留默认文件夹 (/home/user/VirtualBox VMs)
  • 选择ISO镜像,文件*.iso
    *下一步。

方法 2 - 使用可启动 USB 闪存驱动器创建虚拟机

我们创建一个 VMDK 类型的文件。 它将在物理 RAW 闪存驱动器上模拟 AHCI 控制器。

我们连接一个容量为 8 或 16 GB 的空白闪存驱动器,然后等待显示内容(空文件夹)。

要查找设备名称,请运行以下命令:

LSBLK

根据磁盘容量,我们找到闪存驱动器并查看名称 - sdb 或 sdc。

sdd 8:48 1 7.5G 0盘
└─sdd1 8:49 1 7.5G 0 部分

VirtualBox 版本 5.2

不支持使用 RawDisk 选项访问物理设备。 (VMDK方法没有用;本文不适用于5.2版本)。 只能在计算机的本地硬盘上创建VDI或VHD虚拟硬盘并从常规ISO文件安装操作系统)。

VirtualBox 版本 6.0 - 6.1

sudo VBoxManage internalcommands createrawvmdk --filename=/home/user/usb_harddisk.vmdk  --rawdisk /dev/sdc

sudo VBoxManage internalcommands createrawvmdk --variant RawDisk --format=VMDK --filename=/home/user/usb_harddisk.vmdk --property RawDrive=/dev/sdc

其中 /dev/sdc 我们将名称替换为您自己的大小写,例如,它可以是 /dev/sdd。

VirtualBox 版本 7.0、7.1 和 7.2 有一个新的命令语法 - “createmedium”参数:

在终端中运行命令:

sudo VBoxManage createmedium --variant RawDisk  --format=VMDK --filename=/home/user/usb_harddisk.vmdk --property RawDrive=//dev/sdc

Result:
<预>0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
已创建介质。 UUID:ab7b961b-b901-4d96-b676-ef5cdb13488e

! 如果 usb_harddisk.vmdk 文件已存在,则不会覆盖该文件,并且会出现运行时错误。
! 每次运行 sudo VBoxManage createmedium --variant RawDisk --format=VMDK 都会创建一个新的 UUID,
! 它保存到硬盘驱动器上的文本文件 /home/user/usb_harddisk.vmdk 中(仅限 root 访问)。

以 root 用户身份运行 Oracle VirtualBox
(因为普通用户无法通过虚拟 SATA 控制器访问 USB 进行写入)。

sudo VirtualBox
  • Oracle VirtualBox 菜单:“汽车“——”创建

    德布01

  • 为虚拟机起一个名称。 在这个例子中,这个名字是sparky。
    德布02

  • 在“ISO image”项中我们不选择任何内容

  • 其他项目:Linux Debian(64 位)

    德布03

  • 下一个,下一个,准备好
    德布04

让我们更改新创建的虚拟机的参数:参数 - “媒体”部分。
德布05

让我们指出我们的 USB 闪存介质和可启动 ISO 文件。

在“使用现有虚拟硬盘”项中 - 选择文件
\.vmdk (在本例中,它称为“usb_harddisk.vmdk”)在本地计算机上。

德布06

因此,我们的 USB 闪存的 vmdk 控制器将出现在“SATA 控制器”部分的虚拟目标设置中:

德布07

取消选中音频。 您可以启用 I/O 缓存。

德布08

现在让我们连接一个虚拟 CD/DVD 驱动器,从来宾操作系统的 ISO 映像启动并安装它。

德布09

在窗口中,单击“加号”按钮添加驱动器,如图所示。

德布10

选择ISO启动盘镜像文件。 在本例中,它是 Sparky Linux。 这样我们就可以将 ISO 添加到虚拟 CD/DVD 驱动器中。

德布11

选择
德布12

添加了 CD/DVD 启动盘。
让我们从 IDE 控制器中删除“Empty”条目。
德布13

启动盘“Sparky Linux”安装在虚拟CD/DVD驱动器中,一切准备就绪,可以开始了
德布14
德布15
让我们启动虚拟机:

德布16

我将保留在虚拟机中安装 Sparky 的步骤,不加评论,因为……从图片中一切都清楚了。
德布17
德布18
德布19
德布20
德布21
德布22
德布23
德布24
德布25
德布26
德布27
德布28
德布29
德布30
德布31

!! !在 USB 闪存上存储的虚拟机上安装 Sparky Linux 成功!


对于没有 VT-X 的旧处理器,迁移到 VirtualBox 5.2

在版本 6.0 和 7.0 中,在没有硬件虚拟化的处理器上(或禁用相应的 BIOS 参数时),会显示错误 VERR_CMX_NO_VMX。 唯一的出路就是将版本回滚到5.2。

V! 适用于 Ubuntu 18.04“Bionic Beaver”的 Virtualbox 5.2 于 2020 年 7 月发布,当时内核为 5.0 - 5.6。 VirtualBox 5.2 最多只能运行在 Linux Mint 19.3“特里西亚”(19.3 伴侣 )或 Ubuntu 20.04 操作系统(目前支持 - 直到 2025 年 4 月)或基于 Ubuntu 20.04 开发的 Russian Linux Lite 5.6 操作系统。

! 最新的 Linux Mint 22.04 不运行 5.6 内核或 VirtualBox 5.2。
!!在 5.2 版本中,无法将物理闪存驱动器作为 RAW 设备连接(本文的主题),只有可能 (https://www.virtualbox.org/manual/ch01.html#intro-starting-vm-first-time)[从 ISO 文件安装操作系统]到虚拟硬盘。

1)安装VirtualBox 5.2之前,必须删除旧版本VirtualBox 6或7的痕迹

sudo apt remove virtualbox-6.1 virtualbox-7.0
sudo mv /lib/modules/$(uname -r)/updates/dkms/vbox* /tmp

2) 下载 VirtualBox 5.2(适用于 Ubuntu 18.04 / 18.10 / 19.04)。

*下载_旧_构建_5_2

3) 安装 VirtualBox 5.2 - libvpx5 库和 python 2.7 编程环境的依赖项。

sudo apt update
sudo apt install ca-certificates
wget http://ftp.de.debian.org/debian/pool/main/libv/libvpx/libvpx5_1.7.0-3+deb10u1_amd64.deb
sudo dpkg -i libvpx5_1.7.0-3+deb10u1_amd64.deb

检查了python版本:

python -v

如果未安装python 2(Linux Mint 19.3默认已安装,无需安装),请安装:

sudo apt安装python2

需要 Python 版本 2.7。
如果主 virtualbox 软件包安装不正确,该命令可能会有所帮助 sudo apt install python-is-python2

最后一个需要手动解决的依赖项是 libqt5opengl5 库:

sudo apt install libqt5opengl5

5) 为 VirtualBox 5.2 安装内核 5.0、5.4、5.6 或 5.10

在 Linux Mint 19.3“Tricia”中,默认内核是 5.0 - 适用于 VirtualBox。 无需安装任何东西。
Linux Mint 19.3 包含的软件包:
*linux-headers-5.0.0-32*
linux-headers-5.0.0-32-generic
linux-image-5.0.0-32-generic
linux-modules-5.0.0-32-generic
linux-modules-extra-5.0.0-32-generic
linux-tools-5.0.0-32-generic**

无需安装内核5.4。 但是,VirtualBox 将以 5.4 内核启动,可以从以下软件包安装:
*linux-headers-5.4.0-100*
linux-headers-5.4.0-100-generic
linux-image-5.4.0-100-generic
linux-modules-5.4.0-100-generic
linux-modules-extra-5.4.0-100-generic
linux-tools-5.4.0-100-generic**

在 Ubuntu 20.04 (Linux Lite 3.6) 中,您可以将 Linux 内核更新到版本 5.6 :在“更新管理器”-查看-Linux内核中,安装内核5.6(linux-image-5.6.0-1028-oem)。 或者在 Synaptic 中安装软件包:
*linux-headers-5.6.0-1028-oem*
linux-image-5.6.0-1028-oem
linux-modules-5.6.0-1028-oem
linux-modules-extra-5.6.0-1028-generic**。
*linux-tools-5.6.0-1028-oem

安装Linux内核 5.10 在 Linux 20.04 中可能:在“更新管理器”-查看-Linux 内核中,安装内核 5.10 (linux-image-5.10.0-1016-oem)。 或者在 Synaptic 中安装软件包:
*linux-headers-5.10.0-1016-oem*
linux-image-5.10.0-1016-oem
linux-modules-5.10.0-1016-oem
linux-modules-extra-5.10.0-1016-generic**。
*linux-tools-5.10.0-1016-oem

此操作仅适用于 Ubuntu 20.04 及更早版本,例如 19.04、18.10、18.04 或 16.04。在最新的 Ubuntu 22.04 或 Linux Mint 21.x 上,由于依赖关系未满足,旧内核无法工作。

如果您已更新内核,请重新启动并在 Grub2 菜单中的附加启动参数中选择 内核 5.4、5.6 或 5.10:

须藤重新启动

选择内核 5.0、5.4、5.6 或 5.10,然后按 Enter。

如果加载 5.0 以上的内核后,分辨率为 640 x 480,而不是预期的分辨率,请编辑 /etc/default/grub 并向其中添加以下行
GRUB_GFXMODE=1280x1024#你的显示器分辨率

然后我们执行
sudo update-grub

我们再次重新启动 PC,并选择相同的内核。 现在显示分辨率正常。

6) 安装虚拟盒 5.2
如果之前安装的 VirtualBox 5.2 未配置(有错误),我们将删除该安装。

sudo apt --修复损坏的安装

使用以下命令安装 virtualbox:

sudo ~/Downloads
sudo dpkg -i virtualbox-5.2_5.2.44-139111~Ubuntu~bionic_amd64.deb

7) 将 virtualbox 5.2 的内核驱动程序安装到内核中。

sudo /sbin/vboxconfig

8)检查:

lsmod | grep vbox
sudo systemctl status vboxdrv

9) 通过“开始”菜单启动(按名称 VirtualBox 搜索)。
或者从命令行:

 virtualbox

虚拟盒=> 帮助 => 关于程序显示版本 5.2.44。

! 在 VirtualBox 5.2 和不支持 VT-X 的处理器中,只能在虚拟机中安装32 位版本的分发套件 (i386 - i486 - i586 - i686)

安装选项 #3 的提示。 创建可启动 USB 闪存驱动器的最佳方法

!!! 如何制作普通的启动U盘(启动方法三,通过电脑的启动菜单):

复印除外 dd if=some.iso of=/dev/sdc bs=1M,有两种新方法:

在 Windows 中 - 程序 鲁弗斯:
*https://rufus.ie/ru/

在 Linux 上:
*https://etcher.balena.io/

! Balena Etcher 应用程序以 CD-R ISO9660 格式(“只读”)写入可启动 USB 闪存。 写入具有持久化功能的U盘,请参见 文章“如何持久刻录用于 antiX / MX Linux 的可启动 USB 闪存”


资料来源:
VirtualBox 文档
对处理器的虚拟化技术支持
*来自askubuntu.com 用户的提示

文档:
VirtualBox 5.2.44 用户手册.pdf
VirtualBox 6.1.46 用户手册.pdf
*VirtualBox 7.0.10 用户手册.pdf


最后修改日期:2026年6月1日



相关出版物