Linux」カテゴリーアーカイブ

Android Termux で日本語入力を行う / UserLAnd との併用

普段使っている Note PC よりもハイエンドスマートフォンの方が性能が良いことが判明してから、Android を Note の代わりに活用する方法をいろいろ試しています。主な用途は外出時の議事録などのメモ取りとちょっとしたプログラミングです。

Android 上で root なしに利用できる開発環境として Termux と UserLAnd があります。

UserLAnd は Android 上に PC とほぼ同等の Linux 環境を構築可能で日本語入力もできます。その代わり proot のオーバーヘッドがありファイルアクセスが遅くなっています。また GUI が使えるものの GPU が使われておらず、PC と比べると画面描画は低速です。

Termux はファイルアクセスのオーバーヘッドがなく高速ですがパッケージがあまり多くありません。日本語入力にも非対応。

機能面では UserLAnd だけで済むのですが、速度面で少々難があるので工夫が必要です。下記はライブラリのコンパイル時間の比較です。

Google Pixel 3 (Android 9.0 Pie) Snapdragon 845
実行環境 Compiler Time (秒)
(1) Termux clang-7.0.1 32.6
(2) UserLAnd Debian + Termux VNC clang-7.0.1 34.5
(3) UserLAnd Ubuntu 18.04 SSH clang-6.0.0 72.9
(3) UserLAnd Debian Stretch VNC clang-3.8.1 220.4
(3) UserLAnd Debian Stretch SSH clang-3.8.1 219.0
Essential Phone PH-1 (Android 9.0 Pie) Snapdragon 835
実行環境 Compiler Time (秒)
(1) Termux clang-7.0.1 38.4
(2) UserLAnd Ubuntu + Termux VNC clang-7.0.1 40.5
(2) UserLAnd Debian + Termux VNC clang-7.0.1 41.7
(3) UserLAnd Debian Stretch VNC clang-3.8.1 423.6
(3) UserLAnd Debian Stretch VNC clang-4.0.1 456.9
(3) UserLAnd Ubuntu 18.04 VNC clang-6.0.0 95.6
(3) UserLAnd Arch SSH clang-7.0.1 107.0

・Time (秒) の値が小さい方が高速

(1) = Termux のコンソールから直接実行
(2) = UserLAnd から ssh で Termux に login して実行
(3) = UserLAnd 上で直接実行

Termux (1) が一番速く、UserLAnd 経由で Termux を利用した場合 (2) もほぼ速度が落ちずに済んでいます。

Termux と比べると UserLAnd は 2〜12倍くらい遅くなっています。かなりばらつきがあり Debian が極端ですが原因はわかっていません。

UserLAnd は Desktop アプリの利用や日本語入力などの環境として利用して、Termux でできる作業は Termux で行うのが効率良いことがわかります。

上の結果 (2) では Desktop 上の LXTerminal から Termux に ssh 接続していますが、ウィンドウ上の Terminal の描画は遅くなります。パフォーマンスが低いデバイスでは X11/VNC ではなく UserLAnd の SSH から Termux にログインすることをお勧めします。こちらの方が Terminal の描画は高速で、uim-fep の日本語入力が使えるようになります。

● Termux で日本語入力を行う方法

1. UserLAnd に任意の Distribution をインストールして日本語環境を設定
2. Termux 上で sshd を起動
3. ssh で Termux にログイン

● 1. UserLAnd の設定

4通りの方法を wiki にまとめました。

Ubuntu + SSH コンソールでの日本語入力 (uim-mozc)
Debian + SSH コンソールでの日本語入力 (uim-mozc)
Ubuntu + VNC デスクトップでの日本語入力 (fcitx-mozc)
Debian + VNC デスクトップでの日本語入力 (uim-mozc)

その他 UserLAnd 関連はこちら
Android の上の開発環境: UserLAnd

● 2. Termux の設定と sshd の起動

Termux では予め sshd を起動しておく必要があります。手順は下記の通り。ssh でログインするためにはパスワードの設定が必要です。

$ pkg update
$ pkg install openssh
$ passwd
パスワードの設定
$ sshd

● 3. Termux へのログイン

