Chinaunix首页 | 论坛 | 博客

分类: Android平台

2018-05-16 12:26:49

android 虽然是linux 系统,可以通过adb shell 登录执行一些linux命令;但是毕竟它是一个精简版的linux。很多常规linux 系统内置命令都没有带。恰好有个叫busybox的套件,打包了一些常用的linux命令,让我们更加方便的使用命令行操作android

本文使用的手机的是 google nexus 5 手机,这个手机非常适合用来真机调试源码。建议大家使用这个,网上400元可以淘一个

一、先要把手机Root

这个可以参考我另外一篇android nexus 5 手机解锁-刷机-root教程

二、下载BusyBox 安装包

下载地址为https://busybox.net/downloads/binaries/。有很多版本可以选择最新版本。


一般真机都是arm 芯片,但是arm包也有好几个。到底选择哪一个呢。


先查一下我们真机的cpu指令架构


  1. stevenrao@~$ adb shell

  2. shell@hammerhead:/ $

  3. 1|shell@hammerhead:/ $ cat /proc/cpuinfo

  4. Processor : ARMv7 Processor rev 0 (v7l)

  5. processor : 0

  6. BogoMIPS : 38.40

  7. processor : 1

  8. BogoMIPS : 38.40

  9. processor : 2

  10. BogoMIPS : 38.40

  11. processor : 3

  12. BogoMIPS : 38.40

  13. Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt

  14. CPU implementer : 0x51

  15. CPU architecture: 7

  16. CPU variant : 0x2

  17. CPU part : 0x06f

  18. CPU revision : 0

  19. Hardware : Qualcomm MSM 8974 HAMMERHEAD (Flattened Device Tree)

  20. Revision : 000b

  21. Serial : 0000000000000000


这里我就选择
busybox-armv6l 吧,这个向下兼容的。下载

wget 'https://busybox.net/downloads/binaries/1.26.2-defconfig-multiarch/busybox-armv6l

三、安装BusyBox


1、把下载包copy到真机上



  1. a、先登录真机上创建一个临时目录
  2. stevenrao@~$ adb shell
  3. shell@hammerhead:/ $ su
  4. root@hammerhead:/
  5. root@hammerhead:/ # cd /data/
  6. root@hammerhead:/data # mkdir tmp
  7. root@hammerhead:/data # chmod 777 tmp
  8. root@hammerhead:/data # exit
  9. shell@hammerhead:/ $ exit
  10. b、copy文件到临时目录
  11. stevenrao@~$ adb push busybox-armv6l /data/tmp/
  12. busybox-armv6l: 1 file pushed. 6.0 MB/s (1107664 bytes in 0.175s)
  13. stevenrao@~$ adb shell ls /data/tmp
  14. busybox-armv6l


2、安装到系统目录/system/xbin/

/system/xbin/ 目录是没有读写权限的,这里需要修改权限,直接用root用户chmod是不行的


  1. root@hammerhead:/data/tmp # chmod 777 /system/xbin/
  2. Unable to chmod /system/xbin/: Read-only file system

