なんでそんなことを?
prootにはどうしてもオーバーヘッドがあるし、prootのデスクトップの中でTermux本体のシェルにアクセスしたいときがあるからです。
え?みんなそういうことしない?
やり方
まずはTermuxにproot仮想環境を作っておいてください。
それと、tmuxかscreenをインストールして、仮想ターミナルを起動しておいてください。
Step 0
proot-distroを使ってる場合は飛ばして構いません。
もし、AndronixやAnLinuxを使っている場合は、以下のディレクトリ・ファイルをバインドするようにしてください。
/data
/system
/apex
/linkerconfig/ld.config.txt
これで、prootの中からでもTermuxのコマンドを実行できます。
Step 1
proot内で新しいユーザーを作ります。
adduser temrux
ユーザー名は適当にtermuxとしていますが、別になんでもいいです。
だたし、すでに一般ユーザーを使用している場合でも新しいユーザーを作ってください。
このあとこのアカウントは半分ぶっ壊れます。(一敗)
次に、Termux本体のシェルを開いて、TermuxのユーザーIDを調べます
echo $UID
またprootにもどって、さっき作ったユーザーのIDを書き換えます。
ユーザーがtermuxで、IDが10318の場合はこのようなコマンドになります。
usermod -o -u 10318 termux
Step 2
screenを使っている場合、新しく作ったユーザーのホームディレクトリに/data/data/com.termux/files/home/.screen
のリンクを作っておいてください。
tmuxの場合は、このコマンドを実行してみてください。
sudo -u [先程のユーザー] /data/data/com.termux/files/usr/bin/tmux ls
screenの場合は、このコマンドを実行してみてください。
sudo -u [先程のユーザー] /data/data/com.termux/files/usr/bin/screen -ls
うまく行っていれば、最初に作ったセッションが出てくるはずです。
そのセッションにアタッチすれば、脱獄完了です。
sudo -u [先程のユーザー] /data/data/com.termux/files/usr/bin/tmux a
sudo -u [先程のユーザー] /data/data/com.termux/files/usr/bin/screen -a
Step 3
別にこれはやらなくてもいいですが、そこそこ長いコマンドなのでエイリアスとかシェル関数とか作っておくと便利です。
さいごに
初めての記事なので、気になるところがあったらどんどん言ってください。
さっきやってわかったこと
この方法でTermuxのtmuxを起動すればprootの中で作ったtmuxセッションを開くことができた
screenはうまくいかなかったけど