Ainul Ξ Creative Dev

Ainul Ξ Creative Dev

Product-focused software engineer.
twitter
tg_channel

使用虛擬機器提升 M1 性能

由於某些原因,這些原因可能在以後的文章中會變得清晰,我一直在嘗試在我的 M1 上運行一個簡單的 Debian 虛擬機,結果發現這並不像在 Intel 處理器上那麼簡單。

虛擬機管理器如 VirtualBox / VMWare / Parallels 是虛擬化引擎,而不是 CPU 模擬器,這意味著它們無法在 ARM 芯片上運行 / 翻譯針對 x86 處理器的 CPU 指令(這是一個 難的問題)。當 Apple 轉向 ARM(大約兩年前!)時,他們使這些工具與新的 M1 機器根本不兼容。我還相信 Rosetta2 在這些情況下沒有幫助,因為它在軟體堆棧中運行在更高的層次。我可能在這方面錯了。

如果你今天在尋找一個簡單的 GUI 解決方案,你最好的選擇是 UTM。這是你能夠接近 “即插即用” 類別的選擇。UTM 是由 QEMU 提供支持的,QEMU 一個 CPU 模擬器(稍後會詳細說明),因此它可以運行 ARM 和 x86 操作系統。他們甚至有一個 iOS 應用程序,真是驚人!不過據我所知,它需要越獄,老實說,我從來不需要隨身攜帶虛擬機。

VirtualBox 最近也有一個 ARM 版本針對 M1,但他們將其標記為 “開發者預覽”,而且這真的是一個與眾不同的 Beta 軟體。我嘗試了幾個小時後什麼都無法運行。不建議使用,除非你在它穩定時閱讀這篇文章。

付費選項(VMWare Fusion 和 Parallels)看起來更有希望,特別是因為它們不便宜,但我沒有嘗試這些,我的實驗並不值得花費超過 €100 購買我 1:不知道是否有效的軟體,和 2:可能不會再次使用的軟體。

如果你在尋找更輕量的東西(比如沒有桌面環境的 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(同樣在此目錄中)。

成功!

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。