世界を動かす技術を、日本語で。

ターミナルアプリが最新のAndroid CanaryでフルグラフィカルなLinuxアプリを実行できるようになりました

概要

  • AndroidのLinux Terminalアプリが最新Canaryビルドで グラフィカルLinuxアプリ 対応
  • 新たな「Display」ボタンで デスクトップアプリ の起動が可能
  • ハードウェアアクセラレーション 対応で性能向上
  • 将来的な PCゲーム起動 にも期待
  • 正式リリース時期は 未定

Android Linux Terminalアプリの進化

  • Googleが今年導入した Linux Terminalアプリ、Android上でDebian仮想マシンを起動可能

  • これまで コマンドラインアプリ のみ対応

  • 最新のAndroid Canaryビルドで グラフィカルアプリ に正式対応

  • 右上の新しい「Display」ボタンから グラフィカル環境 を起動

  • Linux VMのグラフィカル出力を Androidホスト に転送する仕組み

    • 「weston」コマンドで Waylandコンポジタ (Weston)によるグラフィカル環境を起動
    • Westonは Waylandプロトコル のリファレンス実装、初期状態でプリインストール
  • グラフィカル環境上で Gedit などのデスクトップアプリも起動可能

  • 既存の動画では Doom移植版 の起動デモもあり

ハードウェアアクセラレーションの有効化方法

  • デフォルトでは ハードウェアアクセラレーション は無効
  • 有効化手順
    • 「/sdcard/linux」ディレクトリに空ファイル「virglrenderer」を作成
    • Linux Terminalを起動し、「VirGL enabled」のトースト表示で成功確認
  • ハードウェアアクセラレーションにより パフォーマンス向上、より高度なアプリやゲームの実行が可能に

今後の展望と課題

  • グラフィカルアプリ対応 でAndroid上で多様なLinuxプログラムが利用可能
  • PCゲーム の実行も将来的に視野、ただしARM CPU対応など追加開発が必要
  • Googleの Chrome OSとAndroid統合 戦略の一環
  • 現時点では Canaryビルド限定、BetaやStableへの展開時期は未発表
  • Android 16の 2025年12月第2四半期リリース での実装期待、公式アナウンスは未定

まとめ

  • AndroidのLinux Terminalアプリが 大幅進化
  • グラフィカルLinuxアプリハードウェアアクセラレーション 対応
  • 今後の 機能拡張正式リリース に注目

Hackerたちの意見

これの絶対的な killer feature は、ついにスマホで Minecraft Java Edition がプレイできることだね。

Amethyst(以前は Pojav と呼ばれてた)がこれを何年も前から実現してるよ: https://github.com/AngelAuraMC/Amethyst-Android

他にも、サムスンのスマホでFallout 4を動かしてる人たちが使ってるアプリを見たことあるよ。性能もそこそこ良いみたい。Windowsとx86 CPUをエミュレートしてるんだって。Minecraft Javaも動くかもね。https://www.reddit.com/r/Android/comments/1divvyo/samsung_ga...

ターミナルで動くんじゃなくて、ターミナルからフル Wayland セッションを立ち上げるだけみたい。実際のターミナルが Sixels でピクセルグラフィックスをサポートしてるか、もしくは Kitty Graphics Protocol が使えるか知ってる人いる?

じゃあ、別のサーバーアプリを通して X11 アプリを動かす必要があるってこと?

SixelsやKitty Graphicsでグラフィックスを送信するアプリは、特別に設計されてない限り、良いパフォーマンスは期待できないよ。まあ、そもそもこれが言いたいことじゃないけどね。

ターミナルがターミナルじゃなくて、仮想フレームバッファの内容を表示してるみたい。QEMUを実行したときに見るのと同じ感じだね。

