Tails OS 通过 .iso 或 .img 文件分发。唯一的 .img 可以具有持久存储,但只有 .iso 可以安装到 VirtualBox 并正确启动。我想要 VirtualBox Tails 机器,具有持久存储和安装第三方软件的能力。
以下是我所做的。简而言之,我决定使用闪存驱动器模拟器。我使用的是 Ubuntu 18.04。
我dummy_hcd.ko
为我的内核构建并通过获取闪存驱动器
$ sudo modprobe dummy_hcd
$ fallocate -l 8GiB /path/to/flash-drive-file
$ sudo modprobe g_mass_storage file=/path/to/flash-drive-file idVendor=0x1d6b idProduct=0x0104 iManufacturer=Myself iProduct=VirtualBlockDevice iSerialNumber=123
然后我展开Tails 操作系统 .img 文件dd
通过发出以下命令使用通常的 USB 闪存驱动器到该驱动器(/dev/sdd
是我的虚拟闪存驱动器)
$ dd if=tails-amd64-3.13.2.img of=/dev/sdd bs=16M
之后我得到了/dev/sdd1
可以安装并查看图像内容的分区。它的大小恰好等于tails-amd64-3.13.2.img
文件大小。
然后我创建了绑定到/dev/sdd
via 的.vmdk VirtualBox 文件
$ sudo VBoxManage internalcommands createrawvmdk -filename ~/usb.vmdk -rawdisk /dev/sdd
我创建了新的虚拟机并选择了这个 .vmdk 文件,然后启动它。不幸的是,在启动时它抱怨磁盘空间不足并停止启动。我gparted
调整了这个分区的大小。gparted
向我显示一条建议修复 GPT 表的消息,我接受了它。也是一样 parted
。
Warning: Not all of the space available to /dev/sdd appears to be used, you can
fix the GPT to use all of the space (an extra 14364672 blocks) or continue with
the current setting?
Fix/Ignore? Fix
Model: Linux File-Stor Gadget (scsi)
Disk /dev/sdd: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1235MB 1234MB fat32 Tails boot, hidden, legacy_boot, esp
之后(仅足以应用 GPT 修复,而不是实际使用未分配的空间),不幸的是,我从内核收到此消息。我想它可能找不到要安装的根文件系统并继续init
从此文件系统启动过程。
但 shell 可用,rootfs 已挂载到 ramdisk 并可以列出。
答案1
以下已成功测试虚拟盒 6.1.32和尾巴5.1。
第 1 步:准备磁盘映像
将下载的镜像转换为VDI格式:
$ VBoxManage convertfromraw Tails-amd64-5.1.img Tails.vdi --format vdi
(注意:此后不再需要 .img 文件,可以将其删除)
调整 VDI 大小以为持久卷腾出空间:
$ VBoxManage modifyhd Tails.vdi --resize 16384
(注意:使用 8000 MB + <所需的持久卷大小(以 MB 为单位)> 作为调整大小值)
第 2 步:设置虚拟机
跟着项目网站上提供的说明为 Tails 设置新的虚拟机
更改新创建的 VM 的以下设置:
系统->母板->扩展功能-> ☑启用 EFI(仅限特殊操作系统)
(注意:需要能够从 USB 存储启动)
贮存->添加新的存储控制器(底部最左边的图标)->USB
贮存->控制器:USB->添加新的存储附件(底部左起第三个图标)->硬盘-> 选择步骤 1 中创建的 VDI 映像
设置虚拟机分辨率(可选):
$ VBoxManage setextradata <vm-name> VBoxInternal2/EfiGraphicsResolution <resolution>
(注意:
<resolution>
以“WIDTHxHEIGHT”格式提供,例如“1600x900”)
步骤 3:启动虚拟机,设置持久卷
启动虚拟机
从启动菜单中选择尾部(外部硬盘)
(注:请参阅这个答案关于如何永久修改启动菜单(如果需要)
Tails 启动后,选择应用领域->尾巴->配置持久卷设置持久卷
截图:
答案2
问题是您创建的磁盘没有作为可移动 USB 驱动器连接到 VirtualBox,而这正是 Tails(或者更准确地说,live-boot
Tails 使用的工具)正在寻找的。据我所知,VirtualBox不支持将磁盘添加为可移动USB驱动器。
但由于您使用的是 Ubuntu,因此您可以使用virt-manager
VirtualBox 来代替 VirtualBox 在虚拟机中使用持久卷:https://tails.boum.org/doc/advanced_topics/virtualization/virt-manager/index.en.html#usb_image
答案3
没有足够的“声誉”来投票或评论 @Maxxim 的答案,这是一个补充(请随意融入到您的答案中,Maxxim):
采用 Maxxims 方法后,必须手动选择第三个启动选项 every.single.boot。 IMO 更好的是从 rootshell 编辑 grub.cfg:
mount -o remount -w /lib/live/mount/medium/
find /lib/live/mount/medium/EFI/debian/ -name "grub*.cfg" | xargs sed -i 's/ live-media=removable//g'
mount -o remount -r /lib/live/mount/medium/
之后,Tails 开始无交互。
答案4
AFAIK,你“不能”(*)同时运行 Virtualbox 和 virt-manager,因为它们会争夺硬件的控制权(我很乐意在这个问题上犯错......)。如果已经拥有许多 VirtualBox VM 并且只想另外运行 Tails,那么这将是一个令人震惊的问题。需要能够同时运行两者,或者找到一种方法在 Virtualbox 上执行此操作。目前的替代方案(将所有内容移至 virt-manager)是一个更大的问题 - 一个相当艰巨的任务。
(*)参考号https://askubuntu.com/questions/413511/can-virtualbox-and-kvm-run-alongside-each-other
Virtualbox 中有一个工具“有时”可以解决此限制(“无法将磁盘添加为可移动 USB 驱动器”);扑通启动管理器,参考号:-https://www.howtogeek.com/97923/how-to-boot-a-vmware-virtual-machine-from-a-usb-drive/ -https://www.plop.at/en/bootmanagers.html