我知道,在 Linux 中,循环设备是一种伪设备,它使计算机文件可以作为块设备访问。我需要一些非常相似(或相同的东西?)来将文件用作 VirtualBox USB 设备。
我有一个 Linux 主机和一个 Linux 来宾。我的目标是在虚拟机中测试 Easy2Boot、UNetbootin、Ventoy 等工具。
最简单的情况是将真实的 USB 设备连接到主机,并将其用作来宾机器中的 USB 设备。它肯定会奏效。
然而,我的问题是,由于我必须使用慢速真 USB 进行数十次测试,我更愿意使用快速假 USB 进行相同的测试。
快速伪造的 USB 只不过是我计算机内部 SSD 驱动器中的一个文件。在这个快速 SSD 磁盘上,虚拟机也位于。
答案是,对于 VirtualBox,这是不可能的,正如评论Using a file as a USB device in VirtualBox中所指定的那样。 但是,它可以使用其他管理程序,例如 QEMU。
在这种特定情况下,在创建一个
qcow2
虚拟磁盘virt-manager
并在其上安装我选择的 Linux 系统(例如,Linux Mint 21)之后,我可以制作一个包含伪造 USB 设备的文件:fallocate -l 8G ./rawUsbDisk.img
我可以在主机上创建一个文件夹并与 Samba 共享它,以便来宾机器可以访问它(我需要将 ISO 文件放在那里进行测试)。QEMU 中的 SAMBA 共享在https://techpiezo.com/linux/shared-folder-in-qemu-virtual-machine-linux/进行了解释。
之后,我可以将
qcow2
文件移动到主文件夹以将其与 QEMU 一起使用,而不是virt-manager
.这是回答我问题的命令:
该
-boot menu=on
选项允许我在启动虚拟机时选择是从虚拟硬盘启动还是从假 USB 设备启动:以下选项适用于假 USB,并在https://qemu.readthedocs.io/en/latest/system/devices/usb.html中进行了说明:
这样,在虚拟机内部,Gparted 将
/dev/sdb
其视为 U 盘:创建msdos分区表和单个FAT32分区后,虚拟机正确识别假U盘:
我已准备好使用 Unetbootin 和类似工具进行尽可能多的测试:
运行 Unetbootin 或其他类似工具后,我可以重新启动虚拟机并从 USB 启动:
结果是我可以在几分钟内运行测试,而不是半小时或更长时间,因为我的硬件 USB 速度很慢。