標準の Debian-with-root の Arm パッケージリポジトリが、pKVM ハードウェアネスト VM で OpenGL (v)GPU リモーティングと一緒に動いてる!これを実現するために、Linux、Android、ChromeOS の何年ものアップストリーム作業があったんだ。今は、電話やタブレットの OEM が Android Virtualization Framework (AVF) と OpenTitan 由来のエンクレーブをサポートしてくれることが必要だね。この機能が Pixel ハードウェアを超えて広がるために。 https://www.collabora.com/news-and-blog/blog/2025/01/15/the-... > GFX 仮想化は、仮想マシンでハードウェアアクセラレートされた 3D グラフィックスをサポートすることを目指している。GPU パススルーとは異なり、GFX 仮想化ではホストとすべての VM ゲストがホスト GPU に同時にアクセスできる。Vulkan と OpenGL は、さまざまなアプローチを使って virglrenderer によってサポートされている。vDRM はずっと薄いレイヤーで、ネイティブ GPU パフォーマンスを達成できるけど、VirGL と Venus は高価なホスト/ゲストの同期を克服するのが難しいかも。2025 年の初めには、vDRM が crosvm に部分的にサポートされる予定。Google の電話・タブレット・ノートパソコン・デスクトップの Android、ChromeOS、開発者向け Debian Linux の統合が、Apple に iPadOS 16.2(2022年!)の仮想化サポートを復活させる動機になることを願ってるよ。 https://github.com/utmapp/UTM/discussions/5748

新しいFlip 7ではこれがサポートされてるけど、皮肉なことにFold 7ではサポートされてないんだよね。(FlipはExynos、FoldはQualcomm。)

ターミナルアプリの使いやすさについての一般的な意見はどうなの?2つの異なる Pixel フォン(6a と 8a)でひどい経験をしたんだけど: - めっちゃ遅い - いつもクラッシュする - 毎日ほぼ再初期化が必要だった。でも、文句がないって言ってる人もいるみたい。あと、長時間使えなかったから、バッテリーの使用状況はどうだったの?バックグラウンドでずっと動かしておくのは現実的?

Pixel 7a: 起動が遅いし、再度起動しようとする前にシャットダウン(またはクラッシュ)が終わるのを待たなきゃいけない。Debian が systemd のアップデートを押し出したら、神様助けてって感じだね。systemd のアップデートは確実にクラッシュするから。

Pixel 6では結構いい速度だったけど、ランダムに再初期化されるせいで全く使い物にならなくなった。

時々、普通のapt-get upgradeを実行するだけでクラッシュすることがある。更新するパッケージが多すぎたり、時間がかかりすぎるとね。アプリから切り替えるだけでもクラッシュすることがある。いいアイデアだけど、遊ぶ以外には全然準備ができてないね。

低RAMのスマホでVMを動かしてるんだから、何を期待してたの?

Pixel 8aでの経験だけど、かなり使えたよ。ただ、問題もあった。参考までに、主にウェブ開発に使ってる。デスクトップ環境でVNCを使ってるから、ブラウザみたいなソフトに接続して動かせる。デバイス上で開発はしてないけど、リモートマシンに接続してる。ブラウザが起動するのに数秒かかるけど、フロントエンドの開発やウェブ検索、ドキュメントを読むのには問題なかった。ただ、開いてるタブの数には気をつけてる。ターミナルアプリは時々クラッシュすることがある。15分後にクラッシュすることもあるけど、2時間くらい問題なく動くこともあった。再接続して続ければいいから、あまり気にしてない。毎日再インストールする必要はないよ。アプリを起動すると、時々「回復不可能なエラーが発生しました。再インストールを推奨します」って表示されるけど、無視してる。タイミングの問題だから、アプリの起動が遅かっただけ。通常、アクティビティを閉じた後に再度実行すると、普通に起動する。今のところ、同じVMが数ヶ月間再インストールなしで動いてる。バッテリーの消費はそんなに悪くない。外部ディスプレイを使ってるから、その間はスマホの画面を黒くしてる。アクティブな使用時で、バッテリーは1時間あたり5%から20%の間で減っていくけど、バックグラウンドでずっと動かしてるわけじゃないからね。

