z4rootをインストールしてしまった

ついに禁断のアプリをIS04に入れてしまった。z4root。
ただ、私的にはrootになることよりも、z4rootがどの様に動いているのか知りたかった。で、z4rootがおまけでインストールしてくれるbusyboxを使ってほぼ標準のLinuxコマンドが使えるようになったので、色々と見てみた。

(ソースを見ているわけではないので、勿論憶測だが)どうもz4rootのtemporary rootというのは、/system/binの内容をext2イメージのファイル(/data/data/com.z4mod.z4root/files/temproot.ext)にコピー(バックアップ)して、そこにsuとbusyoxを追加、そしてそのファイルを/system/binへloopマウントしているようだ。私はpermanent rootは実行していないので、更に推測になるがpermanentでは/system/binの内容をバックアップせずに、直接/system/binにsuやbusyboxを追加するのではないか?と思う。多分、temporary rootであればルート化の痕跡を最小限の抑えることが出来るように作られているのではないだろうか? IS04の場合はAndroid 2.2へのバージョンアップが控えているので、あまりファイルシステムをいじくって、ファームアップ時にトラブルになりたくはない。そういった意味でtemporary rootはありがたいかも。(ただ、あまりrootであちこちいじると収集が付かなくなってしまうが。)

ちなみに、z4root(1.0.3)がインストールするbusyboxのバージョンはv1.17.2で、入っているのは次のコマンド:

