スマホにLinuxシステムをインストールして、PC上のプログラムを動かしたいですか?実はこれは二つの別概念です。Ivonが長いこと試行錯誤した結果を、この記事にまとめて共有します。
現在の技術でスマホ上にLinuxを走らせたい場合、方法は大きく二つあります。
- APPでLinux環境をエミュレートする
- スマホのシステムを削除し、本物のLinuxシステムへ焼き替える
まずこの二つの方法の長所と短所を見ていきます。最後に、3. 本物のLinuxスマホを購入する、という選択肢も扱います。
1. APPでLinux環境をエミュレートする#
ここでいうエミュレートとは、APPでLinuxシステム環境を模擬するという意味で、どちらかといえば補助用途です。利点はほぼすべてのスマホにインストールできること、欠点はできることが限られることです。端末コマンドを動かすくらいはできますが、コンテナ化や仮想化はできません。
APPでLinux環境をエミュレートする場合、Rootも脱獄も不要なので、大多数のデバイスに適しています。Linuxをどう生活に溶け込ませるかは個人の選択次第です。TermuxのようなAPPから始めるのは悪くない入口で、そこから自由でオープンソースな精神を感じ取れるかもしれません。準備ができたら、Linuxスマホでも遊んでみましょう。沼は浅く見えるときほど深いです。
Android#
AndroidスマホとAndroidタブレットを含みます。ChromeOSは含みません。
Termux#
- 関連記事:Termux Usage
Termuxは大多数のAndroidスマホで利用でき、最低でもAndroid 7までサポートしています。rootは不要です。
Termuxは仮想マシンではありません。Linuxに似た環境を提供し、プログラムをネイティブ性能で実行できるように工夫しているものです。Termuxにはproot-distro (ptraceでchroot機能を模擬する) によってLinuxディストリビューションをインストールする方法もあります。Termux X11と組み合わせてX Window Systemを動かし、LinuxのGUIプログラムを実行し、さらにVirGL技術で3Dグラフィックアクセラレーションを実現できます。
ただしproot-distroで他のLinuxディストリビューションのコンテナをインストールしても、そのシステムは依然としてAndroidの制限を受けます。ハードウェア周りの操作へアクセスするのは難しいです。
Termuxは、Androidエコシステムと混ぜて使う補助ツール寄りです。この環境下のLinuxシステムでは、Python、Java、C++の小さなプログラムを書いたり、オフィスソフトを動かしたり、Linuxの小さなゲームで遊んだりできます。またTermuxはAndroidシステム上の一部ファイルへアクセスできるため、ffmpegで動画を一括変換することもできます。
スマホにRoot権限がある場合は、chrootでLinuxコンテナをインストールし、Busyboxと組み合わせることでできることが少し増えます。
ただしchrootでも、Android向けに削られたLinuxカーネルによって用途は制限されます。たとえばAndroidのカーネルは一般的にcgroupsカーネルモジュールを欠いているため、やはりDockerは実行できません。chrootはMagiskと組み合わせて、システムを少し改造する操作に使うほうが向いています。
QEMU#
ここで扱う方法は比較的制限が強く、Termuxほど万能ではありません。
エミュレーターソフトウェア「QEMU」にはAndroid移植版があります。TermuxにはQEMUパッケージが収録されており、独立したAPPを作っている人もいます。Limbo PC EmulatorやVectras VMなどです。
ではQEMUでARMアーキテクチャのLinux仮想マシンを動かす場合はどうでしょうか。残念ながら、多くのAndroidスマホにはKVMカーネルモジュールがありません。そのため仮想マシンの実行効率はかなり低くなります。執筆時点の2025年のフラッグシップ機であっても、Windows XPシステムか、テキストUIだけのLinux仮想マシンを動かすのがやっとです。
ただしGoogle Pixelスマホは例外です。Tensorプロセッサ搭載のPixelはpKVM仮想化技術に対応しているため、Limbo PC Emulatorがかなり高速に動作し、Windows 11 ARMすら走ります。特製版Limboを使う必要があります:Limbo For Tensor-based devices
また、Android 16以上のGoogle Pixelスマホでは、AVFフレームワークでLinux仮想マシンを実行できます。参照:Google slips built-in terminal, Debian Linux VM into Android 15 March feature drop
iOS#
iPhone、iPad、iPod touchデバイスを含みます。
iSH Shell#
- 関連記事:iSH Shell使用
iOS上のiSH Shellは、32ビットAlpine LinuxをエミュレートするAPPです。テキストUIなので、Pythonスクリプトを少し動かしたり、SSH接続クライアントとして使ったりするのに向いています。
さらにiSHのファイルシステムはファイルAPPで開けるため、ファイルをLinux環境へ放り込んで処理できます。たとえばImageMagickで写真を一括変換できます。こうなるとiSHの用途はAndroid上のTermuxに近く、iOSエコシステムと混ぜて使うLinux環境です。
欠点は、iSH Shellが単純なx86エミュレーターであり、32ビットパッケージにしか互換性がないことです。また一部の命令セットはまだ実装されていないため、プログラムによっては実行時にエラーが出る可能性があります。
UTM#
- 関連記事:UTM使用
UTMは仮想マシンソフトウェアです。JITアクセラレーションを有効にするか、脱獄して仮想化を有効にすると、他のシステムの仮想マシンを高性能に動かせます。iPadでの利用に向いています。
Appleの周囲を黙らせるプロセッサ性能と組み合わせると、現在の高性能Mシリーズチップ搭載iPadはWindows 11 ARMに耐えられることが確認されています。となればLinuxシステムは当然問題ありません。
欠点は、Appleがアクセラレーションを一切持たない「UTM SE」だけをApp Storeに掲載することを許可している点です。この版のUTMはWindows XPを動かすだけでも息切れします。通常版のUTMはサイドロードが必要です。しかもJITアクセラレーションでも脱獄による仮想化有効化でも、設定過程には面倒な手順が必要で、実用性は高くありません。
2. スマホを本物のLinuxシステムへ焼き替える#
iOSデバイスは脱獄後であっても、他のシステムを焼くことはできません。iPhone 7にはProject Sandcastleという特殊な例がありますが、それくらいです。では比較的オープンなAndroidデバイスはどうでしょうか。実はLinuxを焼けるAndroidスマホもそれほど多くありません。
ここでいうLinuxシステムにはAndroidを含みません。LineageOS、GrapheneOS、CalyxOSなども含みません。これらはAndroidの派生と見なせるだけで、Linuxとは呼べません。AndroidはLinuxではないのか、と言う人もいるでしょう。そうでもあり、そうでもありません。AndroidはLinuxカーネルを使っていますが、アーキテクチャはPC上のGNU/Linuxとは実際かなり違います。以下で話す「本物のLinuxスマホシステム」は、Googleが魔改造した結果ではなく、PCのGNU/Linuxシステムに近い設計です。ざっくり言うと、これらのシステムはデフォルトでrootユーザーを残しています。Androidのように抜いて使わせない、ということはしません。
ではスマホ向けLinuxシステムにはどんな選択肢があるのでしょうか。現在、Android以外の「本物のLinuxスマホシステム」には十数個のディストリビューションがあります。その中でも最大勢力は「Ubuntu Touch」と「postmarketOS」の二つです。この二つのLinuxディストリビューションは対応スマホ数が最も多く、多くのAndroidスマホへ移植されています。
焼き替えに適したスマホを購入する必要があります。あるスマホに焼けるAndroid ROMがたくさんあるとしても、それがLinuxへ焼き替えられることを意味しません。どのスマホが焼き替えに適しているか知りたい場合は、postmarketOS WikiとUbuntu touch Wikiを参照してください。
Ubuntu touch#
- 関連記事:Ubuntu touch Install
Ubuntu touchは登場時期が最も早く、2014年には存在していました。本来はさらにスマホを出す予定でしたが、数年もしないうちに親会社Canonicalに放棄され、オープンソースコミュニティによるメンテナンスへ移りました。
Ubuntu touchには独自のデスクトップ環境があり、UI設計は完成度が高く、中国語入力方式まであります。フィーチャーフォン的な用途なら合格です。Ubuntu touchのシステムパーティションはAndroidと同じく読み取り専用で、Root権限でアクセスしても、次回のOTA更新で上書きされます。PC版Linuxプログラムを動かしたい場合は、LXCコンテナを有効にしてインストールする必要があります。
Ubuntu touchは、HaliumでAndroidドライバを混ぜる移植方式を発展させました。一部の自由ソフトウェア性を犠牲にして互換性を得る方式です。そのためUbuntu touchはAndroidスマホのハードウェアとの互換性が比較的よく、移植もしやすいです。
Waydroid経由でAndroid APPを動かすことに対応しています。
postmarketOS#
- 関連記事:postmarketOS Install
2019年前後に登場したpostmarketOSは、どちらかといえばPCのGNU/Linuxディストリビューションに近いです。グラフィックシステムにはWaylandまたはX11を使い、利用するデスクトップ環境を自由に選べます。システムパーティションも好きに変更できます。性能が足りるならDockerや仮想マシンを動かすこともできます。
postmarketOSは、移植対象機種が最新版のmainline Linuxカーネルを使うこと、ドライバもできるだけオープンソース版を使うことを強調しています。Ubuntu TouchのようなHalium技術による妥協策を捨て、本物のGNU/Linuxスマホ路線へ進んでいます。
おそらくpostmarketOSはUbuntu touchより自由度が高いので、「LinuxスマホAPP」が力を発揮する余地があります。GNOMEとKDEコミュニティはいずれも、画面サイズに合わせて変化するアプリケーションやSDKを相次いで開発しています。既存のGTKとQT技術をそのまま使ってLinuxスマホAPPを開発できます。
Waydroid経由でAndroid APPを動かすことに対応しています。
3. 本物のLinuxスマホを購入する#
AndroidスマホをLinuxへ焼き替える以外に、出荷時からLinuxシステムを搭載しているスマホを購入する方法もあります。専任の開発チームがメンテナンスしているため、AndroidにLinuxを焼くときに遭遇する多くの問題はありません。また、これらのハードウェアは通常かなりオープンなので、他のコミュニティメンバーがメンテナンスするLinuxディストリビューションも自由にインストールできます。
ただし、これらのLinuxスマホはAndroidより使いやすいとは限らず、コストパフォーマンスも高くありません。自分で手を動かしたいユーザー向けのものです。本物のLinuxスマホは強そうに見えますが、エコシステムはまだ成熟しておらず、現状ではせいぜい通話とネット閲覧を満たす程度です。ユーザー側にもかなり強いtinker精神がないと使い続けるのは厳しいです。オープンソースはエコシステムの問題を少しずつ補えるかもしれませんが、Linuxスマホを使う人は多少なりともコマンドラインを理解している必要があります。
現在、出荷時にAndroidではなくLinuxを搭載しているスマホには次のものがあります。
- FuriLabs FLX1 (2024)、出荷時にFuriOSを搭載。Debianベースで開発。
- Purism Liberty Phone (2023)、出荷時にPureOSを搭載。Debianベースで開発。
- Purism Librem 5 (2020)、出荷時にPureOSを搭載。Debianベースで開発。
- Pine64 PinePhone Pro (2022)、出荷時にManjaroを搭載。他の十数種類のディストリビューションをインストール可能。
- Pine64 PinePhone (2020)、出荷時にManjaroを搭載。他の十数種類のディストリビューションをインストール可能。
- Volla Phone (2020)、出荷時にUbuntu touchを搭載。
- Fxtec Pro1X (2020)、出荷時にUbuntu touchを搭載。