UserLAnd から Termux へのログイン方法。VNC (LXDE desktop) を使う場合は LXTerminal を使ってください。

$ ssh localhost -p 8022

●実際に使用してみて

Snapdragon 845 クラスのスマートフォンでは Ubuntu + VNC + Termux で十分だと感じます。議事録などのメモ用途で使う場合は、Bluetooth Keyboard があれば Note PC 代わりになりますし、外出時のコードの確認にも使えます。

どこでも作業空間を作り出せる Oculus Go も非常に魅力なのですが、VR にパワーが取られてしまい VNC は重くなります。テキストエディタの作業は SSH Console の方をお勧めします。もっとパワーのあるスタンドアロン機種や、ハイエンド機種 + GearVR/Daydream だったらもう少し快適な作業ができるかもしれません。

関連ページ
Android の上の開発環境: UserLAnd
Android の上の開発環境: Termux

関連エントリ
Android 9.0 と Bluetooth Keyboard による日本語入力
Android で動く Linux 環境 UserLAnd が XServer XSDL に対応
Oculus Go を文章書き&開発マシンにする
UserLAnd とブラウザ
Android 上の開発環境と UserLAnd
OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd

OS の中の Linux (WSL/Chrome OS/Android UserLAnd)

いろんな OS の中で Linux 環境が使えるようになってきました。OS の中に同居し、Native なアプリと同時に Linux のソフトウエアも走らせられるようになっています。ハードウエアまるごとエミュレーションする仮想 PC とは異なります。RAM やストレージに境界はなく、カーネルをそのまま共有しつつシステムに間借りする形で動きます。

Windows WSL (Windows Subsystem for Linux)
Chrome OS Linux Apps, Crouton, Android Apps
Android UserLAnd

● Windows 10 WSL

複数の Distribution が用意されており、Microsoft Store からアプリとしてインストールできます。事前に WSL を有効化しておく必要があります。

(1) 設定→ 「アプリと機能」→「プログラムと機能」→「Windows の機能の有効化または無効化」
(2) 「Windows Subsystem for Linux」にチェックを入れて再起動。

● Chrome OS (Chromebook/Chromebox 等)

ChromeOS は Chrome Browser のための Platform です。普段 PC で Chrome ブラウザを使っているなら、Chrome OS に触ると大半の作業がブラウザで事足りることに気が付きます。利用できる Chrome アプリは限られているものの、必要なら Android や Linux アプリを使うことができます。アプリ選択の自由度は意外に高くなっています。

現在 Chrome OS デバイスで Linux を走らせる方法は複数あります。それぞれ複数の Distribution から選ぶことができます。(Linux Apps を除く)

公式に対応した Linux Apps は対応機種がまだ少ないですが、Developer mode に切り替える必要がないので非常に扱いやすくなりました。

インストール&起動方法で分けると下記の 3種類です。

(1) Native Install

 普通の PC と同じように Linux をゼロから install します。Gallium OS 他。

(2) Dualboot (ChrUbuntu)

 カーネルを流用して Linux を起動します。boot 時に選択します。(ChrUbuntu)

(3) Chrome OS と同居

 コンテナとして Chrome OS 上で動きます。Chrome OS と同時利用が可能。

さらに (3) の方法にも複数の選択肢ができました。

1. Crouton : chroot で Linux を install。古くから存在し多くのデバイスで利用可能。

2. Android Apps : Android アプリとして Linux 環境 (UserLAnd 等) を install

3. Linux Apps (crostini) : ChromeOS 公式の Linux 環境

2. および 3. は比較的新しい機種のみ対応しており、古い機種では使うことができません。

なお Crouton は Chrome OS 内に Linux Desktop を表示できますが、X11 の動作モードが 2種類あります。(sudo startsfce4 -X xiwi 等のオプションで切り替え)

・xiwi : Chrome OS のウィンドウの一つとして表示。ソフトウエア描画。

・xorg : 全画面を乗っ取ってしまうがハードウェアアクセラレーション対応。

下記画面は Crouton の xiwi で Linux Desktop を表示したものです。

{image}

