在 VirtualBox 上安装带有持久存储的 Tails

在 VirtualBox 上安装带有持久存储的 Tails

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/sddvia 的.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 步:准备磁盘映像

  1. 下载USB镜像来自该项目网站的 Tails

  2. 将下载的镜像转换为VDI格式:

    $ VBoxManage convertfromraw Tails-amd64-5.1.img Tails.vdi --format vdi

    (注意:此后不再需要 .img 文件,可以将其删除)

  3. 调整 VDI 大小以为持久卷腾出空间:

    $ VBoxManage modifyhd Tails.vdi --resize 16384

    (注意:使用 8000 MB + <所需的持久卷大小(以 MB 为单位)> 作为调整大小值)

第 2 步:设置虚拟机

  1. 跟着项目网站上提供的说明为 Tails 设置新的虚拟机

  2. 更改新创建的 VM 的以下设置:

    • 系统->母板->扩展功能-> ☑启用 EFI(仅限特殊操作系统)

      (注意:需要能够从 USB 存储启动)

    • 贮存->添加新的存储控制器(底部最左边的图标)->USB

    • 贮存->控制器:USB->添加新的存储附件(底部左起第三个图标)->硬盘-> 选择步骤 1 中创建的 VDI 映像

  3. 设置虚拟机分辨率(可选):

    $ VBoxManage setextradata <vm-name> VBoxInternal2/EfiGraphicsResolution <resolution>

    (注意:<resolution>以“WIDTHxHEIGHT”格式提供,例如“1600x900”)

步骤 3:启动虚拟机,设置持久卷

  1. 启动虚拟机

  2. 从启动菜单中选择尾部(外部硬盘)

    (注:请参阅这个答案关于如何永久修改启动菜单(如果需要)

  3. Tails 启动后,选择应用领域->尾巴->配置持久卷设置持久卷

截图:

启用 EFI 以进行 USB 启动

添加 USB 存储/图像

选择正确的启动菜单项

设置持久卷

答案2

问题是您创建的磁盘没有作为可移动 USB 驱动器连接到 VirtualBox,而这正是 Tails(或者更准确地说,live-bootTails 使用的工具)正在寻找的。据我所知,VirtualBox不支持将磁盘添加为可移动USB驱动器。

但由于您使用的是 Ubuntu,因此您可以使用virt-managerVirtualBox 来代替 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

相关内容