MacのVirtualboxでゲストVMのXを使うと激重なのをなんとかする話。

最近、持ち歩き用のマシンとしてMacbook Pro 13インチ (2020)を買いました。

というのも、持ち歩き用に活躍していたThinkpad X220 (2011年)がいい加減にバッテリーの持ちが悪い(Sandy)世代で、そもそもCPUの省電力性が微妙でバッテリーの持ちが悪く、カンファレンス会場とかでAC電源の近くに常に陣取らなきゃいけないのがいい加減に嫌になってきたと。

まあ、Macである必要はなかったんですが、2020年版のMBPはキーボードが普通のシザー式に戻ったり、物理Escキーが復活したりと、パワポが動くUnixマシンという意味でとても良いマシンだと思ったので買ってみたということです。

まあ、来年出るであろうApple SiliconなMacbookのほうがARMな分、もっとバッテリーの持ちはいいのでしょうけどね。
2020年版は最後のIntel MBPだろうし、ARM版Macは仮想化環境のサポートとか従来のx86アプリがRosetta2でどの程度動くのか未知数なので、とりあえず安牌なIntel Macというのは今の時点では最良の選択だと思っています。

そんなわけで、MacにVirtualBoxをぶち込んで、x86_64なDebianを動かしてみたわけなんですが、なんかXを使うと極端に遅いんですよね。。。
フレームバッファーでは割と普通に動くのに、Xを起動すると極端に重い。

で、ググってみたんですが、なんかMac版のVirtualBoxでは割と有名な現象らしく、特にRetina搭載のMacでやるとマウスの描画が極端に遅かったり、GUIが操作不能になったりするらしいです。

それで、VirtualBox側の設定を色々弄ってみたんですが、結局分かったこととして、Retinaに合わせてゲストVMの設定のScale Factorを200%とかにしてると極端に重くなるっぽいという。

で、Scale Factorを100%に戻しておくとゲストVMでXを立ち上げて、マウス操作でウィンドウのドラッグとかをしてもさほど重くないんですが、今度は別の問題として、ゲストVMの解像度がRetinaのdot by dot表示になってしまい、Retinaだと細かすぎて読めないという。(まあ、ゲストVMのXのほうでHiDPI表示にしちゃうという手もあるかもしれないけど。。)

200%表示にするとゲストVMのXが激重になるのは、VirtualBoxのスケーリング機能があまりイケてないからということはなんとなく理解したのですが、このままだとVMの使用に耐えないので、対処を探していました。

で、結論としては、MacOSの機能でアプリ(*.app)単位でHiDPI表示を無効化できる機能があり、これを使うことで対処できました。

どうするかというと、Finderで Applications -> VirtualBox.app と辿っていき、FinderのコンテキストメニューからShow Package Contents (日本語版だとなんて表示されるんだろう?)と選ぶと、appパッケージの中身を辿れるので、そのままContents -> Resources -> VirtualBoxVM.app と辿り、ここでまたコンテキストメニューからGetInfo (⌘-i) とやってVirtualBoxVM.appのプロパティを出します。

そうしますと、General以下に”Open in Low Resolution”というチェックボックスがあるので、これをチェックすることでHiDPI表示を無効化できます。

で、こうやってVirtualBoxのHiDPI表示を無効化した状態でゲストVM上を起動してみると、ゲストVMのスケーリングは100%のままXを起動しても割とちょうどいい感じのスケーリングで表示できるようになり、一応実用に耐える感じになりました。

実際これ困ってるの自分だけじゃないと思ったのですが、結局Mac版のVirtualBoxの移植が微妙なんですかね?

Leave a Reply

Your email address will not be published.