メインコンテンツへスキップ

AndroidスマホにRootなしでUbuntuをインストールする(Termux GUIデスクトップ+中国語環境+音声+ワンタップ起動スクリプト)

·
カテゴリー スマートフォン Termuxチュートリアル
タグ Proot-Distro Ubuntu
目次

この記事では、Androidスマホにデスクトップ環境付きのUbuntuシステムをインストールする方法を紹介します。Root権限は不要です。

Ubuntu + KDE Plasma on Android

Termuxのproot-distroツールを使い、Ubuntuの中国語デスクトップ環境を手動で構築します。すべての設定が終わったら、記事の最後にワンタップ起動用スクリプトも用意します。

Ubuntuを手動で設定したくない場合は、community scriptsを使って自動インストールしてください。

1. 前提条件
#

スマホでUbuntuのグラフィカル環境を動かすには、最低6GB RAMが必要です。

プロセッサはQualcomm Snapdragon 845以上のクラスを推奨します。

ストレージ容量は最低10GB用意してください。

私の端末:Sony Xperia 10 V,Android 13

  1. Termuxをインストールします

  2. Termux X11をインストールします

  3. GPUハードウェアアクセラレーションvirglrendererを設定します

2. Ubuntu最小ファイルシステムをインストールする
#

ここでいう最小ファイルシステムとは、proot-distroのメンテナーが提供しているrootfsのことです。彼らがメンテナンスしているrootfsにはLTS版がなく、その年の最新Ubuntuが常に使われます。

  1. Termuxを開き、Proot-distroとPulseAudioをインストールします
pkg update
termux-setup-storage
pkg install proot-distro pulseaudio vim
  1. proot Ubuntuをインストールします
proot-distro install ubuntu
  1. Ubuntuにログインします。--userパラメータはrootでログインすることを表します。--shared-tmpはTermuxのtmpディレクトリをproot内部にマウントし、後でXサーバーのリソースを共有できるようにします。
proot-distro login ubuntu --user root --shared-tmp
  1. ログイン後、まずsudo、vim、PPAツールをインストールします。インストール中にタイムゾーンを聞かれる場合があるので、数字で回答してください。
apt update
apt install sudo vim software-properties-common
  1. Androidにはsystemdがないため、以下のコマンドでUbuntuのSnapパッケージシステムを無効にします
cat <<EOF | sudo tee /etc/apt/preferences.d/nosnap.pref
# リポジトリパッケージがSnapのインストールを引き起こさないように、
# このファイルではAPTによるsnapdのインストールを禁止します。
# 詳細: https://linuxmint-user-guide.readthedocs.io/en/latest/snap.html
Package: snapd
Pin: release a=*
Pin-Priority: -10
EOF
  1. 続いてMozillaのパッケージリポジトリからFirefoxをインストールします。
sudo add-apt-repository ppa:mozillateam/ppa
sudo apt-get update
sudo apt-get install firefox-esr
  1. prootシステムを終了するには、exitを入力してログアウトします。

3. Ubuntuパッケージリポジトリのミラーを変更する
#

これは任意の手順です。パッケージリポジトリのミラーを変更すると、パッケージのダウンロード速度を上げられます。

世界各地のパッケージリポジトリミラーはOfficial Archive Mirrors for Ubuntuを参照してください。

  1. 例として、以下のコマンドで/etc/apt/sources.list内のports.ubuntu.com URLをすべて台湾NCHCのURLに置き換えます。
sudo sed -i 's/ports.ubuntu.com/free.nchc.org.tw/g' /etc/apt/sources.list
  1. もう一度パッケージ一覧を更新します
apt update

4. 一般ユーザーを作成する
#

通常、rootでシステムを操作することはありません。そのため一般ユーザーアカウントを追加し、システム変更が必要なとき(aptコマンド実行など)だけsudoコマンドで一時的に権限を昇格します。

  1. rootパスワードを変更します
passwd
  1. wheelとvideoグループを追加します
groupadd storage
groupadd wheel
groupadd video
  1. 一般アカウントuserを追加し、パスワードを変更します。
useradd -m -g users -G wheel,audio,video,storage -s /bin/bash user
passwd user
  1. userをsudoグループに追加します。visudoコマンドを実行し、root ALL=(ALL:ALL) ALLを探して、その次の行に以下を追加します。
user ALL=(ALL:ALL) ALL
  1. 一般ユーザーに切り替えます
su user
cd

5. デスクトップ環境をインストールする
#

テキストだけの画面で操作できるなら、デスクトップ環境はインストールしなくてもかまいません。

デスクトップ環境は次の3つから選びます。

XFCE
#

  1. XFCE(Xubuntu構成)をインストールします。keyboard layoutを聞かれたら1を入力し、lighdmを選択します
sudo apt install xubuntu-desktop
  1. デフォルトのターミナルエミュレーターを設定します。xfce4-terminalの番号を入力してください
sudo update-alternatives --config x-terminal-emulator

dbusで起動するコマンドはstartxfce4です。後ほど説明します。

KDE
#

  1. KDE(Kubuntu構成)をインストールします
