termuxを準備するメモ
termuxはAndroidのLinux環境で動作するコマンドラインツール類を集めたもので、LinuxコマンドがAndroidで使える環境としては多分一番人気がある。
インストールはF-Droidから
なぜか未だにGoogle Play上にも置いてあるが、 termuxは Android9以前の自分自身でパッケージの内容を改変できるという性質 に 依存していて 既にGoogle Playでは Android9 のパッケージをサブミッションできない ので更新を配布できない。
ただf-droidはサーバが遅いのと、現時点では Termux:GUI (AndroidのGUIパーツを利用するためのzenityみたいな汎用アプリ) はF-Droid版は正常に動作しないという問題がある。
SSHd起動用のリンクをホーム画面に置く
Termux:Widget https://f-droid.org/en/packages/com.termux.widget/ がホーム画面用のショートカット用アプリになっている。
とりあえず適当にファイル .shortcuts/sshd.sh
を用意すると:
#!/bin/sh
sshd
ウィジットから、この sshd.sh
を起動できる。sshdはdaemonになるので特に何も起きていないように見えるがpstree等で存在を確認できる。
~ $ pstree
?─┬─?───bash
└─sshd───sshd───bash───pstree
... Termuxを使いこなすにはAndroidのアプリケーションライフサイクルや電力管理について知らないと厳しいもんがあるんではないかという気がする。。一度この方法でsshdを起動すると、画面をOFFにした状態でも接続できるが消費電力削減の影響は受ける。
放置により操作感が悪くなるときは通知領域からwakelockを取ると安定する...はず。Wakelockはコマンドラインからでも termux-wake-lock
termux-wake-unlock
コマンドで制御でき、通知領域にも反映される。
プロセスがクラッシュしたら何が起こるのか
他のプロセスには被害は及ばないようだ。
~ $ cat crash.c
#include <stdlib.h>
int
main(int ac, char** av){
abort();
}
~ $ gcc crash.c
~ $ ./a.out
Aborted
(Termuxのgccはclangになっている。NDKがclangだから?)
コアダンプを取るには ulimit -c unlimited
。
~ $ ./a.out
Aborted (core dumped)
~ $ file core
core: ELF 64-bit LSB core file, ARM aarch64, version 1 (SYSV), SVR4-style, from './a.out'
adb
をインストールする
pkg install android-tools
で adb
をインストールできる。実際の connect
等はワイヤレスデバッグと同じ手順となる。つまり、
- 設定 → システム → 開発者向けオプション → ワイヤレスデバッグ → ペア設定コードによる〜 で PINを表示させる
-
adb pair <表示されたIPアドレスとポート>
でペアリングをする -
adb connect <表示されたIPアドレスとポート>
で接続
... USBを制御しようとしてうるさいログが出るな。。
03-22 03:58:50.351 15883 15883 I adbd : UsbFfsConnection being destroyed
03-22 03:58:50.364 15883 15890 I adbd : opening control endpoint /dev/usb-ffs/adb/ep0
03-22 03:58:50.366 15883 15890 I adbd : UsbFfsConnection constructed
03-22 03:58:50.369 15883 16588 I adbd : UsbFfs-monitor thread spawned
03-22 03:58:51.373 15883 16588 W adbd : timed out while waiting for FUNCTIONFS_BIND, trying again
USBデバッグ を有効にするとこのログは出なくなるがあんまり健全な感じはしないな。。
adb shell
を使うことで、アプリサンドボックスを抜け出すことができる。例えば、 ifconfig
とか ps -Aw
のようなコマンドの出力がより詳細になる。