2019/01/31
UserLAnd とブラウザ
Firefox だけでなく Chromium-browser も使えるらしいので使ってみました。ただし --no-sandbox オプションが必要です。(参考にしたページ)
UserLAnd Ubuntu で動く Chromium (Essential Phone PH-1)

● Install と起動方法
Debian の場合
Ubuntu の場合
2018/01/31 現在、Ubuntu では Firefox が正しく動いておらず起動しても黒い画面のまま固まってしまいます。Chromium が代わりに使えそうです。
Debian では Firefox も問題なく動いています。
● 画面分割
Android 7 以降なら画面分割が可能なので Android のブラウザを併用する方法もあります。
画面分割で Ubuntu と Android の Chrome と併用↓

UserLAnd の desktop は VNC でも XServer XSDL (X11) でも Software Rendering なので、速度と安定度を重視するなら画面分割もお勧めです。
Android 9 Pie だと XServer XSDL が restart を繰り返してしまい起動できないようです。Essential Phone と Pixel 3 の両方で確認。VNC は動きます。
関連エントリ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
UserLAnd Ubuntu で動く Chromium (Essential Phone PH-1)

● Install と起動方法
Debian の場合
$ sudo apt install chromium
$ chromium --no-sandbox
$ chromium --no-sandbox
Ubuntu の場合
$ sudo apt install chromium-browser
$ chromium-browser --no-sandbox
$ chromium-browser --no-sandbox
2018/01/31 現在、Ubuntu では Firefox が正しく動いておらず起動しても黒い画面のまま固まってしまいます。Chromium が代わりに使えそうです。
Debian では Firefox も問題なく動いています。
● 画面分割
Android 7 以降なら画面分割が可能なので Android のブラウザを併用する方法もあります。
画面分割で Ubuntu と Android の Chrome と併用↓

