Termuxを使ってAndroidでLinuxエミュレータ
Android端末上でLinux環境が作れるアプリTermuxが面白い。
termuxの公式サイトには下記のように書いてある。
Termux is an Android terminal emulator and Linux environment app that works directly with no rooting or setup required. A minimal base system is installed automatically - additional packages are available using the APT package manager.
簡単に要約するとこんな感じ。
「TermuxはAndroidのターミナルエミュレータで、Linux環境を作るアプリでゲスよ、ルートも不要ですぜ、旦那...」
Termuxの読み方がわからないのだが、たぶん「ターマックス」、または「ターミュックス」、それか「タームックス」、それとも「ターミュエックス」のどれかかそれとも別の読み方があるのか。
個人的には「ターミュエックス」が気に入っているが、たぶん違う。
なのでここでは英語表記のTermuxを使ってお茶を濁します。
Termuxとキーボードアプリのインストール
- Termux
- CodeBoard
Android端末でGoogle Playを起動して、"Termux"で検索して一番上に出てきたのをインストールします。
それから今度は"CodeBoard"と検索して、それもインストールします。
"CodeBoard"はコーディング(プログラミング)とかターミナルの操作に便利な仮想キーボードで、Tabの入力が簡単にできます。キーボードを表示すると画面の半分くらいを占有しますがその分表示されるボタンがかなり多いです。
Androidの普通のキーボード入力だと、Tabの入力が難しい(できない?)のでCodeBoardは非常に便利です。
Termuxの起動
インストールしたTermuxを起動します。
おそらくデフォルトのキーボードが表示されるので、Spaceキーを長押ししてキーボードをCodeBoardに変更します。
# /data/data/com.termux/files/home(~)にstorageディレクトリを作る。ここがTermuxのホームみたいになる
$ termux-setup-storage
# パッケージのアップデート
$ pkg update
# よく使いそうなパッケージのインストール
$ pkg install vim
$ pkg install git
$ pkg install openssh
普通にLinuxで使うパッケージであれば大体入るようです、Rubyとかも入れられます。
ディレクトリ構造をLinuxに近づける
TermuxはLinuxとは少し違うディレクトリ構造をしています、というよりもTermuxはAndroid内のディレクトリを間借りしているような感じで動くので$ ls /
とかやっても"Permission denied"と出ます。Androidのルートを見に行って権限がないので怒られているのだと思います。
なので、ルートを取っているとたぶん怒られません。
で、下記のprootパッケージをインストールすると、$ ls /
とやってもPermission deniedとは出なくなります。
Linuxぽいディレクトリ構造をTemuxがエミュレートしてくれるので、Androidのディレクトリをあまり意識せずに色々できます。(正確には見られるディレクトリがTermuxの管理下のディレクトリに限定されます、なのでAndroidのディレクトリは一部を覗いて見に行けなくなります) なお、このproot(chroot)モードではAndroidのディレクトリ(termux以外のディレクトリ)は参照できなくなります。
# インストール
$ pkg install proot
# termux の疑似ルートモードに入る
$ termux-chroot
Ctrl + Dで出る
Android内のファイルへのアクセス
# 下記を実行していないのであれば、実行する
$ termux-setup-storage
- Termux内のディレクトリと外部SDカードのディレクトリの対応表
~/storage/external-1/dcim -> /storage/emulated/0/DCIM
~/storage/external-1/downloads -> /storage/emulated/0/Download
~/storage/external-1/external-1 -> /storage/0000-0000/Android/data/com.termux/files
0000-0000は端末によって違うはず~/storage/external-1/movies -> /storage/emulated/0/Movies
~/storage/external-1/music -> /storage/emulated/0/Music
~/storage/external-1/pictures -> /storage/emulated/0/Pictures
~/storage/external-1/shared -> /storage/emulated/0
Termux:APIで遊ぶ
Termux:APIというAndroidの端末のセンサーとかカメラをゴニョゴニョできる面白いものもあります。
Termuxを入れた後にGoogle Playで"Termux API"と検索して"Termux:API"が出てくるはずなので、それをインストールします。
Termuxを起動します。
# Temux:APIを使えるようにする
## Google Play で Termux:API をインストールしておく必要あり
$ pkg install termux-api
これでTermux:APIが使えるようになるはずです。
# バッテリー状態を確認
$ termux-battery-status
# カメラ情報を表示
$ termux-camera-info
# 写真を撮る
$ termux-camera-photo <画像名.jpg>
# 端末上にダイアログを表示する
$ termux-dialog
# センサー情報を表示
$ termux-sensor
# バイブレーションを起動
$ termux-vibrate
# 電話をかける
$ termux-telephony-call
Termux経由で写真を撮ったり、電話をかけたりできます。 結構すごいですが、私の端末(Zenfone 2 Laser)では写真が1枚目はなんとか撮れるのですが、2回目以降うまく撮れません、原因はまだ不明。
あと、地味にすごいのがセンサー情報を表示する機能です。
termux-sensor
と打つと、延々とリアルタイムにGPSとかジャイロとかのセンサー情報が表示されます。
この情報を取得すればラズパイみたいなことが自分のスマホでできちゃいます。
Termuxで何ができるか
Termuxでできることは大きく分けると二つです。
- A Linuxマシンとして使う
- B ラズパイ(Raspberry Pi)っぽく使う
Aはまあ当然と言う感じですが、Android端末に入っているというのが肝です。持ち運びが便利だし、ネットワーク環境もそろってます。ちょっと工夫すれば持ち運び可能な開発マシンにすることも容易だと思います。
で、TermuxはAndroid端末の中で動きます。Termux:APIを入れることでAndroidのセンサー類が使えるようになります。ラズパイでカメラとかセンサー類を使うにはラズパイ本体を買ってさらにカメラ類もそろえる必要があり、さらにラズパイは電源の問題もクリアする必要がありますが、TermuxはAndroid端末の中で動いているので電源の問題を気にする必要がありません。
ラズパイのように色んなセンサーをつなぐことはできないですが、ラズパイっ「ぽい」使い方をするのは可能だと思います。
Termuxでモロモロする方法
OpenSSHをインストールするとPCからsshでTermuxに接続もできます。 接続方法の詳細は下記にまとめました。
他にも色々あるので、公式サイトをチェックしてみてください。 Termux:API公式