Pixel 6での経験: + Termuxのような互換性の問題がないから、bun.jsやnpmパッケージ(例えば、データベースコネクタ)をネイティブバインディングでインストールできる - テキスト選択の編集ができないから、テキストをコピーするのが難しい - テキストを貼り付けられない - アプリを切り替えると頻繁に再起動して、進行状況が全部消えちゃう バッテリーについてはあまり言えないな、使った時間が足りなくて違いがわからないから。正直、これだけの大きな欠陥があると、結局Termuxを使うことが多い。早くこれらの目立つ欠陥を修正してほしい。GUIサポートよりも、開発者が実際に使うためにはこっちの方が急務だと思う。細かいことだけど、もう少し特徴的な名前があればいいな。今はAndroidターミナルの問題を解決するための情報を探すのがほぼ不可能だよ。

名前が「a」で終わるPixelは、RAMが少ないなどの予算モデルだよ。もっと性能のいいハードウェアの方が、きっと良い体験ができると思う。

なんでこの記事によると、これは仮想マシンで動いてて、コンテナじゃないの?

考えられる理由は2つあるかな。1) セキュリティ。コンテナのブレイクアウトはVMのブレイクアウトよりもずっと一般的だし、2) 互換性。Androidカーネルはかなり改造されてるから、Debianはデスクトップやサーバーのようにもっとバニラなカーネルで動かすといいかもね。

おそらく、コンテナのブレイクアウトが結構一般的だからだと思う。「ユーザーがダウンロードした外部Linuxソフトウェア」は、ストアからのアプリと同じくらい悪意があると見なされることが多いし。現代の消費者向けシステムは、ユーザーがひどいものを実行するように騙されないように安全である必要がある。Dockerとかは、単体では必要な基準には達してないからね。[1] ただ、コンテナの隔離に全くセキュリティの価値を見出さないような堅物ではないけど。例えば、コンテナはソフトウェアのアクセス(脆弱性のあるライブラリへのアクセス制限)やネットワーク通信(コンテナ用のファイアウォールルールを書くのはアプリよりずっと簡単)をうまく隔離してくれる。使ってみて!でも、これには向いてないかな。

ゲストVMのホストカーネルからの開発の独立性、セキュリティポリシー、証明など。

ホストカーネルに依存するなら、デバイスの寿命のどこかで古いカーネルのフォークに縛られることになるよ。でも、VM内では好きなカーネルを動かせるからね。

今すぐ手に入る、外部モニターと12GB以上のRAMで動くLinuxのスマホって何かある?

これが夢のコーディングマシン!10インチの三つ折りスクリーンと、外出時はBluetoothキーボード、家ではモニターと本物のキーボードに接続できる。

Pixel 8/9はUSB-Cの外部ディスプレイに対応してるよ。Pixel 8/9 Proは少なくとも12GBのRAMがあって、モデルによっては(256GBのアンロックオブシディアン?)もっとあるみたい。

Kali net hunterは、一部のスマホでUSBディスプレイポート経由でLinux環境を表示できるよ。Samsung Dexもあるけど、あれはただのAndroidアプリだし。Linux版の開発もしてたけど、1年以内に中止しちゃった。S9でしか動かなかったんだよね。

近いうちにモニターがARグラスに置き換わる時代が来るのかな?Corneキーボード + ARグラス + スマホのセットアップを夢見始めてる。完全にポケットに入るコンピューティングが実現するかもしれないね、エルゴノミクスの妥協なしで!

これはめっちゃクールだし、ずっとこういう風にスマホが動いてほしいと思ってた。でも、チョコレート工場はこれから何を得るの?感謝はするけど、広告収入でどうやって利益を上げてるのか、私には全然わからないな。

