Rosetta 2の棚卸しをしていて、ふと自分のParallels Desktopの中身を覗いたら、Intel専用のバイナリがぞろぞろ出てきました。仮想ディスクを扱うツール、内部ライブラリ、極めつけはハイパーバイザーのカーネル拡張まで、全部x86_64。私はこのParallelsでWindows 11を毎日動かしています。一瞬、背筋が冷えました。Rosetta 2はmacOS 28で縮小される。ということは、私の仮想マシンも巻き添えで動かなくなるのか。
先に答えを書きます。私の使い方では、困りませんでした。理由は、ARM版のWindowsを動かしているParallelsの仮想化エンジンが、そもそもRosetta 2を通っていないからです。中身にIntelバイナリがあることと、自分の仮想マシンがIntelに依存していることは、別の話でした。この記事は、その冷や汗から安心までの切り分けの記録です。
中を掘ったら、確かにIntelだらけだった
きっかけはRosetta 2が消える前にMacの中のIntelを棚卸しした記事です。アプリ本体のアーキテクチャは lipo で分かりますが、Parallels Desktopの本体は x86_64 arm64 のUniversalで、一覧上はネイティブに見えていました。ところが find でアプリ内の全Mach-Oを走査すると、様子が違いました。
| 1 2 3 4 5 6 | [Intelのみ] x86_64 Contents/MacOS/prl_disk_tool [Intelのみ] x86_64 Contents/MacOS/prl_convert [Intelのみ] x86_64 Contents/MacOS/prl_mkiso [Intelのみ] x86_64 Contents/MacOS/libMonitor.dylib [Intelのみ] x86_64 Contents/Frameworks/libDaApiWrap.1.dylib [Intelのみ] x86_64 Contents/Library/Extensions/10.9/prl_hypervisor.kext/Contents/MacOS/prl_hypervisor |
仮想ディスクを扱う prl_disk_tool、ISO作成の prl_mkiso、内部ライブラリ、そして prl_hypervisor.kext というカーネル拡張。ハイパーバイザーは仮想マシンの心臓部です。そこが x86_64 と出た瞬間に、これは自分の Windows 11 が動かなくなる話だ、と早合点しました。棚卸し記事では「本体Universalでも中はIntel」の一例として名前を出しただけでしたが、当事者として読み直すと、まったく他人事ではなくなります。
公式情報を読んだら、早合点だった
落ち着いて、Parallelsの公式KBを読みました。書いてあったのは、Apple SiliconのMacでは事情がまるごと違う、ということでした。Rosettaはそもそも仮想マシンアプリの実行部分を翻訳できません。Parallelsの説明では、Rosettaが面倒を見るのは本体のユーザーインターフェースとWebサービスまでで、仮想マシンそのものは対象外。Apple Silicon上で仮想マシンを動かすために、Parallelsのエンジニアはチップのハードウェア仮想化を使う新しいエンジンを別に作り直していて、それがArmベースの仮想マシンを走らせています。
つまり、私が見た prl_hypervisor.kext の x86_64 は、Intel Mac時代から引き継がれている資産か、あるいはx86系の処理に使う裏方であって、Apple Silicon上でARM版Windowsを動かすときの本線ではない、と読めます。心臓部だと思ったカーネル拡張は、私のユースケースでは通り道になっていなかった。中にIntelバイナリが残っていることと、いま自分が使っている経路がIntelを踏むことは、イコールではありませんでした。
自分のWindowsが何で動いているかを、確かめた
公式の説明を自分の環境で裏取りします。仮想マシンのWindows 11の中で、設定からシステムのバージョン情報を開き、システムの種類を見ました。

システムの種類は、64ビット オペレーティング システム、ARMベース プロセッサ。プロセッサの欄も Apple Silicon。私のWindows 11はx86ではなくARM版で、MacのApple Siliconの仮想化で直接動いていました。Rosetta 2は、この経路に一枚も噛んでいません。だから、Rosetta 2がmacOS 28で縮小されても、このWindows 11の仮想マシンは止まらない。冒頭で背筋が冷えた事態は、私の使い方では起きない、と実機で確認できました。
では、あの裏方のIntelはいつ効くのか
影響がまったくない、と言い切ると不正確になります。Rosetta 2の縮小が実際に効いてくる使い方が、ちゃんと存在するからです。ひとつは、Parallels DesktopのProやBusinessエディションが持つ、ARMのLinux仮想マシンの中でx86-64バイナリを動かす機能です。これはx86 Dockerコンテナを回すときなどに使われ、Parallelsの説明でもApple Rosettaを土台にしていると明記されています。ここはmacOS 28でRosetta 2が縮小されれば、影響を受け得る場所です。もうひとつは、ARM版ではなくIntel版のWindowsやx86のOSを仮想マシンとして動かしている場合。この経路はx86のエミュレーションや翻訳に踏み込むので、事情が変わってきます。私のようにARM版Windowsを普通に使っているだけなら本線は無事ですが、VMの中でさらにx86のものを動かしている人は、自分がどちらの経路にいるかを一度確認しておく価値があります。

時期の誤解も解いておきます。Rosetta 2は、今秋のmacOS 27 Golden Gateではまだ動きます。縮小されるのは次のmacOS 28で、時期は2027年後半とされています。今すぐ何かが止まるわけではありません。すでにmacOS 26.4のベータでは、Intelベースのアプリに「将来のmacOSで開けなくなる」という警告通知が出始めていて、地ならしは進んでいます。ただ、仮想マシンの中で完結しているARMのWindowsは、この警告の対象ともまた別の層の話です。
冷や汗の答え合わせ
棚卸しでParallelsの中身を覗いて背筋が冷えたのは、アプリの中にIntelバイナリを見つけたからでした。でも、見つけたことと、自分が困ることは、同じではなかった。私のWindows 11はARMで、Apple Siliconの仮想化がそのまま動かしていて、Rosetta 2の通り道の外にいた。心配すべきだったのは「中にIntelがあるか」ではなく「自分が使っている経路がIntelを踏むか」で、確かめる場所も、Macのアプリではなく仮想マシンの中のシステム情報でした。もしあなたもApple SiliconのParallelsでWindowsを動かしているなら、同じ一画面で、同じ答え合わせができます。
関連: Rosetta 2が消える前に、Macの中のIntelをコマンドで棚卸しした(この記事の入口になった棚卸し)。参考: Parallels KB「About Parallels Desktop for Mac with Apple silicon」、Apple「Using Intel-based apps on a Mac with Apple silicon」。

コメント