M1 Mac速いけどまだ足りない…
M1 Chip搭載のMacbookProを入手して、いろいろとテストしている。
確かに速い!メモリ8GBで苦しいんじゃ?と思ったけど全然そんなことないし、Intelの16GB相当と言えるような感じ。
バッテリーの持ちも本当に良いし、ZoomやSkypeを使うときはメインマシンとなっている。
さて、今回はこれまでx86対応が遅れている箇所を検証してみた。
目的はM1 Mac上に仮想環境を構築し、その中でLinuxを動作させること。
VirtualBoxが動作しないので、他に方法はないのかと探してみると、OpenSource Base(QEMUを使用したもの)で、UTMというのが存在することがわかった。
しばらく、OSXから離れていたので、情報不足でした。
そこで、こいつを使用して構築を試みる。
intel系のコードの場合、rosset2が変換して動かすものの、初期変換に時間がかかることと、ドライバ等は正常動作しないことが多い。
仮想マシンは、M1のnativeで動作させたいので、以下の方針で進める。
- 仮想マシンはArm64 CPUとする
- OSは、Arm64に対応したもの
- できれば、使い慣れているUbuntuもしくは他のLinux
UTMのインストール
これは、どのインストール方法を選択するかで、変わってくる。自分のマシンはHomebrewを導入済みなので、当然brewでインストールする。
(https://github.com/utmapp/UTM/releases/tag/v2.1.2)
$ brew update
$ arch -arm64 brew upgrade
$ arch -arm64 brew install --cask utm
brewを使用していない人は、dmgを落とすか、AppleStoreで有料購入できるらしい。
仮想マシンの構築
さて、UTMを起動して、仮想マシンを作成する。
メモリは8GBしかないので、とりあえず3GB割り当てることにした。
Ubuntu程度なら、2GBでも充分動くけど、快適に動かせるように少し余分に…。
UbuntuのISOイメージはArm64のサーバ版を落とす。
(ubuntu-20.04.2-live-server-arm64.iso2)
Arm64のDesktop版は存在していないようなので、あとから日本語関係、デスクトップ関係を入れることにする。
光学ドライブの設定だけ、最初戸惑ったが、Removable Driveを選択さえすれば大丈夫。
電源を入れると、見慣れたBoot画面が続きCUIでのインストールができる。
設定項目は、GUIとそれほど変わらないし、Server版を入れたことがあれば、戸惑うところはない。
インストールが完了して、ログインできれば最初のステップは完了。
デスクトップ環境の構築
ログイン後、そのまま以下を実行。
$ sudo apt install tasksel
$ sudo tasksel install ubuntu-desktop
これで、作業完了。
先のサイトでは途中で止まったりすることがあるとのことだが、何の問題もなく完了した。
このまま再起動する。
しばらくすれば(ほんの数秒だけど…)いつもの見慣れたログイン画面が表示される。
ここまで来れば、もうしめたもの。楽勝です。
あとは、細かな設定を行えば完了。(図はすでに日本語環境導入済み)
- タイムゾーンの設定
- 日本語環境の導入
- 必要なアプリケーションのインストール
問題点
- GPUが機能しない
- まぁ、開発に使うのであれば全く問題ない速度で描画できている。
- ゴリゴリにゲームを行いたい人には、厳しいかも…。
- ネットワークがNATしかない
- bridgeが使用できれば楽なんだけど、仕方ない。
- サーバとして使用するならポートフォワードを設定してやることで、一応利用できる。
- クライアントとして使うだけならNATで問題なし。
- 一部のキーが効かない
と、いくつか問題点はあるが、大きく問題になるのは最後のキーバインドがおかしいことだ。
それ以外は、使い方の問題でなんとかできる部分なので、注意すれば良いだけだ。
キーバインドを変更する
まず、一番の問題は、パイプ[|]が効かないこと。
コマンド操作するのに、これがなければ意味がない。
もちろん、毎度temporarily fileに落として、それを喰わせることで、なんとか回避はできる場合もあるが…。
2つ目は、[_]が効かないこと。
これは、ファイル名や変数名に多用するので、使えないのは厳しい。
とりあえず、ホスト側とゲスト側のクリップボードは共有されるので、一旦Mac側でコピーして、貼り付ければ入力できなくはないが、不便すぎる。
まずは、調査から…。
$ xev
で反応を見る。
すると、[¥]キーは、[⌘command]キーと同一の扱いになっているようだ。
[ろ]キーは完全に無視されている。
一応、キー設定の問題かもと思い、対応しそうなキーボードを全て試したがダメだった。
$ sudo dpkg-reconfigure keyboard-configuration
続いて、X環境で切り替えられないかと思い、キーボードのレイアウトを変更してみる。
もう、手当たり次第設定し確認し、試してみたが…。
$ setxkbmap -print -verbose 10
$ setxkbmap -layout jp
$ setxkbmap -print -verbose 10
$ setxkbmap -model macbook78
$ setxkbmap -print -verbose 10
$ setxkbmap -model macbook79
$ setxkbmap -model apple_laptop
$ setxkbmap -model apple
$ setxkbmap -print -verbose 10
$ setxkbmap -model macbook79
$ setxkbmap -print -verbose 10
$ setxkbmap -layout jp
$ setxkbmap -print -verbose 10
まったくだめだ…。
で、あちこち探してみるが、もっとも関係ありそうなのがQemuのバージョンによる不具合らしい。UTMが使用しているQemuのバージョンが上がれば自然に解消しそうだ。
とはいえ、キーが使えないのは不便なので、どこかに割り当てることにする。
キーバインドの変更
xevで調べているときに、shift+[0]に「~」が割り当てられていた。
キートップ上は何も割り当てがないはずなのに…。
しかも、shift+[^]にも「~」の割り当てがあるので、ダブっている。
そこで、shift+[^]を押したときに、[|]を出力するように変更する。
もう一つの、[_]は、空いているキーがないので、shift+spaceに割り当てることにした。
$ xmodmap -pke > .XmodmapNow
と、現在の設定を一旦ファイルに吐き出す。
これを、参考にエディタで編集して読み込ませれば、完了。
$ nano .Xmodmap
と親近ファイルを作成し、先のファイルを参考に関連する項目を作成する。
keycode 21 = asciicircum bar equal plus
keycode 65 = space underscore space
最終的には、上記の2項目のみで完了。
$ xmodmap .Xmodmap
と実行することで、設定が反映される。
これを、手入力するのはだるいので、key.shに書き込んで実行させることにした。
本当は起動時に実行させても良いのだけど、今後バージョンが変わることを期待して、必要に応じて実行することに…。
まあ、1度実行するだけなので、手間ではない。
これで、仮想マシンないのCUIでも気持ちよくコマンド入力ができるし、エディタでも入力ができるようになった。
使用感
ちなみに、仮想マシンの操作感は、びっくりするぐらい快適。
メインマシンのUbuntu(仮想ではなく直インストール)で使用しているマシンより、早く感じる部分もあって少々驚いている。
MacOSを入れなくても、Arm版をそのまま入れれば、驚くほど快適になりそうで、その誘惑にいつまで我慢できるか…。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。