Currently defined functions:
	[, [[, acpid, addgroup, adduser, adjtimex, arp, arping, ash, awk,
	basename, beep, blkid, bootchartd, brctl, bunzip2, bzcat, bzip2, cal,
	cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,
	chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw,
	cttyhack, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod,
	devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname,
	dos2unix, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env,
	envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset,
	fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs,
	flock, fold, free, freeramdisk, fsck, fsck.minix, fsync, ftpd, ftpget,
	ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt, hd, hdparm,
	head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig,
	ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice,
	ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel,
	kbd_mode, kill, killall, killall5, klogd, last, length, less, linux32,
	linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname,
	logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb,
	lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev,
	mesg, microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix,
	mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more,
	mount, mountpoint, mt, mv, nameif, nc, netstat, nice, nmeter, nohup,
	nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof, ping, ping6,
	pipe_progress, pivot_root, pkill, popmaildir, poweroff, printenv,
	printf, ps, pscan, pwd, raidautorun, rdate, rdev, readahead, readlink,
	readprofile, realpath, reboot, reformime, renice, reset, resize, rev,
	rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runlevel,
	runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch,
	setconsole, setfont, setkeycodes, setlogcons, setsid, setuidgid, sh,
	sha1sum, sha256sum, sha512sum, showkey, slattach, sleep, smemcap,
	softlimit, sort, split, start-stop-daemon, stat, strings, stty, su,
	sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl,
	syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp,
	tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true,
	tty, ttysize, tunctl, udhcpc, udhcpd, udpsvd, umount, uname, unexpand,
	uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, usleep, uudecode,
	uuencode, vconfig, vi, vlock, volname, wall, watch, watchdog, wc, wget,
	which, who, whoami, xargs, xz, xzcat, yes, zcat, zcip

これだけあれば、大抵のことは出来る。Linuxの標準コマンドと完全互換とはいかないが、基本機能は押えてくれているのでLinux愛好家としては嬉しい限りだ。色々とシェルスクリプトも組めるし。(ちなみに、Linuxbusyboxについては“3種類のbusyboxは何が違うのか?”にメモってある。随分昔のメモで恐縮だが。)

【追記:2011/03/09】
このbusyboxに入っているコマンドを見ているとtelnetdが入っている。と、いうことはTelnetサーバにできるということ。詳しくは“z4rootで携帯がtelnetサーバにもなる”にメモした。

busyboxに入っているshはB shellライクでTABによるファイル名補完もできるので助かる。最初に

# busybox sh

を実行しておけば、busybox内のshが使える。

busyboxは本来シンボリックリンクして使うのが王道だが、/systemの下をいじくるのは避けたい。/sdcardの下に lbin とか言うディレクトリを作って、そこにシンボリックリンクを集約できればいいのだけど、そうもいかない。そこで、z4rootを見習って次のような方法でシンボリックリンクを作ってみた。これを入れておけば標準的なLinuxとほぼ同じ感覚で使えるようになる。

まず、Linuxマシンを使ってrootで次のコマンドを実行する(/tmpなどの作業用ディレクトリで)。

#! /bin/sh
dd if=/dev/zero of=lbin.ext bs=1M count=3
mkfs.ext2 -F lbin.ext
tune2fs -c 0 -i 0 lbin.ext
mkdir ./mnt
mount -o loop lbin.ext ./mnt
ln -s /system/bin/busybox "./mnt/["
ln -s /system/bin/busybox "./mnt/[["
ln -s /system/bin/busybox ./mnt/acpid
ln -s /system/bin/busybox ./mnt/addgroup
ln -s /system/bin/busybox ./mnt/adduser
ln -s /system/bin/busybox ./mnt/adjtimex
ln -s /system/bin/busybox ./mnt/arp
ln -s /system/bin/busybox ./mnt/arping
ln -s /system/bin/busybox ./mnt/ash
ln -s /system/bin/busybox ./mnt/awk
ln -s /system/bin/busybox ./mnt/basename
ln -s /system/bin/busybox ./mnt/beep
ln -s /system/bin/busybox ./mnt/blkid
ln -s /system/bin/busybox ./mnt/bootchartd
ln -s /system/bin/busybox ./mnt/brctl
ln -s /system/bin/busybox ./mnt/bunzip2
ln -s /system/bin/busybox ./mnt/bzcat
ln -s /system/bin/busybox ./mnt/bzip2
ln -s /system/bin/busybox ./mnt/cal
ln -s /system/bin/busybox ./mnt/cat
ln -s /system/bin/busybox ./mnt/catv
ln -s /system/bin/busybox ./mnt/chat
ln -s /system/bin/busybox ./mnt/chattr
ln -s /system/bin/busybox ./mnt/chgrp
ln -s /system/bin/busybox ./mnt/chmod
ln -s /system/bin/busybox ./mnt/chown
ln -s /system/bin/busybox ./mnt/chpasswd
ln -s /system/bin/busybox ./mnt/chpst
ln -s /system/bin/busybox ./mnt/chroot
ln -s /system/bin/busybox ./mnt/chrt
ln -s /system/bin/busybox ./mnt/chvt
ln -s /system/bin/busybox ./mnt/cksum
ln -s /system/bin/busybox ./mnt/clear
ln -s /system/bin/busybox ./mnt/cmp
ln -s /system/bin/busybox ./mnt/comm
ln -s /system/bin/busybox ./mnt/cp
ln -s /system/bin/busybox ./mnt/cpio
ln -s /system/bin/busybox ./mnt/crond
ln -s /system/bin/busybox ./mnt/crontab
ln -s /system/bin/busybox ./mnt/cryptpw
ln -s /system/bin/busybox ./mnt/cttyhack
ln -s /system/bin/busybox ./mnt/cut
ln -s /system/bin/busybox ./mnt/date
ln -s /system/bin/busybox ./mnt/dc
ln -s /system/bin/busybox ./mnt/dd
ln -s /system/bin/busybox ./mnt/deallocvt
ln -s /system/bin/busybox ./mnt/delgroup
ln -s /system/bin/busybox ./mnt/deluser
ln -s /system/bin/busybox ./mnt/depmod
ln -s /system/bin/busybox ./mnt/devmem
ln -s /system/bin/busybox ./mnt/df
ln -s /system/bin/busybox ./mnt/dhcprelay
ln -s /system/bin/busybox ./mnt/diff
ln -s /system/bin/busybox ./mnt/dirname
ln -s /system/bin/busybox ./mnt/dmesg
ln -s /system/bin/busybox ./mnt/dnsd
ln -s /system/bin/busybox ./mnt/dnsdomainname
ln -s /system/bin/busybox ./mnt/dos2unix
ln -s /system/bin/busybox ./mnt/du
ln -s /system/bin/busybox ./mnt/dumpkmap
ln -s /system/bin/busybox ./mnt/dumpleases
ln -s /system/bin/busybox ./mnt/echo
ln -s /system/bin/busybox ./mnt/ed
ln -s /system/bin/busybox ./mnt/egrep
ln -s /system/bin/busybox ./mnt/eject
ln -s /system/bin/busybox ./mnt/env
ln -s /system/bin/busybox ./mnt/envuidgid
ln -s /system/bin/busybox ./mnt/ether-wake
ln -s /system/bin/busybox ./mnt/expand
ln -s /system/bin/busybox ./mnt/expr
ln -s /system/bin/busybox ./mnt/fakeidentd
ln -s /system/bin/busybox ./mnt/false
ln -s /system/bin/busybox ./mnt/fbset
ln -s /system/bin/busybox ./mnt/fbsplash
ln -s /system/bin/busybox ./mnt/fdflush
ln -s /system/bin/busybox ./mnt/fdformat
ln -s /system/bin/busybox ./mnt/fdisk
ln -s /system/bin/busybox ./mnt/fgconsole
ln -s /system/bin/busybox ./mnt/fgrep
ln -s /system/bin/busybox ./mnt/find
ln -s /system/bin/busybox ./mnt/findfs
ln -s /system/bin/busybox ./mnt/flock
ln -s /system/bin/busybox ./mnt/fold
ln -s /system/bin/busybox ./mnt/free
ln -s /system/bin/busybox ./mnt/freeramdisk
ln -s /system/bin/busybox ./mnt/fsck
ln -s /system/bin/busybox ./mnt/fsck.minix
ln -s /system/bin/busybox ./mnt/fsync
ln -s /system/bin/busybox ./mnt/ftpd
ln -s /system/bin/busybox ./mnt/ftpget
ln -s /system/bin/busybox ./mnt/ftpput
ln -s /system/bin/busybox ./mnt/fuser
ln -s /system/bin/busybox ./mnt/getopt
ln -s /system/bin/busybox ./mnt/getty
ln -s /system/bin/busybox ./mnt/grep
ln -s /system/bin/busybox ./mnt/gunzip
ln -s /system/bin/busybox ./mnt/gzip
ln -s /system/bin/busybox ./mnt/halt
ln -s /system/bin/busybox ./mnt/hd
ln -s /system/bin/busybox ./mnt/hdparm
ln -s /system/bin/busybox ./mnt/head
ln -s /system/bin/busybox ./mnt/hexdump
ln -s /system/bin/busybox ./mnt/hostid
ln -s /system/bin/busybox ./mnt/hostname
ln -s /system/bin/busybox ./mnt/httpd
ln -s /system/bin/busybox ./mnt/hush
ln -s /system/bin/busybox ./mnt/hwclock
ln -s /system/bin/busybox ./mnt/id
ln -s /system/bin/busybox ./mnt/ifconfig
ln -s /system/bin/busybox ./mnt/ifdown
ln -s /system/bin/busybox ./mnt/ifenslave
ln -s /system/bin/busybox ./mnt/ifplugd
ln -s /system/bin/busybox ./mnt/ifup
ln -s /system/bin/busybox ./mnt/inetd
ln -s /system/bin/busybox ./mnt/init
ln -s /system/bin/busybox ./mnt/insmod
ln -s /system/bin/busybox ./mnt/install
ln -s /system/bin/busybox ./mnt/ionice
ln -s /system/bin/busybox ./mnt/ip
ln -s /system/bin/busybox ./mnt/ipaddr
ln -s /system/bin/busybox ./mnt/ipcalc
ln -s /system/bin/busybox ./mnt/ipcrm
ln -s /system/bin/busybox ./mnt/ipcs
ln -s /system/bin/busybox ./mnt/iplink
ln -s /system/bin/busybox ./mnt/iproute
ln -s /system/bin/busybox ./mnt/iprule
ln -s /system/bin/busybox ./mnt/iptunnel
ln -s /system/bin/busybox ./mnt/kbd_mode
ln -s /system/bin/busybox ./mnt/kill
ln -s /system/bin/busybox ./mnt/killall
ln -s /system/bin/busybox ./mnt/killall5
ln -s /system/bin/busybox ./mnt/klogd
ln -s /system/bin/busybox ./mnt/last
ln -s /system/bin/busybox ./mnt/length
ln -s /system/bin/busybox ./mnt/less
ln -s /system/bin/busybox ./mnt/linux32
ln -s /system/bin/busybox ./mnt/linux64
ln -s /system/bin/busybox ./mnt/linuxrc
ln -s /system/bin/busybox ./mnt/ln
ln -s /system/bin/busybox ./mnt/loadfont
ln -s /system/bin/busybox ./mnt/loadkmap
ln -s /system/bin/busybox ./mnt/logger
ln -s /system/bin/busybox ./mnt/login
ln -s /system/bin/busybox ./mnt/logname
ln -s /system/bin/busybox ./mnt/logread
ln -s /system/bin/busybox ./mnt/losetup
ln -s /system/bin/busybox ./mnt/lpd
ln -s /system/bin/busybox ./mnt/lpq
ln -s /system/bin/busybox ./mnt/lpr
ln -s /system/bin/busybox ./mnt/ls
ln -s /system/bin/busybox ./mnt/lsattr
ln -s /system/bin/busybox ./mnt/lsmod
ln -s /system/bin/busybox ./mnt/lspci
ln -s /system/bin/busybox ./mnt/lsusb
ln -s /system/bin/busybox ./mnt/lzcat
ln -s /system/bin/busybox ./mnt/lzma
ln -s /system/bin/busybox ./mnt/lzop
ln -s /system/bin/busybox ./mnt/lzopcat
ln -s /system/bin/busybox ./mnt/makedevs
ln -s /system/bin/busybox ./mnt/makemime
ln -s /system/bin/busybox ./mnt/man
ln -s /system/bin/busybox ./mnt/md5sum
ln -s /system/bin/busybox ./mnt/mdev
ln -s /system/bin/busybox ./mnt/mesg
ln -s /system/bin/busybox ./mnt/microcom
ln -s /system/bin/busybox ./mnt/mkdir
ln -s /system/bin/busybox ./mnt/mkdosfs
ln -s /system/bin/busybox ./mnt/mke2fs
ln -s /system/bin/busybox ./mnt/mkfifo
ln -s /system/bin/busybox ./mnt/mkfs.ext2
ln -s /system/bin/busybox ./mnt/mkfs.minix
ln -s /system/bin/busybox ./mnt/mkfs.vfat
ln -s /system/bin/busybox ./mnt/mknod
ln -s /system/bin/busybox ./mnt/mkpasswd
ln -s /system/bin/busybox ./mnt/mkswap
ln -s /system/bin/busybox ./mnt/mktemp
ln -s /system/bin/busybox ./mnt/modinfo
ln -s /system/bin/busybox ./mnt/modprobe
ln -s /system/bin/busybox ./mnt/more
ln -s /system/bin/busybox ./mnt/mount
ln -s /system/bin/busybox ./mnt/mountpoint
ln -s /system/bin/busybox ./mnt/mt
ln -s /system/bin/busybox ./mnt/mv
ln -s /system/bin/busybox ./mnt/nameif
ln -s /system/bin/busybox ./mnt/nc
ln -s /system/bin/busybox ./mnt/netstat
ln -s /system/bin/busybox ./mnt/nice
ln -s /system/bin/busybox ./mnt/nmeter
ln -s /system/bin/busybox ./mnt/nohup
ln -s /system/bin/busybox ./mnt/nslookup
ln -s /system/bin/busybox ./mnt/ntpd
ln -s /system/bin/busybox ./mnt/od
ln -s /system/bin/busybox ./mnt/openvt
ln -s /system/bin/busybox ./mnt/passwd
ln -s /system/bin/busybox ./mnt/patch
ln -s /system/bin/busybox ./mnt/pgrep
ln -s /system/bin/busybox ./mnt/pidof
ln -s /system/bin/busybox ./mnt/ping
ln -s /system/bin/busybox ./mnt/ping6
ln -s /system/bin/busybox ./mnt/pipe_progress
ln -s /system/bin/busybox ./mnt/pivot_root
ln -s /system/bin/busybox ./mnt/pkill
ln -s /system/bin/busybox ./mnt/popmaildir
ln -s /system/bin/busybox ./mnt/poweroff
ln -s /system/bin/busybox ./mnt/printenv
ln -s /system/bin/busybox ./mnt/printf
ln -s /system/bin/busybox ./mnt/ps
ln -s /system/bin/busybox ./mnt/pscan
ln -s /system/bin/busybox ./mnt/pwd
ln -s /system/bin/busybox ./mnt/raidautorun
ln -s /system/bin/busybox ./mnt/rdate
ln -s /system/bin/busybox ./mnt/rdev
ln -s /system/bin/busybox ./mnt/readahead
ln -s /system/bin/busybox ./mnt/readlink
ln -s /system/bin/busybox ./mnt/readprofile
ln -s /system/bin/busybox ./mnt/realpath
ln -s /system/bin/busybox ./mnt/reboot
ln -s /system/bin/busybox ./mnt/reformime
ln -s /system/bin/busybox ./mnt/renice
ln -s /system/bin/busybox ./mnt/reset
ln -s /system/bin/busybox ./mnt/resize
ln -s /system/bin/busybox ./mnt/rev
ln -s /system/bin/busybox ./mnt/rm
ln -s /system/bin/busybox ./mnt/rmdir
ln -s /system/bin/busybox ./mnt/rmmod
ln -s /system/bin/busybox ./mnt/route
ln -s /system/bin/busybox ./mnt/rpm
ln -s /system/bin/busybox ./mnt/rpm2cpio
ln -s /system/bin/busybox ./mnt/rtcwake
ln -s /system/bin/busybox ./mnt/run-parts
ln -s /system/bin/busybox ./mnt/runlevel
ln -s /system/bin/busybox ./mnt/runsv
ln -s /system/bin/busybox ./mnt/runsvdir
ln -s /system/bin/busybox ./mnt/rx
ln -s /system/bin/busybox ./mnt/script
ln -s /system/bin/busybox ./mnt/scriptreplay
ln -s /system/bin/busybox ./mnt/sed
ln -s /system/bin/busybox ./mnt/sendmail
ln -s /system/bin/busybox ./mnt/seq
ln -s /system/bin/busybox ./mnt/setarch
ln -s /system/bin/busybox ./mnt/setconsole
ln -s /system/bin/busybox ./mnt/setfont
ln -s /system/bin/busybox ./mnt/setkeycodes
ln -s /system/bin/busybox ./mnt/setlogcons
ln -s /system/bin/busybox ./mnt/setsid
ln -s /system/bin/busybox ./mnt/setuidgid
ln -s /system/bin/busybox ./mnt/sh
ln -s /system/bin/busybox ./mnt/sha1sum
ln -s /system/bin/busybox ./mnt/sha256sum
ln -s /system/bin/busybox ./mnt/sha512sum
ln -s /system/bin/busybox ./mnt/showkey
ln -s /system/bin/busybox ./mnt/slattach
ln -s /system/bin/busybox ./mnt/sleep
ln -s /system/bin/busybox ./mnt/smemcap
ln -s /system/bin/busybox ./mnt/softlimit
ln -s /system/bin/busybox ./mnt/sort
ln -s /system/bin/busybox ./mnt/split
ln -s /system/bin/busybox ./mnt/start-stop-daemon
ln -s /system/bin/busybox ./mnt/stat
ln -s /system/bin/busybox ./mnt/strings
ln -s /system/bin/busybox ./mnt/stty
ln -s /system/bin/busybox ./mnt/su
ln -s /system/bin/busybox ./mnt/sulogin
ln -s /system/bin/busybox ./mnt/sum
ln -s /system/bin/busybox ./mnt/sv
ln -s /system/bin/busybox ./mnt/svlogd
ln -s /system/bin/busybox ./mnt/swapoff
ln -s /system/bin/busybox ./mnt/swapon
ln -s /system/bin/busybox ./mnt/switch_root
ln -s /system/bin/busybox ./mnt/sync
ln -s /system/bin/busybox ./mnt/sysctl
ln -s /system/bin/busybox ./mnt/syslogd
ln -s /system/bin/busybox ./mnt/tac
ln -s /system/bin/busybox ./mnt/tail
ln -s /system/bin/busybox ./mnt/tar
ln -s /system/bin/busybox ./mnt/tcpsvd
ln -s /system/bin/busybox ./mnt/tee
ln -s /system/bin/busybox ./mnt/telnet
ln -s /system/bin/busybox ./mnt/telnetd
ln -s /system/bin/busybox ./mnt/test
ln -s /system/bin/busybox ./mnt/tftp
ln -s /system/bin/busybox ./mnt/tftpd
ln -s /system/bin/busybox ./mnt/time
ln -s /system/bin/busybox ./mnt/timeout
ln -s /system/bin/busybox ./mnt/top
ln -s /system/bin/busybox ./mnt/touch
ln -s /system/bin/busybox ./mnt/tr
ln -s /system/bin/busybox ./mnt/traceroute
ln -s /system/bin/busybox ./mnt/traceroute6
ln -s /system/bin/busybox ./mnt/true
ln -s /system/bin/busybox ./mnt/tty
ln -s /system/bin/busybox ./mnt/ttysize
ln -s /system/bin/busybox ./mnt/tunctl
ln -s /system/bin/busybox ./mnt/udhcpc
ln -s /system/bin/busybox ./mnt/udhcpd
ln -s /system/bin/busybox ./mnt/udpsvd
ln -s /system/bin/busybox ./mnt/umount
ln -s /system/bin/busybox ./mnt/uname
ln -s /system/bin/busybox ./mnt/unexpand
ln -s /system/bin/busybox ./mnt/uniq
ln -s /system/bin/busybox ./mnt/unix2dos
ln -s /system/bin/busybox ./mnt/unlzma
ln -s /system/bin/busybox ./mnt/unlzop
ln -s /system/bin/busybox ./mnt/unxz
ln -s /system/bin/busybox ./mnt/unzip
ln -s /system/bin/busybox ./mnt/uptime
ln -s /system/bin/busybox ./mnt/usleep
ln -s /system/bin/busybox ./mnt/uudecode
ln -s /system/bin/busybox ./mnt/uuencode
ln -s /system/bin/busybox ./mnt/vconfig
ln -s /system/bin/busybox ./mnt/vi
ln -s /system/bin/busybox ./mnt/vlock
ln -s /system/bin/busybox ./mnt/volname
ln -s /system/bin/busybox ./mnt/wall
ln -s /system/bin/busybox ./mnt/watch
ln -s /system/bin/busybox ./mnt/watchdog
ln -s /system/bin/busybox ./mnt/wc
ln -s /system/bin/busybox ./mnt/wget
ln -s /system/bin/busybox ./mnt/which
ln -s /system/bin/busybox ./mnt/who
ln -s /system/bin/busybox ./mnt/whoami
ln -s /system/bin/busybox ./mnt/xargs
ln -s /system/bin/busybox ./mnt/xz
ln -s /system/bin/busybox ./mnt/xzcat
ln -s /system/bin/busybox ./mnt/yes
ln -s /system/bin/busybox ./mnt/zcat
ln -s /system/bin/busybox ./mnt/zcip
cat > ./mnt/.shrc << EOF
export PATH=/sdcard/lbin:\$PATH
EOF
umount ./mnt
rmdir ./mnt

次に今作ったlbin.extというファイルをAndroid端末にコピーする。

adb push lbin.ext /sdcard

そして、Android端末に入って、

adb shell
su -
mkdir /sdcard/lbin
busybox sh
busybox mount -o ro,loop /sdcard/lbin.ext /sdcard/lbin
.  /sdcard/lbin/.shrc

(最後の行はピリオッドの後に空白を開けて。)
adb shellで端末に入った時に suの後にmountと“.”を実行すれば、イチイチ busyboxと入力しなくても直接コマンドを実行できる。

/ # ls -a
.                       etc                     proc
..                      init                    root
cache                   init.goldfish.rc        sbin
config                  init.qcom.post_boot.sh  sdcard
d                       init.qcom.rc            sphinx_tmp
data                    init.qcom.sh            sqlite_stmt_journals
default.prop            init.rc                 sys
dev                     persist                 system
/ # 

となる。ただし、busybox内蔵のコマンドがAndroidのコマンドより優先になってしまうので、思わぬトラブルが発生する可能性があるので注意が必要だ。

しかし、
root権限取得後のz4rootの環境設定はなんとなく見えたが、それ以前にどうやってroot権限を取得しているのだろうか? しばらく遊べそうだ。