ネストされた仮想化(Nested virt)とAVFを使えば、セキュリティ、使いやすさ、自由、個人、企業のサプライチェーンという競合する目標をバランスよく保てるんだ。システム内で動く特権コードのサイズや攻撃面を減らせるしね。ネストされた仮想化は、もう10年もx86で使われてる(KVM、Bromium vSentry / HP SureClick、Microsoft Defender App Guard)。Apple SiliconではM2から、MacOSではM3から、iPadOSではM4から利用可能(Secure eXclave VM)。モバイルでは、NokiaやRIM、Maemo、Meego、Tizenなどを沈めたビジネスモデルの対立を回避できるかも。「仮想マシンをAndroidのコアプリミティブに」(2023年)、160コメント、https://news.ycombinator.com/item?id=38538100

うーん、これがAppleが20年以上前に復活した方法だね。開発者たちがね。もし、コンピュータより高いスマホにもっと魅力的な機能を早く追加しないと、私も乗り換えちゃうかも。その時点で、他のAppleハードウェアの意味がなくなっちゃうよ。

これは、発展途上国で技術スキルを学ぼうとしている人たちにとって、確実に役立つと思う。多くの人がAndroidフォンを持ってるけど、コンピュータを買う余裕がないからね。

こういう環境でのハードウェアアクセラレーションされたグラフィックスは確かにすごいね… GPU仮想化を使ってるみたいだし。これって、メーカーが市場をセグメント化するために使う機能の一つじゃない?Googleはここでいい習慣を示してるね。彼らは自社のラップトップハードウェアをオープンにするのが上手だし、Pixelは代替OSに最も優しいデバイスだよ。GNSSの生データへの標準APIアクセスも追加したし、今度はGPU仮想化をやってるみたい。どんどん障壁を壊していくね。

これはvirglrendererっぽいね。SR-IOVとは違うよ。これはOpenGL/Vulkanの呼び出しをインターセプトする(virgl/venus)か、ゲストとホスト両方のグラフィックスドライバーレベルで動作するvirtgpu DRMネイティブコンテキストだね。別に、ゲストとホストの間でWaylandのメモリ共有チャンネルを確立する必要がある。これもvirtgpuパイプラインを通じて行われる。今のところ、これがAndroidとmacOSの両方で動いてるみたい。[1] AMDGPUもMesaにvirtgpu DRMネイティブコンテキストを統合してるけど、まだ「実験的」だと思う。[1] https://github.com/AsahiLinux/muvm> , https://github.com/containers/libkrun>

VMやコンテナ内のターミナルを「Linux」と呼ぶのが、AndroidやWindowsによってもイライラする。まるでLinuxの定義を変えようとしているみたいで、ただのアプリを自分のプロプライエタリOSの上で動かしてるだけに聞こえる。初めて触れる人にとっては、それが全てになっちゃうだろうし、独立した自由でオープンソースのOSの概念は、前の世代よりもさらに異質に感じるだろうね。

最近Archをいじってるんだけど(arch linuxって言わずにarchって言ってもいいのかな?)カーネルをインストールした後は…あんまり進まなかった。インストール後にArchで何をすればいいのか、ググるのに時間を使ったよ。「これ、俺のWindows環境より良くなるのかな?」って疑問が浮かんでくる。単に「同等」じゃなくて、「これがすごくて3〜5個の大事なWindows専用アプリを捨てちゃう」くらいの「良さ」が必要なんだよね。結局、X11とWaylandの話や、どの技術スタックがいいのか、WMとGUIの無限の議論にハマっちゃった。Linuxの「キラーアプリ」について、みんなの意見を聞いてみたいな。単に「同等」じゃなくて、もっと良いもの。君の言う通り、Linuxにはキラーアプリが必要で、同等のアプリや「Linux風」のアプリじゃダメなんだ。DAWやフォントエディタ、GISアプリ、何かしらが必要だよ。もし最高のコーヒーが一軒のコーヒーショップから出てるなら、当然そこに行ってコーヒーを買うよね。Linuxをインストールしたくなるくらいのアプリの話をしてるんだ。