Ainul Ξ Creative Dev

Ainul Ξ Creative Dev

Product-focused software engineer.
twitter
tg_channel

使用虚拟机提升M1性能

由于某些原因,可能在后面的帖子中会变得清晰,我一直在尝试在我的 M1 上运行一个简单的 Debian 虚拟机,结果发现这并不像在 Intel 处理器上那么简单。

虚拟机管理器如 VirtualBox / VMWare / Parallels 是虚拟化引擎,而不是 CPU 模拟器,也就是说,它们无法在 ARM 芯片上运行 / 翻译为 x86 处理器设计的 CPU 指令(这是一个 难的问题)。当苹果切换到 ARM(大约两年前!)时,他们使所有这些工具与新的 M1 机器根本不兼容。我还认为 Rosetta2 在这些情况下没有帮助,因为它在软件栈中运行在更高的层次。我可能在这里错了。

如果你今天在寻找一个简单的 GUI 解决方案,你最好的选择是 UTM。这是你能找到的最接近 “即插即用” 类别的工具。UTM 是由 QEMU 提供支持的,QEMU 一个 CPU 模拟器(稍后会详细介绍),因此它可以运行 ARM 和 x86 操作系统。他们甚至还有一个 iOS 应用,真是不可思议!不过据我所知,它确实需要越狱,老实说,我从来没有需要在移动中使用虚拟机的情况。

VirtualBox 现在也有一个 适用于 M1 的 ARM 版本,但他们将其标记为 “开发者预览”,而且这确实是一个与众不同的 Beta 软件。我尝试了几个小时后,什么都无法正常工作。不推荐使用,除非你在它稳定时阅读这篇文章。

付费选项(VMWare Fusion 和 Parallels)看起来更有前景,特别是因为它们并不便宜,但我没有尝试这些,我的实验没有证明花费超过 100 欧元购买我不知道是否有效的软件是合理的,而且我可能不会再使用它。

如果你在寻找更轻量级的东西(比如没有桌面环境的 Debian 机器,你可以通过 SSH 访问),情况就要复杂得多。libvirt 是一个针对 *nix 系统的开源虚拟化库,似乎对虚拟化至关重要。我相信它确实进行 CPU 模拟。基于此的是名为 QEMU 的软件,它为 UTM 提供支持。但我们可以将 QEMU 与 Vagrant 配对,以相对简单地启动虚拟机(至少一旦你弄清楚发生了什么。我花了 几天 才达到这一点 😔)。

首先,我们将安装 Vagrant 和 QEMU,我将其视为增强版的 Docker。我们需要为它安装一个 QEMU 插件。我找到了 vagrant-qemu,它工作得非常出色。它有一些限制(例如不支持 vagrant package),但这些对我们现在要做的事情并不重要:

$ brew install vagrant
$ brew install qemu
$ vagrant plugin install vagrant-qemu

接下来,我们需要在 Vagrant Cloud 上找到一个预构建的 Debian Vagrant Box。将 Provider 分段控制切换到 libvirt 并搜索 Debain 11。好的,剧透警报:官方的 bullseye 镜像无法使用。我给了它一个公平的机会,但为了取得进展,我最终决定放弃它,而是使用 这个盒子,它基于 Ubuntu(足够接近)。

快到了 —— 你需要在文件系统中的某个地方创建一个名为 Vagrantfile(没有扩展名)的文件,内容如下:

Vagrant.configure("2") do |config|
  config.vm.box = "perk/ubuntu-2204-arm64"
  config.vm.provider "qemu" do |vb|
  end
end

然后在该目录中运行 vagrant up。Vagrant 将下载这个盒子(可能需要一点时间,请耐心等待!),然后使用 QEMU 启动一个 Ubuntu 虚拟机!它会创建一个 .vagrant 目录,用于存储这个虚拟机的状态。顺便说一下,CLI 在 vagrant up 后会退出,所以如果你想检查虚拟机的状态,你应该能够运行 vagrant global-status

现在我们终于可以通过运行以下命令 SSH 进入这台机器:

$ vagrant ssh

请注意,你必须在包含 Vagrantfile 的目录中运行此命令。正如我所说,Vagrant 将机器的状态存储在该目录中。

完成后,你可能想使用 vagrant halt 关闭机器(同样在同一目录中)。如果你想删除这个虚拟机,你可以在该目录中执行 vagrant destroy

成功了!

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。