Ainul Ξ Creative Dev

Ainul Ξ Creative Dev

Product-focused software engineer.
twitter
tg_channel

仮想マシンでM1を高速化

後で明確になるかもしれない理由で、私は M1 上でシンプルな Debian VM を実行しようとしていますが、これは Intel プロセッサ上で行うのが簡単ではないことがわかりました。

VirtualBox / VMWare / Parallels のような VM マネージャーは仮想化エンジンであり、CPU エミュレータではありません。つまり、x86 プロセッサ向けの CPU 命令を ARM チップ上で実行 / 変換することはできません(これは非常に困難な問題です)。Apple が ARM に切り替えたとき(約 2 年前!)、これらのツールは新しい M1 マシンと基本的に互換性がなくなりました。私はまた、Rosetta2 はこれらの場合には役に立たないと考えていますが、それはソフトウェアスタックの上位レベルで実行されるためです。ここで間違っているかもしれません。

もし今日シンプルな GUI ソリューションをお探しの場合、UTMが最適です。これは「うまく動作する」カテゴリーに最も近いものです。UTM は QEMU によって動作しており、これは CPU エミュレータです(後で詳しく説明します)。したがって、ARM と x86 の両方の OS を実行することができます。iOS アプリもあります、信じられないでしょ!ただし、私が見ている限りでは、Jailbreak が必要です。正直なところ、いつも持ち歩く必要のある VM は必要ありませんでした。

VirtualBox には最近、M1 向けの ARM ビルドもありますが、「開発者プレビュー」としてマークされており、他のベータソフトウェアのようです。何時間も試しても何もうまく動作しませんでした。安定化するまでおすすめしません、この記事を読んでいるとき以外は。

有料のオプション(VMWare Fusion&Parallels)はより有望に見えますが、安くはないため、私はこれらを試していません。私の実験は、1:動作するかわからないソフトウェアのために 100 ユーロ以上を費やすことを正当化しなかったし、2:もう一度触れるかもしれないという理由で、これらには挑戦しませんでした。

より軽量なものをお探しの場合(デスクトップ環境のない Debian マシンで SSH できるようなもの)、状況はかなり不安定です。libvirtは * nix システム用のオープンソースの仮想化ライブラリで、仮想化には基本的なものです。これは CPU エミュレーションを行うと思います。これを基にしたソフトウェアがQEMUです。これが UTM の動力源です。ただし、QEMU をVagrantと組み合わせて VM を簡単に起動できます(少なくとも何が起こっているかを理解するまでには時間がかかります。私には_数日_かかりました 😔)。

まず、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に切り替えて、Debian 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 VM を起動します!.vagrantディレクトリが作成され、この VM の状態が保存されます。ちなみに、CLI はvagrant upの後に終了するので、VM の状態を確認したい場合は、vagrant global-statusを実行できるはずです。

これで、次のコマンドを実行してこのマシンに SSH できるようになりました:

$ vagrant ssh

注意:このコマンドはVagrantfileがあるディレクトリで実行する必要があります。先に述べたように、Vagrant はこのディレクトリにマシンの状態を保存します。

終わったら、おそらくvagrant haltを使用してマシンをシャットダウンしたいと思うでしょう(同じディレクトリで再度実行します)。この VM を削除したい場合は、vagrant destroyを実行します(再度、このディレクトリで実行します)。

成功!

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。