ユーザ用ツール

サイト用ツール


linux:userland

LserLAnd

Android に install 可能な Linux 環境です。 PC の Linux Distribution と同等のものが利用できます。

  • 2019/02/12 現在: Alpine, Arch, Debian, Kali, Ubuntu

通常のアプリとして簡単にインストールできます。root 不要。 Console は SSH 経由でアクセスします。 GUI は VNC もしくは X Server XSDL を利用します。

Bluetooth Keyboard 、 Bluetooth Mouse を使うと PC のように使えます。

古い端末では動かない場合もあります。install し一見動くものの動作が不安定な場合もあり。試して動作した機種 ↓

Device Android SoC CPU RAM ROM SSH/VNC XSDL
ASUS ZenFone AR ZS571KL Android 7.0 Snapdragon 821 arm64 2+2 8GB 128GB Y Y
Google Nexus 5X Android 8.1 Snapdragon 808 arm64 2+4 2GB 16GB Y Y
Essential Phone PH-1 Android 9.0 Snapdragon 835 arm64 4+4 4GB 128GB Y -
Google Pixel 3 Android 9.0 Snapdragon 845 arm64 4+4 4GB 128GB Y -
Oculus Go Android 7.1 Snapdragon 821 arm64 2+2 3GB 32GB Y1) -
ASUS Chromebook Flip C101PA Android 7.1 Rockchip RK3399 arm64 2+4 4GB 16GB Y -
  • SD card 上にファイルシステムを作れないので、できるだけ内蔵ストレージが大きめの機種を使うことをお勧めします。

基本的な使い方

Install 方法

  1. UserLAnd のアプリを install します
  2. 任意の Linux Distribution を選択
  3. ストレージへの Access Permission を許可する。(/sdcard をマウントするために必要です)
  4. User 名と Password の入力
  5. SSH, VNC, XSDL の選択 (あとから変更可能です)
  6. VNC, XSDL 選択時は初回のみ Google Play に飛ぶ。bVNC Free (VNC) / XServer XSDL の install
    • install 後、もう一度 UserLAnd を起動して Distribution 名を再びタップ
  • 2019/01/18 現在: 新しいバージョンでは Connect Bot が不要になりました

開始方法

  1. UserLAnd アプリを起動して、Distribution 名をタッチ
  2. Install 時の選択に従い SSH Terminal, bVNC Free, XSDL の何れかに切り替わります。

しばらく待っても画面が切り替わらないときは、一旦 UserLAnd アプリを終了させてからもう一度起動してください。

停止方法

  1. UserLAnd アプリを起動して、起動中の Distribution 名を長押し
  2. Stop App を選択。
  3. その後 UserLAnd アプリ自体を終了する。

SSH / VNC / XSDL の切り替え

アプリの Distribution 名を長押しすると設定を変えることができます。切り替えたあと、一度 Stop App する必要があります。

  • SSH / VNC / XSDL の切り替え手順
    1. Distribution 名長押し → App Info
      • SSH = 内蔵の Terminal で接続
      • VNC = bVNC Free で接続
      • XSDL = XServer XSDL で接続
    2. Distribution 名を長押し → Stop App
    3. 度 UserLAnd アプリ自体も終了させてから起動し直す

設定等のメモ

SSH Console での日本語化と日本語入力

Ubuntu (18.04LTS) の日本語対応化&日本語入力対応化

SSH Console での日本語対応化手順

(1) ソフトウエアを更新して必要なパッケージをインストールします

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install apt-utils
$ sudo apt install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
$ sudo dpkg-reconfigure tzdata
$ sudo apt install uim-fep uim-mozc

(2) 設定ファイルを作ります

ファイル ~/.uim を作成し、中身を下記のように書き込みます。

