🚀 はじめに:この記事でできること
Android端末(Root不要)で Termux+proot-distro を使い、Ubuntu環境を構築します。インストール→ログイン→パッケージ管理→Python開発→共有ストレージ連携までを、操作→目的→結果(この時点でできること)→注意/補足の順で丁寧に解説します。初心者が混乱しやすい前提(擬似root・systemd不可・/sdcardの扱い)も最初に整理します。
用語メモ TermuxはAndroid向けのLinux端末アプリ。PRootはユーザー空間でのchroot相当を実現、proot-distroはその管理ラッパー(配布rootfsの取得・展開・ログインを簡素化)。
🧭 前提:仕様と制限の理解(混乱しやすいポイント)
- 操作
- 以降の手順はRoot不要/スマホのみで進めます。
- 目的
- 擬似rootと本物のrootの違い、systemd不可、/sdcard連携などの制約を把握してから構築する。
- 結果(この時点でできること)
- 「動かないもの」を事前に理解し、失敗切り分けが容易になる。
- 注意
- PRootは本物のrootではないため、systemd依存サービス・カーネル機能・Snapの多くは動作しません。サービス常駐は
tmux/screen等で代替。
- PRootは本物のrootではないため、systemd依存サービス・カーネル機能・Snapの多くは動作しません。サービス常駐は
早見表
- できる:CLI学習/Python開発/apt管理/共有ストレージ(/sdcard)連携
- 難しい:本格的なデスクトップ常用、systemd必須のサービス、カーネルモジュール
📱 Step 1:Termuxの準備(権限付与と更新)
目的:Termux側でパッケージ更新と共有ストレージ権限を設定し、後続のインストールとデータ連携を安定化する。
前提:Google Play版ではなく、互換性のあるTermux配布(F-Droid等)を利用している。
# パッケージリスト更新
pkg update -y
# 共有ストレージ(/sdcard)へのアクセス許可
termux-setup-storage
# → 権限ダイアログが出たら「許可」
結果(この時点でできること):Termuxから~/storage//sdcardが参照でき、後でUbuntu内からもデータを扱える。
注意:権限不調時は一度許可を取り消して再付与。~/storage/sharedが内部共有ストレージに対応。
🧩 Step 2:proot-distroの導入とディストロ確認
目的:proot-distroをインストールし、提供ディストリビューション(Ubuntu等)の一覧を把握する。
前提:Step 1が完了し、Termuxのネットワークが正常。
# proot-distroを導入
pkg install -y proot-distro
# 提供ディストリビューション一覧
proot-distro list
結果(この時点でできること):Ubuntu(最小rootfs)の取得準備が整い、以降のinstall→loginが可能。
注意:提供バージョンはメンテナの方針で単一またはローリングの場合あり。細かな版指定は原則不可。
🏁 Step 3:Ubuntuのインストールとログイン
目的:最小rootfsをダウンロード・展開し、Ubuntu環境にログインできる状態にする。
前提:Termuxのストレージ準備・ネットワークが正常。
# Ubuntuの最小rootfsを取得・展開
proot-distro install ubuntu
# ルートシェルでログイン(擬似root)
proot-distro login ubuntu
結果(この時点でできること):Ubuntuシェルに入ってaptやファイル操作が可能。
注意:擬似rootであり、本物のrootが必要な操作(カーネル・systemd必須機能)は不可。
⚙️ Step 4:初期設定(アップデート・必須ツール・一般ユーザー)
目的:aptの更新、よく使うツール(sudo等)の導入、一般ユーザー運用に移行して実用性を高める。
前提:Ubuntuシェルにログイン済み。
# Ubuntu内で実行
apt update
apt upgrade -y
# よく使うツール群
apt install -y sudo vim software-properties-common
結果(この時点でできること):パッケージ環境が最新化され、作業効率が向上。
注意:sudoを入れておくと一般ユーザーへ移行しやすい。
目的:一般ユーザー+sudo体制で、通常のLinux運用に近い環境を作る。
前提:Ubuntu内で管理可能な状態。
# 例:ユーザー ubuntuuser を作成
adduser ubuntuuser
usermod -aG sudo ubuntuuser
# いったん抜けてTermux側へ
exit
# 一般ユーザーでログイン
proot-distro login ubuntu --user ubuntuuser
結果(この時点でできること):一般ユーザーでの作業・sudoによる昇格が可能。
注意:ホーム配下に作業ディレクトリ(例:~/projects)を用意しておくと整理しやすい。
🧯 Step 5:Snapの抑止(推奨)
目的:systemd依存の強いSnapが自動導入されることを防ぎ、エラーや不整合を避ける。
前提:Ubuntu内での編集権限がある。
# Ubuntu内で実行(Snapを導入しないプリファレンス)
cat <<'EOF' | sudo tee /etc/apt/preferences.d/nosnap.pref
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
結果(この時点でできること):apt操作でSnap関連の自動導入が抑止され、systemd不可環境でも安定。
注意:Snapを必要とするツールは**代替(apt/pip/手動ビルド)**を検討。
🛠️ Step 6:Python開発の開始(学習〜軽い実践)
目的:Pythonとpipを導入し、学習・軽い開発ができる状態にする。
前提:一般ユーザーでログイン済み(またはrootシェルでも可)。
# Ubuntu内で実行
sudo apt update
sudo apt install -y python3 python3-pip
# バージョン確認
python3 --version
pip3 --version
結果(この時点でできること):Pythonスクリプトの実行・パッケージ導入が可能。必要ならvenvやpipxで分離管理。
注意:大きなビルドやネイティブ依存の強いパッケージは端末性能やABI差で失敗することあり。
🗂️ Step 7:共有ストレージ連携(/sdcard の読み書き)
目的:Android共有ストレージをUbuntu内から扱い、データの入出力を容易にする。
前提:termux-setup-storageを完了している。
# /sdcard が見えるか確認
ls /sdcard
# 例:/sdcard/Download にサンプルを書き出し・実行
echo 'print("Hello from Ubuntu-in-Termux!")' > /sdcard/Download/hello.py
python3 /sdcard/Download/hello.py
結果(この時点でできること):Ubuntu側から/sdcard配下のファイルを読み書きできる。
注意:権限制約で外部SD/USBは書込不可の場合あり。Termuxがアクセス可能な場所のみ利用。
🔗 Step 8:任意ディレクトリのバインド(応用)
目的:Termux側の任意パスをUbuntu内へ見せ、プロジェクトごとのデータ連携を柔軟にする。
前提:Termuxで対象ディレクトリ(例:~/projects)が存在し、アクセス可能。
# ~/projects を Ubuntu内 /mnt/projects にバインドしてログイン
proot-distro login ubuntu --bind ~/projects:/mnt/projects
結果(この時点でできること):Ubuntu内から/mnt/projectsとしてホストのディレクトリにアクセス可能。
注意:Androidの権限モデルにより、Termuxが読めない場所はバインド不可。
⚠️ 注意・補足(仕様・性能・ネットワーク)
- 操作
- 必要に応じて
tmux/screenでセッションを常駐化、APTミラーを近距離へ切り替え。
- 必要に応じて
- 目的
- 端末性能・ネットワーク差による体感のばらつきを緩和し、安定運用する。
- 結果(この時点でできること)
- 実用的な学習環境を維持しながら、軽い常駐タスクや高速化を図れる。
- 注意
- GUI常用は追加準備(Termux:X11等)が必要。まずはCLIで確実に。
✅ つまずきチェックリスト(失敗時の診断順)
-
termux-setup-storageを実行し、権限許可を済ませた(/sdcardが見える) -
pkg update -yでTermuxのパッケージを最新化した -
pkg install -y proot-distroが成功し、proot-distro listでUbuntuが表示される -
proot-distro install ubuntu→proot-distro login ubuntuの基本導線でログインできる - Ubuntu内で
apt update && apt upgrade -yを正常に完了した - Snap抑止設定(
/etc/apt/preferences.d/nosnap.pref)を作成済み - 一般ユーザー+
sudo体制が整っている(必要に応じて昇格可能) -
/sdcard/Downloadでファイルの読み書きができる(権限不調時は再許可) -
--bindでホストの任意パスを見せられる(Termuxがアクセス可能な場所のみ) - GUIが必要な場合は別途Termux:X11の準備(まずはCLIで検証)
- ネットワークが不安定なら近距離のAPTミラーへ切替を検討
- 「systemd必須」「本物のroot前提」のツールは不可/代替を検討
📚 参考リンク(公式優先)
- Termux Wiki
- PRoot概要・コマンド説明:https://wiki.termux.com/wiki/PRoot
termux-setup-storage:https://wiki.termux.com/wiki/Termux-setup-storage
- GitHub(公式リポジトリ)
- termux/proot-distro:https://github.com/termux/proot-distro
- 実践・補足
- TermuxでUbuntuを構築する例:https://ivonblog.com/en-us/posts/termux-proot-distro-ubuntu/
- Termuxのファイル管理(/sdcardの扱い):https://ivonblog.com/posts/termux-file-management/
🎯 まとめ
- Termux+proot-distroで、AndroidにRoot不要のUbuntu環境を安全に構築できる。
- 手順はinstall → login → apt →(必要なら)一般ユーザー化 → Python導入 → /sdcard連携が基本。
- systemd・Snapは不可。CLI中心で学習・軽い開発から始め、必要に応じて拡張する。
- つまずき時は診断順チェックリストで切り分け、公式ドキュメントを参照して最新情報を確認。
