我想创建两个 usb3 闪存驱动器,将 Windows 安装到这个新卷上,并能够对其进行虚拟化或从中启动。有什么想法吗?我听说 Parallels 可以虚拟运行 Bootcamp 安装。Macbook Pro 13 Retina
答案1
我知道已经三年了,但现在这极有可能实现。(实际上那时也同样有可能。)
不仅可能,而且快速、稳定、相当简单,并且,我敢说,优雅。
非必要先决条件
首先,您需要一个快速的 U 盘,例如 ScanDisk Extreme USB 3.0。对于这种情况来说,它的速度快得惊人。镜像两个是完全可能的,但并不是必需的。
就我个人而言,我也不会直接插入,而是通过短直角 USB 延长线插入。A) 柔性电缆可防止加密狗损坏 [例如,想象一下笔记本电脑的情况,大型 USB 加密狗从侧面直接伸出],B) 消除“嘿,看加密狗 - 拔掉我!”的诱惑 - 尤其是直角加密狗,C) 更少的人会过来给你他们的专家建议,警告你不要使用 USB 加密狗运行虚拟机。不知何故,使用 USB 电缆似乎更合法,或者也许这只是我的想法。哎呀,我只需将它们用魔术贴粘在笔记本电脑盖上(就像我以前在非常相似的原始 vmdk 配置中使用全功能 2.5 英寸旋转 USB 硬盘时所做的那样)。
脚步
对于一般步骤,我假设使用 VirtualBox,因为这是我最熟悉的并且是您问到的 - 但它也适用于 Vmware,也应该适用于 Parallels(但具有不同且不同程度的脚本能力)。
创建指向您的拇指驱动器的“原始”VMDK 文件。(整个文件,而不仅仅是分区。)对于两个镜像拇指驱动器,请对两者执行此操作。这是最重要的和最不直观的步骤,基本上会产生神奇的效果 - 稍后会详细介绍。
创建新的虚拟机,并将新的 VMDK 附加到该虚拟机。理想情况下,使用 ICH9、I/O APIC、硬件加速和 SATA 存储控制器配置虚拟机。
下载 Windows 安装 CD(最好是 ISO 文件格式)。将其附加到虚拟机并将其放在启动顺序的第一位。
启动虚拟机并等待 Windows 安装程序加载(如果是 ISO 文件,则会非常快)。
我不记得将 Windows 启动驱动器设为镜像的步骤 - 如果您先安装 Windows,然后使用磁盘管理来镜像它,或者在安装过程中创建镜像。无论哪种方式,它都与安装到两个镜像的真实硬盘驱动器一样简单,因为安装程序认为它正在使用它。但是,在此设置中,唯一可能的(或至少是可取的)镜像解决方案是本机 NTFS 镜像。此外,对于直接镜像,本机 NTFS 镜像优于任何其他镜像解决方案上的 NTFS [除了更奇特的配置,如 ZFS 支持的 NAS 上的 NTFS],因为它可以控制更多的堆栈,并且镜像几乎不会产生任何额外的 CPU 或内存资源(与基于奇偶校验的 RAID 不同)。
编写脚本来自动处理无效的 VMDK 问题
每次主机重启后,以及每次拔出/重新插入一个或两个拇指驱动器后,您的原始 VMDK[s] 都会失效。幸运的是,您可以在启动虚拟机时编写脚本来动态重新创建原始 VMDK[s]。以下所有命令都是通过 VBoxManage 完成的,但有一个命令除外。一般来说:
从虚拟机配置中删除虚拟 SATA 控制器(以解决 VBoxManage 无法单独删除虚拟驱动器的限制)。
从文件系统中删除实际的 VMDK 文件(使用常规文件系统删除命令,例如“rm”)。不用担心,它们只是小型元数据指针文件,不包含任何用户数据。
重新创建 VMDK,指向拇指驱动器的物理位置。
在虚拟机配置中创建一个新的 SATA 控制器。
将步骤 3 中的 VMDK[s] 附加到这个新的 SATA 控制器(确保包含启用主机缓存的标志)。
启动虚拟机。
瞧,轰!您正在运行一个操作系统,它认为自己位于 HDD 上,来自镜像拇指驱动器,并避免了 VM 常见的读/写惩罚。即使没有镜像,它也会出奇地快和有用(当然,速度不如 SSD 快)。对我来说,以这种方式在快速 SD 卡上运行的 VM 中的 Linux 感觉与 HDD 上的本地一样快。(使用速度相当快的计算机、足够的 RAM 和包括内存映射在内的完整硬件加速。)
是否也可以作为真正的“主机”操作系统启动?
您没有明确说明这是否也需要能够作为“真实” Windows 安装启动。但如果是这样,则存在两个重大障碍:
让原生 Windows 安装在本机启动和虚拟机启动之间交替进行 - 并且不会出现激活和/或驱动程序的问题 - 这本身就是一个巨大的挑战(例如与主机和客户机安装相同的 Windows)。Mac OS 上的 Parallels 巧妙地解决了 Bootcamp 上的 Windows 问题(至少曾经解决过),但为实现这一目标,我们投入了大量的软件工程时间。它是其它虚拟化解决方案也能实现这一目标,但似乎是一种很少有参考的黑魔法。
似乎 Windows 并不适合安装在 U 盘上,而且显然不会允许你这样做(即它没有被虚拟化欺骗)。因此,当我们将它安装到 USB(使用虚拟化和原始 VMDK 映射很容易)并在本机运行时,我们进入了未知领域。它很可能被零除并摧毁宇宙。
我只能肯定地告诉你这一点:在真正的拇指驱动器或 SD 卡上安装 Linux 至少是可能的,但非常具有挑战性。通过虚拟机中 VMDK 映射的“硬盘驱动器”在拇指驱动器或 SD 卡上安装 Linux,然后本地启动它非常简单!而且效果非常好 - 事实上,大型发行版升级在本地运行时不会让人感到不适,因为您完全知道它是在拇指驱动器或 SD 卡上运行,而不会受到 VM 的欺骗。
简而言之,在拇指驱动器上的虚拟机中使用 Windows 进行操作。只是要做好在尝试以拇指驱动器本地启动 Windows 时一切都崩溃的准备!但如果成功了,请分享您的结果,您将被誉为巫师。
真正让这个魔法发挥作用的是,在原始 VMDK 上运行虚拟机。这是至关重要的:
- 从安装角度来说,它使事情变得容易得多。
- 它非常快:它消除了双 I/O 的巨大性能损失,因为只有底层主机处理物理设备 I/O。(而不是客户机对虚拟 HDD 文件执行“物理”I/O,然后主机依次对底层设备执行物理 I/O。相反,虚拟机管理程序会拦截虚拟写入,并将其直接发送到底层存储。)
- VirtualBox 至少在将 USB 正确传输到虚拟机方面存在很大问题(这是一个难以攻克的技术难题),这使得启动 USB 存储(包括 SD 卡读卡器)非常困难。使用原始 VMDK,它非常稳定,存储堆栈中没有可怕的 USB 问题。
将操作系统映射到拇指驱动器还有其他可能的解决方案,原始 VMDK 并不是唯一的解决方案:
- USB 直通。如前所述,非常不稳定、笨拙且不建议使用。如果您采用这种方式,至少使用原始 VMDK 解决方案进行实际操作系统安装 - 然后删除 VMDK 并通过 USB 直通将其重新添加。
- 常规虚拟化磁盘映像文件,存储在拇指驱动器上。此解决方案将使安装比原始 VMDK 方法更容易一些,并且更易于管理(您不必每次都重新映射原始 VMDK)。它也更便携 - 您可以将 VM 定义本身及其虚拟化磁盘映像文件(甚至是 virtualbox 安装程序可执行文件)存储在拇指驱动器上,并在不同的主机上任意移动它。(虽然在任意主机上运行 Windows VM 需要一些额外的工作,因为 VirtualBox 默认通过主机元数据。)但最大的缺点是双 I/O,这会使拇指驱动器上的速度变慢。但也许这对您来说是值得的,因为它更容易管理(至少没有脚本),而且更便携。此外,此解决方案不允许您本地启动任何东西 - 它只是拇指驱动器上的一些常规数据文件。