🚀 はじめに:この記事でできること

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等で代替。

早見表

  • できる: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スクリプトの実行・パッケージ導入が可能。必要ならvenvpipxで分離管理。
注意:大きなビルドやネイティブ依存の強いパッケージは端末性能や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 ubuntuproot-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+proot-distroで、AndroidにRoot不要のUbuntu環境を安全に構築できる。
  • 手順はinstall → login → apt →(必要なら)一般ユーザー化 → Python導入 → /sdcard連携が基本。
  • systemd・Snapは不可。CLI中心で学習・軽い開発から始め、必要に応じて拡張する。
  • つまずき時は診断順チェックリストで切り分け、公式ドキュメントを参照して最新情報を確認。