AndroidにLinux環境を入れれるアプリ「UserLAnd」の備忘録です。
動作確認環境
- UserLand v2.6.5
- Ubuntu 18.04
- MIUI 11 (Android 10)
- Xiaomi Redmi K20 Pro / 非root状態
UserLAndとは
Android端末上でLinuxディストリビューションを扱えるようにしたアプリです。root作業は非特権ユーザが疑似的にroot作業を行える proot の仕組みを利用しているみたいです。Linuxに詳しくない自分には正直良く分かりません。
インストール~起動まで
初回起動時
- 「UserLAnd」をインストールして起動します。GUI画面が開きます。
- 画面内「Distribution」で動作させるLinuxを選びます。今回は Ubuntu を選択。
- 初回起動時に Username、Password、VNC_Password を設定する画面が表示されます。適宜入力して「Continue」をタップでインストールが開始します。
- インストール時間は端末や回線に依存するので、画面が切り替わるまでは待ちましょう。
- 初回起動では SSH、VNC、XSDL のどれで接続するか聞かれます。今回は SSH を選択。
- シェル画面に移行します。パスワードを入力してログインします。
終了と2回目以降の起動
- UserLAndのGUI画面より終了は行います。GUI画面を立ち上げます。
- 画面内「Distribution」で停止させるLinuxを長押し→「Stop App」とすると終了します。
- 再度起動したい場合、画面内「Distribution」で動作させるLinuxを選びます。
- 2回目以降の起動では接続設定やパスワード設定は聞かれません。
- 接続設定を変更したい場合、画面内Linuxを長押し→「App Info」から変更可能です。
Ubuntu 18.04 インストール直後
インストール直後なので、パッケージ更新しておきましょう。
$ sudo apt update
$ sudo apt upgrade
Ubuntu18.04からデフォルトで ifconfig が使えないようです。
個人的には不便なので net-tools を入れて ifconfig を使えるようにします。
$ sudo apt install net-tools
$ ifconfig
Warning: cannot open /proc/net/dev (Permission denied). Limited output.
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 1000 (UNSPEC)
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.98 netmask 255.255.255.0 broadcast 192.168.1.255
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 3000 (UNSPEC)
ifconfig コマンドでIPアドレスを確認出来ます。SSHサーバ起動済みなので、以降は端末ソフトでPCから作業すると楽です。ポート番号は 2022 で、dropbear という軽量SSHサーバが立っています。
スマホのCPUやメモリに余裕がある場合はデスクトップ環境を入れても良いです。軽量デスクトップ環境の「LXDE」をサポートしているので、それを入れます。
$ sudo apt install lxde
とりあえず最低限の設定は以上です。
あと何回かは、自分のLinux学習も兼ねて記事を書いてみようかと思います。
UserLAnd特有の問題と思われるもの
UserLAnnd特有というか、proot 動作しているシステム全般かもしれない。
systemctl コマンドは失敗する。
以下エラーが出るため、systemctlコマンドは失敗します。
serviceコマンドの場合は上手くいきます。
$ sudo systemctl start apache2
System has not been booted with systemd as init system (PID 1). Can't operate.
$ sudo service apache2 start
* Starting Apache httpd web server apache2