Android 16のLinuxターミナルは、必ずしもTermuxキラーにはならない。
Termuxは、オープンソースソフトウェア愛好者たちが開発しているAndroidターミナルAPPで、独自のパッケージリポジトリを持っている。
Pixelスマホ上のDebian Terminalを触ってみて、現時点ではこの結論に至った。これはAVFフレームワークを使ってDebian環境を実行し、ChromeOS crosvmに似た技術を使っている。Androidから隔離された、環境としては完全な仮想マシンで、SystemdやDockerを実行できる。
ただし、起動には少し時間がかかる。さらに仮想マシンとホストの隔離により、性能低下も発生する。
GPUアクセラレーションの実現は可能かもしれないが、効率はTermuxより大きく高くなるわけではないだろう。LinuxのWaylandウィンドウをAndroidコンポジタ上に表示する問題も処理しなければならない。
単にCLIプログラムを動かしたいだけなら、Termuxのほうがシンプルで効率がよい。仮想化という層がないからだ。すべてのパッケージはARM64向けにコンパイルされており、急にSSHリモート接続を開きたい場合も、Termuxの起動が最速だ。
TermuxのGPUアクセラレーションにはTurnipとVriGLも使える。
より根本的な違いは、両者の技術アーキテクチャがまったく異なることにある。TermuxはあくまでAndroidネイティブアプリで、userspaceのプログラム環境を作り、ARM64のELFバイナリを直接実行しているだけであり、本当の意味での仮想化は一切ない。ほぼネイティブに近い性能でファイルシステムへアクセスでき、Androidシステムが提供するリソースも直接利用できる。そのため起動時間が速く、I/Oレイテンシが低く、CLIツールを起動する体験が非常によい。
一方、Android 16 Linuxターミナルは別の道を取っている。現在の設計を見る限り、完全なpKVM仮想化 + VirtIOインターフェースを使う方式だ。そのため、起動のたびに実際にはLinux仮想マシンをブートしており、I/OはすべてVirtIOを通る。GPUのグラフィック処理では guest → host → Android SurfaceFlinger という長いデータ経路を扱う必要がある。仮想マシンがホスト側のハードウェアインターフェース(camera、USB、GPU)を使いたい場合も、追加の変換層が必要になるか、そもそもアクセスが禁止される。この完全な隔離はもちろん安全だが、その代償として「タップしてすぐ開き、数秒でshellに入る」体験は期待しにくい。
性能面では、Python scripts、SSH、git、中小規模コードのコンパイルなど、CLIプログラムを動かすだけなら、おそらくTermuxのほうが速い。Androidカーネルと直接やり取りしており、仮想化 overhead がないからだ。GPUアクセラレーションも同様で、TermuxはTurnip/VirGLを通じてAndroidのOpenGLとVulkanアクセラレーションを利用する。かなりhackyではあるが、少なくとも動くし、仮想化層を迂回するぶんレイテンシも低い。
安全性の面では、Linux仮想マシンの客観的な優位性は明らかだ。Termuxがどれだけサンドボックスで隔離されていても、本質的にはAndroid APP層で動いており、攻撃面は一般的なAPPと大きく変わらない。一方AVFはハードウェアレベルの隔離で、さらにpKVMにより仮想マシンのDMA権限、メモリ可視性、利用可能な peripheral を制限できる。これは企業、タブレット、教育市場にはかなり役立つはずだ。
このLinuxターミナルは、どちらかといえばAndroidタブレットをChromeOS化していくための布石だと思う。AVFの技術により、ARMプロセッサ上の仮想化へ統一されたインターフェースを提供できる。