UserLAnd の desktop は VNC でも XServer XSDL (X11) でも Software Rendering なので、速度と安定度を重視するなら画面分割もお勧めです。
Android 9 Pie だと XServer XSDL が restart を繰り返してしまい起動できないようです。Essential Phone と Pixel 3 の両方で確認。VNC は動きます。
関連エントリ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
2019/01/28
Termux で持ち運べるモバイルリポジトリを作る Mercurial/Git
Linux だと同期できるオンラインストレージの選択肢があまりありません。ARM だとなおさらで、ARM 向けの公式クライアントが用意されていなかったりします。今まで設定ファイルの共有に Dropbox を使い Mercurial で履歴管理をしていたのですが、arm 機種の Termux/UserLand では代わりの手段が必要になりました。
最近のスマートフォンは内部ストレージも増えているので、手持ちの Android スマートフォンを持ち運べるリポジトリにしてみます。
UserLAnd なら GitBucket もそのまま動きます。簡単に高機能なリポジトリサーバーを実現できますが UserLAnd はファイルアクセスがあまり速くありません。固定のリポジトリなら ssh で十分なので、今回は Termux を使用しました。
termux の ssh については こちら(Termux wiki) を参考にしました。
以降のコマンド表記でプロンプト '$' はすべてスマートフォンの Termux 上の操作になります。プロンプト '>' は PC (Windows/macOS/Linux) 等、他のデバイスからの操作を意味しています。
● Termux に SSH で接続する
termux はデフォルトで ssh の Password 認証が有効になっています。
まず termux に password を設定します。
sshd を起動します。
これで ssh で接続できるようになります。ポート番号は 8022 です。
最近の Windows 10 には最初から OpenSSH が含まれているので、PC のコマンドラインから下記のように実行するだけで接続することができます。
もちろん Putty 等の client も使えます。Putty の場合 user name はダミーで何でも OK です。
● Termux に git / mercurial を install する
termux 上で git を install しておきます。
Mercurial の場合 termux に pakcage が用意されていませんが、pip を使って install することができます。
● Termux 上に repository を作る
リポジトリを termux 上で作るか、または既存のリポジトリを Termux にコピーします。
新規に作る場合任意のフォルダで init。
既存のリポジトリをコピーする場合は scp (WinSCP 等) を使うことができます。Git の場合は .git フォルダ、Mercurial の場合は .hg フォルダを Termux にコピーするだけです。他にサーバーがあるなら Termux 上で clone しても構いません。
あとは普通にスマートフォン上のリポジトリにアクセスできます。下記は PC 等他の Device からの操作になります。
git の場合は絶対パスなので HOME 相対には ~ が必要です。mercurial は常に HOME からのパスになるようです。反応が鈍い場合はスマートフォンのロック(スリープ)を解除してみてください。
● Termux に public key 認証でログインする
git / hg の同期時に毎回パスワードを入力するのは手間なので、public key 認証を使ってみます。Windows 10 も Linux 等、他の OS と手順は同じです。
id_rsa.pub をスマートフォンに転送します。このファイルは Windows の場合 C:\Users\<ユーザー名>\.ssh 以下にあります。転送は scp でも良いですし、もっと簡単に USB 接続して直接ファイルコピーしても構いません。
termux 上で共有 storage にアクセスできるようにしておきます。
例えば Android の Download フォルダに転送した場合 ~/storage/downloads/id_rsa.pub でアクセスできるようになります。
id_rsa.pub の内容を Termux の authorized_keys に追加します。
これで git/hg の同期の度に password を毎回打たなくて済むようになりました。
● 使用してみて
バックアップには向かないのであくまで外出時の同期用にしています。設定ファイルだけでなく、個人で使うプロジェクトには十分使えそうです。
関連エントリ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
最近のスマートフォンは内部ストレージも増えているので、手持ちの Android スマートフォンを持ち運べるリポジトリにしてみます。
UserLAnd なら GitBucket もそのまま動きます。簡単に高機能なリポジトリサーバーを実現できますが UserLAnd はファイルアクセスがあまり速くありません。固定のリポジトリなら ssh で十分なので、今回は Termux を使用しました。
termux の ssh については こちら(Termux wiki) を参考にしました。
以降のコマンド表記でプロンプト '$' はすべてスマートフォンの Termux 上の操作になります。プロンプト '>' は PC (Windows/macOS/Linux) 等、他のデバイスからの操作を意味しています。
● Termux に SSH で接続する
$ pkg upgrade $ pkg install openssh
termux はデフォルトで ssh の Password 認証が有効になっています。
まず termux に password を設定します。
$ passwd
sshd を起動します。
$ sshd
これで ssh で接続できるようになります。ポート番号は 8022 です。
最近の Windows 10 には最初から OpenSSH が含まれているので、PC のコマンドラインから下記のように実行するだけで接続することができます。
> ssh <AndroidIPAddress> -p 8022
もちろん Putty 等の client も使えます。Putty の場合 user name はダミーで何でも OK です。
● Termux に git / mercurial を install する
termux 上で git を install しておきます。
$ pkg install git
Mercurial の場合 termux に pakcage が用意されていませんが、pip を使って install することができます。
$ pkg install python2 python2-dev clang $ pip2 install mercurial
● Termux 上に repository を作る
リポジトリを termux 上で作るか、または既存のリポジトリを Termux にコピーします。
新規に作る場合任意のフォルダで init。
$ mkdir ~/repository_git $ cd ~/repository_git $ git init
$ mkdir ~/repository_hg $ cd ~/repository_hg $ hg init
既存のリポジトリをコピーする場合は scp (WinSCP 等) を使うことができます。Git の場合は .git フォルダ、Mercurial の場合は .hg フォルダを Termux にコピーするだけです。他にサーバーがあるなら Termux 上で clone しても構いません。
> scp -r -P 8022 .hg <AndroidIPAddress>:repository_hg/
あとは普通にスマートフォン上のリポジトリにアクセスできます。下記は PC 等他の Device からの操作になります。
> git clone ssh://<AndroidIPAddress>:8022/~/repository_git
> hg clone ssh://<AndroidIPAddress>:8022/repository_hg
git の場合は絶対パスなので HOME 相対には ~ が必要です。mercurial は常に HOME からのパスになるようです。反応が鈍い場合はスマートフォンのロック(スリープ)を解除してみてください。
● Termux に public key 認証でログインする
git / hg の同期時に毎回パスワードを入力するのは手間なので、public key 認証を使ってみます。Windows 10 も Linux 等、他の OS と手順は同じです。
> ssh-keygen
id_rsa.pub をスマートフォンに転送します。このファイルは Windows の場合 C:\Users\<ユーザー名>\.ssh 以下にあります。転送は scp でも良いですし、もっと簡単に USB 接続して直接ファイルコピーしても構いません。
termux 上で共有 storage にアクセスできるようにしておきます。
$ termux-setup-storage
例えば Android の Download フォルダに転送した場合 ~/storage/downloads/id_rsa.pub でアクセスできるようになります。
id_rsa.pub の内容を Termux の authorized_keys に追加します。
$ cd ~/.ssh $ cat ~/storage/downloads/id_rsa.pub >> authorized_keys $ chmod 600 authorized_keys
これで git/hg の同期の度に password を毎回打たなくて済むようになりました。
● 使用してみて
バックアップには向かないのであくまで外出時の同期用にしています。設定ファイルだけでなく、個人で使うプロジェクトには十分使えそうです。
関連エントリ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
2019/01/24
Android 上の開発環境と UserLAnd
Android 上の開発環境のまとめページを作成しました。
・Android の上の開発環境
UserLAnd は root 不要で、アプリとして Linux 環境をそのまま Android 上で走らせることができます。Store から install するだけで済み、Windows 10 の WSL のように手軽に扱えます。
・Google Play: UserLAnd
ただの 1アプリとしてユーザーモードで走りますが、proot を使うことでほぼ完全な Linux 環境を作り出しているようです。例えば proot の下でファイルを作成すると、隠しファイル .proot-meta-files.* が作られます。この meta-file の中には独自の file mode (644等) と UID/GID が記録されており、user 管理やファイルパーミッションが再現されています。同じように Hard Link を用いると .proot.l2s.* といった管理ファイルが作られています。これは Symbolic Link で代用するための仕組みです。
反面、meta-file があるためファイルアクセスには追加のコストが発生しているようです。以前行ったコンパイル時間のテストを見ても、termux と比べるとビルド速度が落ちていることがわかります。それでも Android 上でほぼ完全な Linux 環境がそのまま動くのは非常に魅力的です。
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
現在 Arch, Debian, Kali, Ubuntu の 4つの Linux Distribution を選択可能で、それぞれ別のストレージ領域が割り当てられます。SSH を使った Console または VNC を使った Desktop を選ぶことができます。SSH or VNC はいつでも切り替え可能です。
以前は外部アプリとして SSH client が必要でしたが、UserLAnd の新しい Version では SSH Terminal が統合されました。Connect Bot の install が不要になっています。
ZenFone AR の UserLAnd (Debian)