GitHub: Crouton
GitHub: ChrUbuntu
Gallium OS

● Android

(UserLAnd) は Android アプリとして Linux 環境を install します。root 無しに利用可能で、複数の Distribution から選ぶことができます。現在は Arch, Debian, Kali, Ubuntu の 4種類用意されているようです。

アプリからは SSH Terminal, VNC の 2種類の接続方法を選ぶことができます。公式サイトにあるように X Server も使えます。

 1. アプリ install
 2. 任意の Distribution を選択 (Debian, Ubuntu 等)
 3. フォルダへのアクセス許可
 4. ユーザー名とパスワードの入力
 5. 利用方法の選択 (SSH or VNC) あとから変更可能
 6. 初回のみ ConnectBot or bVNC Free の install
 7. 6. で install した場合はアプリに戻ってもう一度選択すると起動

VNC 利用時の desktop install 手順。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install lxde
$ mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
$ cp /usr/bin/startlxde ~/.vnc/xstartup

VNC の解像度変更方法

“~/.vnc/tightvncserver.conf” を作成して下記のように任意の解像度を書き込む。この指定がない場合 1024×768 になっています。

$geometry = "1280x720"

2160×1080 や 1920×1080 等、スマートフォンで実解像度を指定すると小さすぎて文字が読めなくなる可能性があるので注意。↓ は ZenFone AR の画面です。

null

UserLAnd

関連エントリ
ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
Android/Linux MaruOS その4
Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04

Android/Linux MaruOS その4

MaruOS 0.3 が Release されています。Windows 10 Mobile の Continuum 同様に外部モニタ接続で Linux Desktop が使えるのはもちろん、外部モニタなしでも使えるようになっています。それ以外にも Android 側が 6.0.1 になるなど色々改良されているようです。

maruos08.jpeg

Dashboard は設定画面から呼び出すことが出来ます。

maruos09.jpeg

これでいつでも Linux Desktop の起動と Shutdown が可能です。
Android 側に VNC や ssh client のアプリを入れておけば、端末単体でも Linux アプリケーションを利用することが出来ます。VNC server はデフォルトでは起動していないので、VNC を使う場合でも最初は ssh が必要です。

ただし以前はバグを利用して、端末本体に Native な Desktop 描画が出来ていたのですが、修正されているようです。

関連エントリ
Android/Linux MaruOS その3
Android/Linux MaruOS その2
Nexus 5 に Maru OS を入れてみた

Android/Linux MaruOS その3

コメントでも質問を頂いたので、もう少し詳しく書いてみます。
Maru OS は Windows 10 Mobile の Continuum のように、Android と Linux (Debian) Desktop が共存可能な OS となっています。

Linux on Android 等と違うのは、Android 環境を含めた Custom ROM として作られていることです。そのため既存の Android 環境に後付で install することは出来ず、Android OS 自体も置き換わります。

また端末単独で使うことを想定しておらず、外部の HDMI モニタ接続時のみ Desktop 環境が出現します。(前回のように端末側に Desktop が表示されることもあります)

Desktop 環境を使うためには、Bluetooth の Mouse や Keyboard と外部モニタを繋ぐための Slimport アダプタが必要です。

詳しくは 公式サイト を参照して下さい。
下記の内容は Nexus 5 と 0.2.3 の時点での内容となっています。

● Install 時にストレージ内容は消去されます

現時点の 0.2.3 が対応しているのは Nexus 5 だけとなっています。
インストーラがついているので手順は簡単ですが、ストレージのデータも OS も一旦全部消えます。Android 5.1.1 なので、Nexus 5 に提供されている公式の Android よりも古くなるのでご注意下さい。

● Play store は含まれていません

Android 側に含まれているアプリは最小限で Play Store など Google Apps がありません。FAQ で Google Apps の install 方法が提示されているので、その手順に従って追加する必要があるようです。

● HDMI モニタとの接続は Slimport です (Nexus 5)

Nexus 5 自体が HML に対応していないので HML アダプタは使えません。ご注意下さい。

● Maru Desktop Dashboard