是因为mout的时候就是只读的。我们需要重新mount,先查看system mount是那个设备

  1. 1|root@hammerhead:/data/tmp # ll /dev/block/platform/msm_sdcc.1/by-name/
  2. lrwxrwxrwx root root 1970-04-06 09:13 DDR -> /dev/block/mmcblk0p24
  3. lrwxrwxrwx root root 1970-04-06 09:13 aboot -> /dev/block/mmcblk0p6
  4. lrwxrwxrwx root root 1970-04-06 09:13 abootb -> /dev/block/mmcblk0p11
  5. lrwxrwxrwx root root 1970-04-06 09:13 boot -> /dev/block/mmcblk0p19
  6. lrwxrwxrwx root root 1970-04-06 09:13 cache -> /dev/block/mmcblk0p27
  7. lrwxrwxrwx root root 1970-04-06 09:13 crypto -> /dev/block/mmcblk0p26
  8. lrwxrwxrwx root root 1970-04-06 09:13 fsc -> /dev/block/mmcblk0p22
  9. lrwxrwxrwx root root 1970-04-06 09:13 fsg -> /dev/block/mmcblk0p21
  10. lrwxrwxrwx root root 1970-04-06 09:13 grow -> /dev/block/mmcblk0p29
  11. lrwxrwxrwx root root 1970-04-06 09:13 imgdata -> /dev/block/mmcblk0p17
  12. lrwxrwxrwx root root 1970-04-06 09:13 laf -> /dev/block/mmcblk0p18
  13. lrwxrwxrwx root root 1970-04-06 09:13 metadata -> /dev/block/mmcblk0p14
  14. lrwxrwxrwx root root 1970-04-06 09:13 misc -> /dev/block/mmcblk0p15
  15. lrwxrwxrwx root root 1970-04-06 09:13 modem -> /dev/block/mmcblk0p1
  16. lrwxrwxrwx root root 1970-04-06 09:13 modemst1 -> /dev/block/mmcblk0p12
  17. lrwxrwxrwx root root 1970-04-06 09:13 modemst2 -> /dev/block/mmcblk0p13
  18. lrwxrwxrwx root root 1970-04-06 09:13 pad -> /dev/block/mmcblk0p7
  19. lrwxrwxrwx root root 1970-04-06 09:13 persist -> /dev/block/mmcblk0p16
  20. lrwxrwxrwx root root 1970-04-06 09:13 recovery -> /dev/block/mmcblk0p20
  21. lrwxrwxrwx root root 1970-04-06 09:13 rpm -> /dev/block/mmcblk0p3
  22. lrwxrwxrwx root root 1970-04-06 09:13 rpmb -> /dev/block/mmcblk0p10
  23. lrwxrwxrwx root root 1970-04-06 09:13 sbl1 -> /dev/block/mmcblk0p2
  24. lrwxrwxrwx root root 1970-04-06 09:13 sbl1b -> /dev/block/mmcblk0p8
  25. lrwxrwxrwx root root 1970-04-06 09:13 sdi -> /dev/block/mmcblk0p5
  26. lrwxrwxrwx root root 1970-04-06 09:13 ssd -> /dev/block/mmcblk0p23
  27. lrwxrwxrwx root root 1970-04-06 09:13 system -> /dev/block/mmcblk0p25
  28. lrwxrwxrwx root root 1970-04-06 09:13 tz -> /dev/block/mmcblk0p4
  29. lrwxrwxrwx root root 1970-04-06 09:13 tzb -> /dev/block/mmcblk0p9
  30. lrwxrwxrwx root root 1970-04-06 09:13 userdata -> /dev/block/mmcblk0p28


重新mount, 修改权限

  1. stevenrao@~$ adb shell
  2. shell@hammerhead:/ $ su
  3. root@hammerhead:/ # mount -o remount,rw /dev/block/mmcblk0p25 /system
  4. root@hammerhead:/ # chmod 777 /system
  5. root@hammerhead:/ # chmod 777 /system/xbin
  6. root@hammerhead:/data/tmp # ./busybox-armv6l --install /system/xbin/
  7. busybox-armv6l: /system/xbin/[: Invalid cross-device link
  8. busybox-armv6l: /system/xbin/[[: Invalid cross-device link
  9. busybox-armv6l: /system/xbin/acpid: Invalid cross-device link
  10. busybox-armv6l: /system/xbin/add-shell: Invalid cross-device link
  11. busybox-armv6l: /system/xbin/addgroup: Invalid cross-device link
  12. busybox-armv6l: /system/xbin/adduser: Invalid cross-device link

出现错误。 是跨设备存储问题。copy到 /system/xbin/ 下重新执行吧


  1. root@hammerhead:/data/tmp # cd /system/xbin
  2. root@hammerhead:/system/xbin # cp /data/tmp/busybox-armv6l ./
  3. root@hammerhead:/system/xbin # ./busybox-armv6l --install .

安装成功


四、测试

  1. root@hammerhead:/data/tmp # md5sum busybox-armv6l
  2. af177e4a17185a5235f9c1a0ea15e1f8 busybox-armv6l

md5sum 这个命令系统之前是没有的

阅读(397) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册