(define default-im-name 'mozc)
(define-key generic-on-key? '("<Control> " "<Control>g"))
(define-key generic-off-key? '("<Control> " "<Control>g"))

(3) fep を起動します

$ export LANG=ja_JP.UTF-8
$ uim-fep

Control + [SPACE] または Control + [G] のどちらかで日本語モードに切り替わります。 必要に応じて (2) の設定ファイルを修正してください。

注意点: Android 9 Pie では Control + [SPACE] の入力ができません。Android 8 以前はできます。Console の場合は Control + [SPACE] の代わりに Contorl + [@] が使えるかもしれません。

Debian (Stretch) の日本語対応化&日本語入力対応化

SSH Console での日本語対応化手順

(1) ソフトウエアを更新して必要なパッケージをインストールします

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install apt-utils
$ sudo apt install task-japanese
$ sudo dpkg-reconfigure tzdata
$ sudo dpkg-reconfigure locales

(2) buster の設定

ファイル /etc/apt/preferences を作成し、下記の内容にする。

Package: *
Pin: release n=buster
Pin-Priority: 100

ファイル /etc/apt/sources.list を編集し、最後に下記の行を追加する。

deb http://deb.debian.org/debian/ buster main

(3) mozc をインストールする

$ sudo apt update
$ sudo apt install uim-fep uim-mozc

(4) 設定ファイルを作ります

ファイル ~/.uim を作成し、中身を下記のように書き込みます。

(define default-im-name 'mozc)
(define-key generic-on-key? '("<Control> " "<Control>g"))
(define-key generic-off-key? '("<Control> " "<Control>g"))

(5) fep を起動します

$ export LANG=ja_JP.UTF-8
$ uim-fep

Desktop (VNC/XSDL) のインストールと日本語化&日本語入力対応化

Debian 日本語化&日本語入力対応化

uim を使っていますが uim 以外も使えます。インストールは SSH に切り替えてから行ってください。

$ sudo apt install apt-utils
$ sudo apt install lxde
$ sudo apt install task-japanese
$ sudo apt install task-japanese-desktop
$ sudo apt install fonts-takao
$ sudo dpkg-reconfigure locales
$ sudo dpkg-reconfigure tzdata

詳細は Console での日本語入力の手順の「(1) Buster の設定」を参照してください。

Buster を追加してから下記のように install

$ sudo apt update
$ sudo apt install uim-mozc

その後一旦 UserLAnd を終了して VNC または XSDL に切り替えて起動し直します。

xterm では日本語入力できないので LXTerminal を開いてください。

入力モード切替キーの設定は、.uim ファイルではなく「設定→入力メソッド→全体キー設定」の GUI 上で行います。

Debian では Mozc の GUI 設定が起動しません。Ubuntu 等で設定したあと $HOME/.mozc の中身をコピーしてもってくると設定を変更できます。

Ubuntu 日本語化&日本語入力対応化

fcitx を使う場合

$ sudo apt install apt-utils
$ sudo apt install lxde
$ sudo apt install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
$ sudo dpkg-reconfigure tzdata
$ sudo apt install fcitx-mozc

$HOME/.profile か $HOME/.bashrc に追加

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx

一旦 UserLAnd を再起動する。 (UserLAnd app から “App Stop” して、もう一度起動する。)

$ fcitx-autostart
$ fcitx-config-gtk3

「入力メソッドの設定」が開くので、「全体の設定」から “入力メソッドのオンオフ” 設定を確認する。特に Android 9 では Ctrl+Space が使えないので、別のキーを割り当てる必要あり。

xterm では日本語入力できないので LXTerminal を開いてください。

設定した入力メソッドのオンオフキーで動作を確認する。

GUI Desktop VNC の設定

VNC の画面解像度を変更する方法

Ubuntu の場合 ~/.vnc/tightvncserver.conf を作成し、下記のように書き込む。Debian の場合は ~/.vncrc に下記の内容を書き込む。

$geometry = "1280x720"

Smartphone の場合、等倍ピクセルだと画面が小さすぎて操作できなくなる可能性があります。 1280×720 あたりがおすすめです。 画面比率に応じて調節してください。 例: Pixel 3 (2:1 = 2160×1080) の場合 1440×720、Essential Phone PH-1 (1.84:1 = 2560×1312) の場合は 1330×720。

SSH 経由のアクセス

  • port 2022

SSH を選択している場合は普通に sshd (dropbear) が動いています。PC など他のマシンからもアクセス可能です。port 番号が 2022 なので注意。

$ ssh -p 2022 <AndroidDeviceIP> -l <UserName>

VNC/XSDL mode 時に SSH Server を起動する

$ sudo /support/startSSHServer.sh

Android ストレージへのアクセス方法

最初からマウントされており、/sdcard でアクセスできます。

自分自身への adb 接続

(1) PC に接続して、端末の adb mode を tcpip に変更

PC に予め Android SDK (adb command) を入れておく必要あり。 PC に USB 接続して、PC 側でコマンドを打つ “adb tcpip 5555”。

(2) Android (UserLAnd) 側での操作

$ sudo apt install android-tools-adb
$ adb devices

これで自分自身が「emulator-5554」として認識されている。

ブラウザ

Firefox

2019/01/10 現在 Ubuntu では Firefox が動きません。(黒画面のまま)

Debian では問題なく動いています。

Chromium

--no-sandbox を指定すれば Chromium Browser が動きます。Debian, Ubuntu 両方で確認しました。

Debian の場合

$ sudo apt install chromium
$ chromium --no-sandbox

Ubuntu の場合

$ sudo apt install chromium-browser
$ chromium-browser --no-sandbox

Android の併用

Android 7 以降なら画面分割機能が使えるので、Android のブラウザを併用する方法もあります。 速度も早く確実です。

複数のストレージの併用

UserLAnd の “Filesystems” tab でストレージを管理することができます。 同じ Distribution でも複数のストレージ領域をもたせることが可能です。

  1. Filesystems Tab に切り替える
  2. 右上の「+」から追加
    • 一番下の “Filesystem:” で、Distribution を選択
  3. 右上の FD アイコンで保存
  4. Sessions Tab に切り替える
  5. 右上の「+」から追加
  6. Filesystem: を上で作ったものに切り替え
  7. Service Type: を任意に選択する (SSH or VNC)
  8. 右上の FD アイコンで保存

他の Distribution ストレージへのアクセス

実際のファイルは /data/data/tech.ula/files 以下にあります。

  • /data/data/tech.ula/files/1

Filesystem を作るごとに、1~ の番号フォルダが作られていきます。 例えば最初に作ったのが Ubuntu で User name が “dench” なら、下記のように実パスでもアクセスできます。

$ cd /data/data/tech.ula/files/1/home/dench

同じように、他の Distribution の領域にもアクセスできます。 例えば、二番目に作ったのが Debian で User name が “hyper” なら、次のようになります。

$ cd /data/data/tech.ula/files/2/home/hyper

もし設定を変えて起動しなくなっても、他の動いている Distribution からアクセスしてファイルを書き換えることが可能です。 ただし .proot-meta-files.* や .proot.l2s.* 等のメタファイルに矛盾する修正はやめた方が良いでしょう。

PC の X11 server への接続

PC 側で X11 server が動いている場合、UserLAnd の X client (terminal 等) を直接 PC で操作することができます。

  1. 予め UserLAnd 上で ssh server を起動しておく。
  2. PC 上で X11 server を起動 (Windows の場合は X410 や VcXsrv 等)
  3. WSL 上の Linux (Ubuntu, Debian 等) で x11-server-utils を install しておく。
  4. PC 側で下記のように実行
$ sudo apt install x11-server-utils
$ export DISPLAY=localhost:0.0
$ xhost +<AndroidIPAddress>
$ ssh -Y <AndroidIPAddress> -p 2022
$ xterm

Windows の場合は、WSL + X11 server の併用をお勧めします。

ホイール欲しい ハンドル欲しい の関連記事

1)
VNC を使う場合は注意点があります。詳しくは blog 記事を参照してください
linux/userland.txt · 最終更新: 2019/02/13 14:00 by oga