外部モニタに接続して Desktop 環境がスタートすると、Android 側にも Maru Desktop Dashboard というアプリが起動します。ステータスバーのアイコンから呼び出せるので、Desktop 環境の Shutdown もここから行うことが出来ます。

HDMI ケーブルを抜いても、Maru Desktop Dashboard が起動している間は Desktop が残っています。移動先で再び HDMI に繋ぐと、そのままの状態で Desktop が復帰します。

● Desktop と Application

Desktop 環境は Debian 8 Jessie となっており apt (apt-get) でいろいろと install できます。
OpenGL ES ではなく OpenGL に対応しているためか、結構ソフトが動くようです。
使用している人の動画を見ると Blender も動いていることがわかります。
ただし GPU が使われていない (ソフトウエア描画) のでそれなりに低速です。

● Mouse, Keyboard のペアリング

Bluetooth デバイスのペアリングは Android 側の設定画面から行います。
マウスやキーボードで Android 側の UI は一切操作できず、Desktop 側の操作専用となります。
両方操作できてしまうと混乱するので当然かもしれません。

● Desktop 画面を本体に表示する

前回 の手順の詳細です。

1. 画面の回転を有効にしておく
2. もし起動しているなら Desktop を Shutdown しておく
3. HDMI モニタの電源を入れておく。
4. Slimport アダプタにモニタと繋がった HDMI をつなぐとステータスバーに Dashboard のアイコンが表示されるので、すぐにケーブルを抜く
5. 数秒後に Desktop が Android 本体の上半分に表示される
6. 隠れて見えないが上のタスクバーからスライドして通知領域を下に引き出す
7. Maru Deskto running の通知をタップして Maru Desktop Dashboard を開いた状態にする
8. 本体を横向きにして Desktop が全画面になる

Buletooth マウス・キーボードで操作できます。タッチ操作は出来ません。
電源の入った HDMI モニタを実際に繋がないと Desktop が起動しないようです。

Home ボタンを押すなど Maru Desktop Dashboard が裏側に回ると画面の回転が出来ないので、再び通知領域を引っ張って Maru Desktop running の通知を選択し、Dashboard 画面を開く必要があります。

電源ボタンを押しても (Sleep しても) 有効です。このまま持ち歩けますが、画面の上半分に常時 Desktop が表示されているので Android はほぼ使えなくなります。

終了させる場合は手探りです。Dashboard の右上あたりのボタンを OFF にしてから「SHUTDOWN」を選びます。

↓壁紙が似てるのでわかりにくいですが、上半分が Desktop です。
maruos_nexus5_01.jpeg

↓このように通知領域を引き出して Maru Desktiop running を開きます。
maruos_nexus5_02.jpeg

● VNC を使う

Android を併用しつつ本体で Desktop の内容を確認したいなら VNC を使う方法もあります。
Desktop 側で server を起動して Android で VNC client アプリを使います。
Bluetooth マウスやキーボードを使うと反応が遅れるので遅延が気になりますが、Android とすぐに切り替えできますしタッチパネルや仮想キーボードが使えるのは便利です。

遅延があるので、マウス・キーボードを使うならやはり上の直接描画の方が早くて快適です。

関連エントリ
Android/Linux MaruOS その2
Nexus 5 に Maru OS を入れてみた

Android/Linux MaruOS その2

Maru OS は Windows 10 Mobile にある Continuum の Android 版のようなものです。普段は Android の Smartphone ですが、Keyboard や HDMI モニタを繋ぐと Linux Desktop として使うことが出来ます。(前回)

maruos06.jpeg

HDMI 接続時のタイミングによっては、外部モニタではなく本体側に Desktop が表示されることがあります。これはこれで便利なのでそのまま使っています。(Slimport 経由で外部モニタ接続 → Dashboard 起動直後に切断)
Mouse, Keyboard は Desktop 用にペアリングしたものが使えます。解像度が 1920×1080 なので、外部出力と一致していることから本当にそのままです。

関連エントリ
Nexus 5 に Maru OS を入れてみた
Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
Nexus 7 上に開発環境をつくる (3) Ubuntu
Nexus 7 上に開発環境をつくる (2) Bluetooth と OpenGL ES 2.0