以下いくつか設定などのメモ
● Install
UserLAnd アプリを Install したあと、任意の Distribution を選択するだけです。最初に外部ストレージへのアクセス許可と、ログインに使う user name や password の設定が必要です。
● SSH / VNC 切り替え
UserLAnd アプリの Distribution 名を長押しで App Info から設定できます。切り替え時は一旦 UserLAnd の再起動が必要です。Distribution 名を長押しして Stop App で止めてから、さらに UserLAnd アプリを終了して再び起動します。
● Desktop の install 方法
最初に SSH, VNC どちらを選んでも構いません。
その後 VNC に切り替えます。(一旦止めるのを忘れないように)
● VNC の解像度設定
Debian の場合は ~/.vncrc 、Ubuntu の場合は ~/.vnc/tightvncserver.conf に下記の内容を書き込む。
Smartphone の Native 解像度 (2160x1080, 2560x1440 等) をそのまま指定すると文字が小さすぎるので注意。720p 前後がおすすめです。
例
● Keyboard / Mouse
Desktop を使う場合は Buletooth Keyboard / Mouse の併用をお勧めします。Gboard や Google 日本語入力なら物理キーボードのレイアウトを選択できます。Ctrl/Caps/ESC 等の配列変更には106/109ハードウェアキーボード配列変更(+親指Ctrl)がお勧めです。
・Google Play: 106/109ハードウェアキーボード配列変更(+親指Ctrl)
● SSH 経由のアクセス
PC 等から SSH 経由でアクセスきます。port は 2022。
SSH (console) モードでは何もせずそのまま接続できます。VNC mode では下記のように予めサーバーを起動しておく必要があります。
● Android 外部 Storage へのアクセス
/sdcard でアクセスできます。例えば Android でダウンロードしたファイル一覧を見るには下記のようになります。
● ブラウザ
2019/01 現在 Ubuntu では Firefox の画面が真っ黒で見えなくなっています。Debian では動いています。Android 7 以降なら画面分割できるので、Android のブラウザを併用する方法もあります。
● 自分自身への adb 接続
Android を Developer mode にしたあと一旦 PC に USB 接続して adb で tcpip に切り替えておきます。
PC 上で "adb tcpip 5555" を実行。
これで Android (UserLAnd) 上では adb で自分自身が "emulator-5554" として見えるようになります。
● 日本語入力
SSH 等の Console では uim-fep, uim-mozc が使えます。下記手順は Ubuntu の場合。
ファイル ~/.uim を作成 (任意)
起動方法
上の設定例では Ctrl + SPACE または Ctrl+G で入力モードを切り替えています。なお Android 9 Pie では Android 側で Ctrl + SPACE が使われており Console への入力ができないようです。使えない場合は代わりに Ctrl + @ を試してみてください。Android 7 では Ctrl + SPACE が使えました。
Desktop の場合。下記手順は Debian の場合。
一旦 UserLAnd 再起動。
Debian streatch には mozc の arm64 が無いのでそのままではインストールできません。下記ページを参考にさせていただきました。
・matoken's meme: Debian, Ubuntu で 上流のパッケージを借りてくる
上のページを参考に buster を追加してから
入力切り替えキーの設定は Desktop Menu から「設定→入力メソッド→全体キー設定」。Terminal は LXTerminal を使用。
日本語設定の参考にしたページ
・WSLのUbuntu環境を日本語化する
・uim-fepとuim-anthyの使い方と設定方法
・WSLのDebian環境を日本語化する
・Debian, Ubuntu で 上流のパッケージを借りてくる
● 他の Distribution ファイルへのアクセス
ストレージ領域は /data/data/tech.ula/files/ 以下にあります。Filesystem を作るごとに /data/data/tech.ula/files/1 ~ と番号が割り振られています。例えば Debian の設定を書き換えてうまく起動しなくなった場合、Ubuntu から直接ファイルを修正することが可能です。
ただし他のストレージでは proot meta-file が直接見えてしまうので、meta-file に矛盾しない修正に留めておいた方が良いでしょう。ファイル内容の修正だけなら問題ありません。
● PC の X11 server に直接接続
VNC の場合は事前に UserLAnd 上で SSH Server を起動しておいてください。
Windows の場合は何らかの X11 server を起動しておきます。Microsoft Store にある X410 や VcXsrv 等。PC から (Windows の場合は WSL を想定) 下記のように SSH 接続します。
関連エントリ
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04
・Android の上の開発環境
UserLAnd は root 不要で、アプリとして Linux 環境をそのまま Android 上で走らせることができます。Store から install するだけで済み、Windows 10 の WSL のように手軽に扱えます。
・Google Play: UserLAnd
ただの 1アプリとしてユーザーモードで走りますが、proot を使うことでほぼ完全な Linux 環境を作り出しているようです。例えば proot の下でファイルを作成すると、隠しファイル .proot-meta-files.* が作られます。この meta-file の中には独自の file mode (644等) と UID/GID が記録されており、user 管理やファイルパーミッションが再現されています。同じように Hard Link を用いると .proot.l2s.* といった管理ファイルが作られています。これは Symbolic Link で代用するための仕組みです。
反面、meta-file があるためファイルアクセスには追加のコストが発生しているようです。以前行ったコンパイル時間のテストを見ても、termux と比べるとビルド速度が落ちていることがわかります。それでも Android 上でほぼ完全な Linux 環境がそのまま動くのは非常に魅力的です。
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
現在 Arch, Debian, Kali, Ubuntu の 4つの Linux Distribution を選択可能で、それぞれ別のストレージ領域が割り当てられます。SSH を使った Console または VNC を使った Desktop を選ぶことができます。SSH or VNC はいつでも切り替え可能です。
以前は外部アプリとして SSH client が必要でしたが、UserLAnd の新しい Version では SSH Terminal が統合されました。Connect Bot の install が不要になっています。
ZenFone AR の UserLAnd (Debian)