sudo apt install kubuntu-desktop
  1. デフォルトのターミナルエミュレーターを設定します。konsoleの番号を入力してください
sudo update-alternatives --config x-terminal-emulator

dbusでKDEを起動するコマンドはstartplasma-x11です。後ほど説明します。

GNOME(実験的)
#

GNOMEをインストールします

sudo apt install ubuntu-desktop

GNOMEの起動コマンド:export XDG_CURRENT_DIR=GNOME && service dbus start && gnome-shell --x11

6. タイムゾーン、中国語、入力メソッドを設定する
#

  1. タイムゾーンを台湾・台北に設定します
sudo ln -sf /usr/share/zoneinfo/Asia/Taipei /etc/localtime
  1. localesとFcitx5入力メソッドをインストールします(Fcitx5の新酷音入力メソッドを使うには外付けキーボードが必要です)
sudo apt install locales fcitx5* fonts-noto-cjk
  1. vim /etc/locale.genで編集し、繁体字中国語を探して先頭のコメント(#)を外します。
zh_TW.UTF-8 UTF-8
  1. 繁体字中国語ロケールを生成します
locale-gen
echo "LANG=zh_TW.UTF-8" > /etc/locale.conf
  1. VIMで.profileを編集します
vim ~/.profile
  1. ファイル末尾に以下を追加し、言語を繁体字中国語に設定して、入力メソッドにFcitx5を指定します
LANG=zh_TW.UTF-8
LC_CTYPE=zh_TW.UTF-8
LC_NUMERIC=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8
LC_COLLATE=zh_TW.UTF-8
LC_MONETARY=zh_TW.UTF-8
LC_MESSAGES=zh_TW.UTF-8
LC_PAPER=zh_TW.UTF-8
LC_NAME=zh_TW.UTF-8
LC_ADDRESS=zh_TW.UTF-8
LC_TELEPHONE=zh_TW.UTF-8
LC_MEASUREMENT=zh_TW.UTF-8
LC_IDENTIFICATION=zh_TW.UTF-8
LC_ALL=

GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus

fcitx5 &

7. ワンタップ起動用デスクトップ環境スクリプトを設定する
#

ここでは、Termux、Termux X11、virglserver、XFCE4をワンタップで起動し、デスクトップ環境を自動起動するショートカットを設定します。

  1. proot環境を終了し、Termuxも終了します
exit
exit
exit
  1. Termux Widgetをインストールします

  2. スマホのシステム設定を開き、Termuxに「他のアプリの上に重ねて表示」を許可します

  3. Termuxを開き直し、以下のコマンドでショートカットを作成します

mkdir .shortcuts
vim .shortcuts/startproot_ubuntu.sh
  1. 以下の内容を入力します
#!/bin/bash

# 古いプロセスをすべて終了
killall -9 termux-x11 pulseaudio virgl_test_server_android termux-wake-lock

# Termux X11を起動
am start --user 0 -n com.termux.x11/com.termux.x11.MainActivity
XDG_RUNTIME_DIR=${TMPDIR}
termux-x11 :0 -ac &
sleep 3

# PulseAudioを起動
pulseaudio --start --exit-idle-time=-1
pacmd load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1

# GPUアクセラレーション用virglserverを起動
virgl_test_server_android &

# proot Ubuntuにログインしてデスクトップ環境を起動。末尾のstartxfce4はXFCE4デスクトップを起動するためのものです。
proot-distro login ubuntu --user user --shared-tmp -- bash -c "export DISPLAY=:0 PULSE_SERVER=tcp:127.0.0.1; dbus-launch --exit-with-session startxfce4"
  1. 実行権限を付与します
chmod +x .shortcuts/startproot_ubuntu.sh
  1. スマホのホーム画面でウィジェットを追加し、Termux Widgetを選択すると、先ほど作成したショートカットが一覧に表示されます。

  2. ボタンをタップすると、Termuxが自動で開いてデスクトップへログインします。

  3. Termux X11の画面で戻るボタンを押すと、スマホのキーボードを呼び出せます。Ubuntuの操作にはHacker’s Keyboardの利用をおすすめします。

  4. スマホの通知欄を下へスワイプし、Termux X11のPreferencesを押すと、タッチ操作を模擬タッチパッドに変更できます。これでマウスを呼び出せます。

  5. デスクトップアイコンが少し小さすぎる場合があります。Display resolution modeをScaledに変更し、好みに合わせて拡大縮小してください。

  6. なお、Linuxのシステム設定で画面ロックとスクリーンセーバーを無効にしておくこともおすすめします。prootではスクリーンセーバーを解除できないためです。

  7. 外付けキーボードがある場合は、システムトレイのFcitx5アイコンをクリックします(見つからない場合は、アプリケーション一覧のfictx5をクリックして手動起動してください)。右クリックで設定を開き、新酷音入力メソッドを追加します。CTRL+スペースで注音入力に切り替えます。

  8. Ubuntuの実行を終了するには、スマホの通知欄でExitを押して終了します。その後、TermuxとTermux X11を強制停止します。

参考資料
#

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。