root 無しで簡単に Linux を起動できる UserLAnd が XSDL (X11 Server) との連携に対応しました。SSH, VNC 同様メニューから選べるようになったので試してみました。スマートフォンは ZenFone AR (ZS571KL) Android 7.0 を使っています。
Google Play ストアから UserLAnd をインストール。起動すると Linux Distribution を選択できます。今回の手順は Debian を選択しています。
Distribution を選択すると共有ストレージへのパーミッションを求めてきますが、これは /sdcard をマウントするため。
ユーザー名とパスワードの設定をします。
新しく XSDL が選択できるようになっています。
XServer XSDL をインストールしていない場合はここで Play Store に飛びます。先にインストールしておいた方が良いかもしれません。Bluetooth Keyboard と Bluetooth Mouse も先にペアリングしておくことをお勧めします。
インストールしたらもう一度 UserLAnd から Debian を選択。XSDL が起動し、一瞬切り替わったあと↓この画面で止まったように見えますがそのまま待ってください。
暫く待つと起動が終わり、左上に小さいターミナルウィンドウが出ます。止まったように見えたのは背景画像が残ってしまっているため。
xterm のウィンドウが小さいのは Native 解像度 (上の例は 2560×1440) で起動しているからです。
● XSDL の解像度変更方法
解像度の変更は XSDL 起動時の下記の画面で、カウントダウン中に画面をタップします。
↓選択画面になるので 1280×720 あたりを選択。
↓次にフォントスケールの選択。潰れて読めないけど X0.7~X0.4 あたりを選択。いろいろ試して見やすいように調整してください。
↓ウィンドウが大きくなりました。
● lxde を使う方法
UserLAnd から起動すると twm + xterm の最小限で立ち上がります。Desktop を使うには Script の書き換えが必要でした。
Desktop lxde の install 手順
一旦 SSH でログインしておきます。(Distribution 名長押し→ App Stop → App Info)
$ sudo apt update
$ sudo apt upgrade
$ sudo apt install lxde
下記のファイルを編集します。
/support/startXSDLServer.sh
元の内容
#! /bin/bash
if [[ -z "${DISPLAY}" ]]; then
DISPLAY=:4721
fi
if [[ -z "${PULSE_SERVER}" ]]; then
PULSE_SERVER=localhost:4721
fi
if [[ -z "${INITIAL_USERNAME}" ]]; then
INITIAL_USERNAME="user"
fi
until env DISPLAY=:4721 ; do sleep 1 ; done
nohup twm & echo $! > /tmp/xsdl.pidfile
while [ ! -f /tmp/xsdl.pidfile ]
do
sleep 1
done
su $INITIAL_USERNAME -c 'xterm -geometry 80x24+0+0 -e /bin/bash --login &'
下記のように書き換える
#! /bin/bash
if [[ -z "${DISPLAY}" ]]; then
DISPLAY=:4721
fi
if [[ -z "${PULSE_SERVER}" ]]; then
PULSE_SERVER=localhost:4721
fi
if [[ -z "${INITIAL_USERNAME}" ]]; then
INITIAL_USERNAME="user"
fi
until env DISPLAY=:4721 ; do sleep 1 ; done
# ここから下を改変
sleep 20
su $INITIAL_USERNAME -c 'startlxde &'
su $INITIAL_USERNAME -c 'xterm -geometry 80x24+0+0 -e /bin/bash --login &'
sleep の部分は適当に調節してください。これで XSDL に切り替えて起動すると、しばらく待ったあとに青い画面から下記のような desktop 画面になります。起動は気長に待ってください。
日本語化等の情報はこちらを参照してください。
●いくつかの問題点
・XSDL が Android 9 で動かない。
・lxde 起動には script 書き換えが必要
・Android で物理キーボードのレイアウトに日本語配列を選択していると一部のキーが入力できない
Android 9 Pie では XSDL が restart を繰り返してしまい起動しないので、UserLAnd 上でも選択できないようになっています。
関連ページ
・Android の上の開発環境: UserLAnd
関連エントリ
・Oculus Go を文章書き&開発マシンにする
・UserLAnd とブラウザ
・Android 上の開発環境と UserLAnd
・OS の中の Linux (WSL/Chrome OS/Android UserLAnd)
・ARM CPU 上の開発環境とコンパイル時間の比較 (2) Pixel 3/UserLAnd