以下いくつか設定などのメモ
● Install
UserLAnd アプリを Install したあと、任意の Distribution を選択するだけです。最初に外部ストレージへのアクセス許可と、ログインに使う user name や password の設定が必要です。
● SSH / VNC 切り替え
UserLAnd アプリの Distribution 名を長押しで App Info から設定できます。切り替え時は一旦 UserLAnd の再起動が必要です。Distribution 名を長押しして Stop App で止めてから、さらに UserLAnd アプリを終了して再び起動します。
● Desktop の install 方法
最初に SSH, VNC どちらを選んでも構いません。
sudo apt install lxde
その後 VNC に切り替えます。(一旦止めるのを忘れないように)
● VNC の解像度設定
Debian の場合は ~/.vncrc 、Ubuntu の場合は ~/.vnc/tightvncserver.conf に下記の内容を書き込む。
$geometry = "1280x720"
Smartphone の Native 解像度 (2160x1080, 2560x1440 等) をそのまま指定すると文字が小さすぎるので注意。720p 前後がおすすめです。
例
・ZenFoenAR (2560x1440) : $geometry = "1280x720" ・Pixel 3 (2160x1080) : $geometry = "1440x720" ・Essential Phone PH-1 (2560x1312) : $geometry = "1330x720"
● Keyboard / Mouse
Desktop を使う場合は Buletooth Keyboard / Mouse の併用をお勧めします。Gboard や Google 日本語入力なら物理キーボードのレイアウトを選択できます。Ctrl/Caps/ESC 等の配列変更には106/109ハードウェアキーボード配列変更(+親指Ctrl)がお勧めです。
・Google Play: 106/109ハードウェアキーボード配列変更(+親指Ctrl)
● SSH 経由のアクセス
PC 等から SSH 経由でアクセスきます。port は 2022。
$ ssh <AndroidIPADDR> -p 2022
SSH (console) モードでは何もせずそのまま接続できます。VNC mode では下記のように予めサーバーを起動しておく必要があります。
$ sudo /support/startSSHServer.sh
● Android 外部 Storage へのアクセス
/sdcard でアクセスできます。例えば Android でダウンロードしたファイル一覧を見るには下記のようになります。
$ ls /sdcard/Download/
● ブラウザ
2019/01 現在 Ubuntu では Firefox の画面が真っ黒で見えなくなっています。Debian では動いています。Android 7 以降なら画面分割できるので、Android のブラウザを併用する方法もあります。
● 自分自身への adb 接続
Android を Developer mode にしたあと一旦 PC に USB 接続して adb で tcpip に切り替えておきます。
PC 上で "adb tcpip 5555" を実行。
これで Android (UserLAnd) 上では adb で自分自身が "emulator-5554" として見えるようになります。
$ sudo apt install android-tools-adb $ adb devices
● 日本語入力
SSH 等の Console では uim-fep, uim-mozc が使えます。下記手順は Ubuntu の場合。
$ sudo apt isntall language-pack-ja $ sudo update-locale LANG=ja_JP.UTF-8 $ sudo dpkg-reconfigure tzdata $ sudo apt install uim-fep uim-mozc
ファイル ~/.uim を作成 (任意)
(define default-im-name 'mozc) (define-key generic-on-key? '("<Control> " "<Control>g")) (define-key generic-off-key? '("<Control> " "<Control>g"))
起動方法
$ export LANG=ja_JP.UTF-8 $ uim-fep
上の設定例では Ctrl + SPACE または Ctrl+G で入力モードを切り替えています。なお Android 9 Pie では Android 側で Ctrl + SPACE が使われており Console への入力ができないようです。使えない場合は代わりに Ctrl + @ を試してみてください。Android 7 では Ctrl + SPACE が使えました。
Desktop の場合。下記手順は Debian の場合。
$ sudo apt install lxde $ sudo apt install task-japanese $ sudo apt install task-japanese-desktop $ sudo apt isntall fonts-takao $ sudo dpkg-reconfigure tzdata $ sudo dpkg-reconfigure locales
一旦 UserLAnd 再起動。
Debian streatch には mozc の arm64 が無いのでそのままではインストールできません。下記ページを参考にさせていただきました。
・matoken's meme: Debian, Ubuntu で 上流のパッケージを借りてくる
上のページを参考に buster を追加してから
$ apt install uim-mozc
入力切り替えキーの設定は Desktop Menu から「設定→入力メソッド→全体キー設定」。Terminal は LXTerminal を使用。
日本語設定の参考にしたページ
・WSLのUbuntu環境を日本語化する
・uim-fepとuim-anthyの使い方と設定方法
・WSLのDebian環境を日本語化する
・Debian, Ubuntu で 上流のパッケージを借りてくる
● 他の Distribution ファイルへのアクセス
ストレージ領域は /data/data/tech.ula/files/ 以下にあります。Filesystem を作るごとに /data/data/tech.ula/files/1 ~ と番号が割り振られています。例えば Debian の設定を書き換えてうまく起動しなくなった場合、Ubuntu から直接ファイルを修正することが可能です。
ただし他のストレージでは proot meta-file が直接見えてしまうので、meta-file に矛盾しない修正に留めておいた方が良いでしょう。ファイル内容の修正だけなら問題ありません。
● PC の X11 server に直接接続
VNC の場合は事前に UserLAnd 上で SSH Server を起動しておいてください。
Windows の場合は何らかの X11 server を起動しておきます。Microsoft Store にある X410 や VcXsrv 等。PC から (Windows の場合は WSL を想定) 下記のように SSH 接続します。
$ export DISPLAY=localhost:0.0 $ xhost +<AndroidIPAddress> $ ssh -Y <AndroidIPAddress> -p 2022 $ xterm
関連エントリ
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd
・Android/Linux MaruOS その4
・Nexus 7 上に開発環境をつくる (4) Ubuntu 13.04