2011年8月26日金曜日

Android_エミュレータでBusybox(cp, mv, vi等)を使用する方法

AndroidエミュレータでBusyboxコマンドを使用することにより、
Androidエミュレータ上で vi や その他のコマンドが使用可能となる。
なお、下記の手順はLinux上(coLinux)で行う場合の手順である。
1. 必要なファイルのダウンロード
1.1. ARMクロスコンパイラのダウンロード
http://www.codesourcery.com/gnu_toolchains/arm/releases/2006q3-27
┏━━━━━━━━┳━━━━━━━┓
┃ラジオボタン ┃設定 ┃
┣━━━━━━━━╋━━━━━━━┫
┃Target Platform ┃ARM GNU/Linux ┃
┠────────╂───────┨
┃Host Platform ┃IA32 GNU/Linux┃
┠────────╂───────┨
┃Source ┃非選択 ┃
┗━━━━━━━━┻━━━━━━━┛
arm-2006q3-27-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2(46.9 MB)

1.2. Busyboxファイルのダウンロード
http://busybox.net/downloads/
下記のファイルをダウンロード
busybox-1.10.1.tar.bz2

2. ARMクロスコンパイラのインストール

2.1. アーカイブファイルの展開
# tar jxvf arm-2006q3-27-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

※下記のような構成となっている
arm-2006q3
+---arm-none-linux-gnueabi
+---bin
+---include
+---lib
+---libexec
\---share

2.2. ARMクロスコンパイラへのPATHを追加
/root/.bashrcのPATHへ2.1.で展開した"arm-2006q3/bin"を追加

# vim /root/.bashrc

(例)/work/Android/ToolChainへ展開した場合
export ARM_GCC=/work/Android/ToolChain/arm-2006q3/bin
export PATH=$ARM_GCC:$PATH

# . /root/.bashrc

3. Busyboxのコンパイル(Static版)
# tar jxvf busybox-1.10.1.tar.bz2
# cd busybox-1.10.1/
# make oldconfig
# make CROSS_COMPILE=arm-none-linux-gnueabi- ARCH=arm CFLAGS=--static LDFLAGS=--static

※static版のbusyboxファイルが出力される
# file busybox
busybox: ELF 32-bit LSB executable, ARM, version 1 (SYSV), statically linked, stripped

4. Android エミュレータの起動
# cd (Android SDKの場所/tools)
# ./emulator

5. AndroidのROOTFSへbusyboxファイルをPush
# adb push busybox /busybox
1170 KB/s (2230036 bytes in 1.860s)

6. Android Debug Bridge(adb)の起動
# adb shell

エミュレータのshellが表示される
#

7. Android エミュレータ上でBusyboxを動作させる
busyboxの第一パラメタにコマンドを指定することにより、
そのコマンドを実行することができる。

# /busybox top

→AndroidのROOTFSには含まれていない top コマンドが使用できる

[通常の動作]
# top
top: not found

cp, mv, ls, grep, vi を何処の場所でも使用可能とするために/system/bin へコピー
# /busybox cp /busybox /system/bin/cp
# /busybox cp /busybox /system/bin/mv
# /busybox cp /busybox /system/bin/ls
# /busybox cp /busybox /system/bin/grep
# /busybox cp /busybox /system/bin/vi
※シンボリックリンクでもOK

lsコマンドで色が付いていることを確認。



使用可能なコマンド一覧
[, [[, addgroup, adduser, adjtimex, ar, arp, arping, ash,
awk, basename, brctl, bunzip2, bzcat, bzip2, cal, cat,
catv, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot,
chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond,
crontab, cryptpw, cut, date, dc, dd, deallocvt, delgroup,
deluser, df, dhcprelay, diff, dirname, dmesg, dnsd, dos2unix,
du, dumpkmap, dumpleases, echo, ed, egrep, eject, env,
envdir, envuidgid, ether-wake, expand, expr, fakeidentd,
false, fbset, fdflush, fdformat, fdisk, fetchmail, fgrep,
find, fold, free, freeramdisk, fsck, fsck.minix, ftpget,
ftpput, fuser, getopt, getty, grep, gunzip, gzip, halt,
hdparm, head, hexdump, hostid, hostname, httpd, hwclock,
id, ifconfig, ifdown, ifenslave, ifup, inetd, init, insmod,
install, 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, lzmacat, makedevs, md5sum,
mdev, mesg, microcom, mkdir, mkfifo, mkfs.minix, mknod,
mkswap, mktemp, modprobe, more, mount, mountpoint, mt,
mv, nameif, nc, netstat, nice, nmeter, nohup, nslookup,
od, openvt, passwd, patch, pgrep, pidof, ping, ping6,
pipe_progress, pivot_root, pkill, poweroff, printenv,
printf, ps, pscan, pwd, raidautorun, rdate, readahead,
readlink, readprofile, realpath, reboot, renice, reset,
resize, rm, rmdir, rmmod, route, rpm, rpm2cpio, run-parts,
runlevel, runsv, runsvdir, rx, script, sed, sendmail,
seq, setarch, setconsole, setkeycodes, setlogcons, setsid,
setuidgid, sh, sha1sum, slattach, sleep, softlimit, sort,
split, start-stop-daemon, stat, strings, stty, su, sulogin,
sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl,
syslogd, tac, tail, tar, taskset, tcpsvd, tee, telnet,
telnetd, test, tftp, tftpd, time, top, touch, tr, traceroute,
true, tty, ttysize, udhcpc, udhcpd, udpsvd, umount, uname,
uncompress, unexpand, uniq, unix2dos, unlzma, unzip, uptime,
usleep, uudecode, uuencode, vconfig, vi, vlock, watch,
watchdog, wc, wget, which, who, whoami, xargs, yes, zcat,
zcip

0 件のコメント:

コメントを投稿