12 ポイント 投稿者 GN⁺ 2023-12-31 | 2件のコメント | WhatsAppで共有

AppleシリコンのVMはなぜ違うのか?

  • AppleシリコンMacでmacOS仮想マシン(VM)を実行することはあまり人気がないように見えるかもしれないが、Appleにとって長年重要な目標の1つだった。
  • MシリーズMacで仮想化ソフトを使うと、Intel MacでmacOSやその他のオペレーティングシステムを仮想化するのとどれほど違うかが分かる。
  • 仮想化がなぜ重要で、どのようにそこまで変わったのかを説明する内容。

Appleシリコンの3つの柱

  • 2020年6月のWWDCでクレイグ・フェデリギがAppleシリコンの3つの柱を発表した。両アーキテクチャで動作するユニバーサルアプリ、IntelコードをArm命令へ変換するRosetta 2、そして仮想化だ。
  • AppleがDeveloper Transition Kitを発売する前から、アンドレアス・ベンドカーはLinuxをゲストとして動かすParallels Desktopのプレリリース版を実演していたが、Windowsへの言及はなかった。

仮想化の初期

  • 仮想化の初期には、ハードウェア上で直接動作するタイプ1ハイパーバイザーと、ハードウェア上にメインのオペレーティングシステムを動かし、その上でハイパーバイザーが動作するタイプ2(ホスト型)に分けられていた。
  • デスクトップコンピュータでは、VMware Fusion、Parallels Desktop、Oracle VirtualBoxのようなタイプ2仮想化製品のほうが一般的だ。

ハードウェア支援と仮想化

  • ハイパーバイザー向けのハードウェア支援があれば、修正していないゲストオペレーティングシステムを実行しやすくなる。
  • IntelのVT-x機能セット、またはArm CPUのAArch64仮想化を利用できる。
  • デバイスサポートの問題は仮想化フレームワークで解決することも、仮想化ソフト側で処理することもできる。

Appleシリコンチップの独自性

  • Appleシリコンチップ上のすべてのハードウェアデバイスは、Intel Mac上の対応するデバイスとは異なる。
  • たとえAppleが外部利用向けに完全な文書化を望んだとしても、Intel Macのデバイスサポートに必要なエンジニアリングの労力はサードパーティにとって高コストすぎただろう。
  • そのため、ハイパーバイザーから出発して完全な仮想化ソフトウェアを構築することを期待するのは現実的ではなく、Appleやユーザーが期待する高い性能を達成するのも難しかった。

Virtioドライバと仮想化

  • Appleは代わりに、macOSにデバイスサポートを組み込む形でVirtioドライバを構築した。
  • VirtioはI/Oデバイス向けの抽象化レイヤーを提供する標準で、ゲストオペレーティングシステムがファイルを開こうとすると、それはVirtioフロントエンドのストレージデバイス用パラドライバに渡され、そこからVirtioバックエンドドライバを通じてストレージデバイスとやり取りする。
  • 仮想化アプリを作るというのは、必要なVirtioデバイスを構成して開き、ゲスト、Virtio、ホストが処理を行えるようにすることだ。

AppleのVirtio採用

  • AppleがVirtioを採用した背景には、Linuxがすでに優れたVirtioサポートを備えていたことがあるが、当時のmacOSにはVirtioサポートがなかった。
  • Appleのエンジニアたちは、Montereyのリリース前の数年間にわたり、macOSにVirtioサポートを構築した。
  • macOSのVirtio実装には、キーボードやポインティングデバイス、共有クリップボード(「Spice」)、MetalおよびGPUサポートによる高性能グラフィックスを支える拡張機能が含まれている。

Virtioモデルの利点

  • Virtioモデルではオペレーティングシステムがサポートを提供するため、VMwareやParallelsのようなベンダーにとっては開発コストが下がる一方で、自社製品の商業的価値は下がる。
  • AppleはAppleシリコンにおいて、仮想化でサポートされるハードウェアと機能を決定する。

仮想化の未来と柔軟性

  • VMで旧バージョンのmacOSを動かせば、現在のmacOSでRosetta 2のサポートが終了した後でも、ユーザーはIntel専用アプリを実行できる。
  • AppleシリコンMacでは、最小対応macOSバージョンと互換性のないソフトウェアも実行できる。
  • LinuxまたはmacOSを使って、開発者はDockerのような軽量VMパッケージを配布できる。

GN⁺の見解

  • AppleシリコンMacでの仮想化は、従来のIntelベースの仮想化とは異なるアプローチを取っており、これはAppleがハードウェアとソフトウェアの統合をさらに強めようとする戦略の一部に見える。
  • Virtioを通じた仮想化は、開発者にコスト効率の高いソリューションを提供し、Appleの管理下で性能最適化を可能にする。
  • 仮想化技術の進展は、AppleシリコンMacのユーザーに長期的に多様なソフトウェア環境を提供できる可能性を開き、特に古いアプリケーションやシステムを支えるうえで有用になると見込まれる。

2件のコメント

 
molla 2024-01-02

仮想化の未来の部分は、少しおかしく見えます。
仮想化が可能だからといって、既存システムをそのまま互換できるわけではありません。結局どこかで、x86命令をarm命令に変換してやる必要があります。
これをHWやOS(Rosetta?)がサポートしてくれないなら、結局はVM側でエミュレーションするしかないのですが、この場合は性能低下が非常に大きいです。
今でもApple Silicon Macでx86向けLinuxをインストールすることはできますが、性能は信じられないほど遅いです。(去年だったか、x86向けバイナリが必要でビルド用に入れてみたものの、すぐに諦めました。)」}ുവനന്തപുരംച്ചി to=functions.submit_translation 天天中彩票为什么 利盛 code րեց_json: {

 
GN⁺ 2023-12-31
Hacker News の意見
  • Windows には Hyper-V に依存する機能が多く、これを有効にすると Windows が直接ブートされるのではなく Hyper-V が起動し、メインの Windows システムは特権を持つ VM 上で実行される。
  • Apple Silicon における x86-64 Windows/Linux 仮想化の現状について情報を探している人がおり、それに関する重要なアプリケーションについて記事で触れられていないのを残念がっている。
  • すべての OS ユーザーが OS の隔離された VM にログインすることを望んでおり、それによってユーザーは自分の Apple コンピューターの所有権を維持できる。
  • macOS は同時に 2 つの VM しか実行できないため、Mac mini をビルドサーバーとして使いたい場合は最も安いモデルを買うのがよい。
  • Parallels を使って macOS VM を開発に利用したかったが、Apple ID でログインできず、利用に制限がある。
  • Docker は Linux/amd64 プラットフォーム上でほぼネイティブ性能で高速に動作する一方、x86 UTM VM がはるかに遅い理由について混乱している。
  • Windows 向け virtio レイヤーの進捗や、誰が開発しているのか、そして近い将来に動作する可能性があるのかについての質問がある。
  • ラスティ・ラッセルが書いたドライバーへの言及があり、彼はソフトウェア開発に関する深い洞察を共有しているので、Twitter でフォローすることを勧めている。
  • すべての商用デスクトップ VM(VMWare Fusion/Parallels/UTM/Vimy)が現在は virtio モデルを使っているのか、そして理論上は ARM64 Windows がどれも似たように動作するはずなのか、という疑問がある。
  • M2 Apple Silicon チップで Qemu VM を 1 コマンドで作る方法を約 1 年間探しているが、macOS や AsahiLinux で Alpine Linux + Sway WM を Qemu で動かすのは x86-64 では比較的簡単である一方、難航している。