Android入门之旅4—M9系统Root权限获取及目录结构分析

 

 Android入门之旅4—M9系统Root权限获取及目录结构分析

http://www.ucrobotics.com/index.php/zh/forum/18-Android%E6%8A%80%E6%9C%AF%E6%8E%A2%E8%AE%A8/68-Android%E5%85%A5%E9%97%A8%E4%B9%8B%E6%97%854%E2%80%94M9%E7%B3%BB%E7%BB%9FRoot%E6%9D%83%E9%99%90%E8%8E%B7%E5%8F%96%E5%8F%8A%E7%9B%AE%E5%BD%95%E7%BB%93%E6%9E%84%E5%88%86%E6%9E%90

 

关于M9系统Root权限背景:因为M9的系统尚未完全成熟,所以魅族还未向用户放出Root权限。而开放了Root权限也意味着会有更高几率的误操作导致手机返修,所以JW甚至放出了破解了Root的M9手机魅族将不再负责保修之类的言论。

因此这里也郑重警告:对Linux终端操作不熟悉的用户请慎重Root权限进行“adb shell”相关的操作。

===============

通过adb连接M9手机后发现没有Root权限(连接操作参见“ubuntu11.4上通过adb连接M9手机”一文),从而导致很多文件无法浏览。

幸好有网友开发出可以临时获取Root权限的软件,安装完之后就可以Root了。

好像还不止一种方案:如LBE开发的隐私卫士,还有VisioNarry+(汉化版叫“一键ROOT+”)等等。

这里选择的是第一种:LBE开发的隐私卫士;根据介绍它虽然也是临时获取Root,但重启之后会继续临时获取Root,也就相当于永久了。

下载APK文件并安装到M9手机:downfile.m8fans.com/m9/Application/LBE_P...rd_M9EX_1.2.1123.apk 或者u.115.com/file/clci9n23
下载后双击安装,经过几次"下一步"之后就安装完成了。

然后通过"adb shell"连接后就可以通过执行"su"变成ROOT用户了:

$ adb shell
$ su
#

终端提示符号由"$"变成了"#",熟悉Linux的用户应该都懂的。

系统的大部分命令都在/system/bin目录下,除此之外/sbin目录下还有一个busybox可执行文件(该文件应该就是安装隐私卫士时安装的)。
# busybox ls -lh /sbin
-rwxr-x---    1 0        0         111.2K Jun 14 04:40 adbd
-rwxr-xr-x    1 0        0           1.0M Jun 14 04:40 busybox
-rwsr-xr-x    1 0        0           5.4K Jun 14 04:40 su

可见该busybox文件有1M大小,所以包含的工具应该不会少。但因为没有做链接,所以只能通过“ busybox command”进行执行了。
自己可以尝试一下,执行"ls -l"与"busybox ls -l"显示结果是不一样的,后者会彩色显示,看起来比较舒服。
对于系统没有的命令,自己可以做个busybox的链接以方便调用,如vi命令:
# cd /sbin
# ln -s busybox vi

然后就可以直接执行vi命令了。(像ls这种系统已经存在的当然也可以再做链接,但直接执行的话还是执行系统的那个,所以可以考虑使用别名:$ alias ls='busybox ls')

关于系统的目录机构,跟传统的Linux目录结构还是有差别的:
# busybox ls -l 
drwxr-xr-x    3 0        0                0 Jun 14 04:34 acct
lrwxrwxrwx    1 0        0               11 Jun 14 04:34 cache -> /data/cache
drwxr-xr-x    1 0        0             4096 May 19 03:11 cache1
dr-x------    2 0        0                0 Jun 14 04:34 config
lrwxrwxrwx    1 0        0               17 Jun 14 04:34 d -> /sys/kernel/debug
drwxrwx--x   19 1000     1000          1440 Jun 14 03:42 data
-rw-r--r--    1 0        0              118 Jan  1  1970 default.prop
drwxr-xr-x   11 0        0             2740 Jun 14 04:36 dev
lrwxrwxrwx    1 0        0               11 Jun 14 04:34 etc -> /system/etc
-rwxr-x---    1 0        0           127096 Jan  1  1970 init
-rwxr-x---    1 0        0             1677 Jan  1  1970 init.goldfish.rc
-rwxr-x---    1 0        0              571 Jan  1  1970 init.m9.rc
-rwxr-x---    1 0        0            18383 Jan  1  1970 init.rc
drwxrwxr-x    5 0        1000             0 Jun 14 04:34 mnt
dr-xr-xr-x  238 0        0                0 Jan  1  1970 proc
drwx------    2 0        0                0 May 12 08:57 root
drwxrwxrwt    2 0        0              100 Jun 14 04:40 sbin
d---rwxr-x   59 1000     1015         32768 Jan  1  1970 sdcard
drwxr-xr-x   12 0        0                0 Jun 14 04:34 sys
drwxr-xr-x    1 0        0             4096 May 19 03:10 system
-rw-r--r--    1 0        0                0 Jan  1  1970 ueventd.goldfish.rc
-rw-r--r--    1 0        0              818 Jan  1  1970 ueventd.m9.rc
-rw-r--r--    1 0        0             3764 Jan  1  1970 ueventd.rc
lrwxrwxrwx    1 0        0               14 Jun 14 04:34 vendor -> /system/vendor

  • init :系统启动到文件系统时第一个运行的程序,也是系统的第一个进程
  • init.m9.rc,init.rc,init.goldfish.rc : 均为初始化脚本文件,用于挂载系统,加载模块等等操作
  • cache : 是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处
  • sdcard :是SD卡中的FAT32文件系统挂载的目录
  • etc :指向/system/etc ,配置文件存放目录
  • system :一个很重要的目录,系统中的大部分东西都在这里
  • sys :用於挂载 sysfs文件系统
  • sbin: 只放了一个用於调试的adbd程序(安装隐私卫士后会发现多两个文件su和busybox)
  • proc :/proc 文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用
  • data :存放用户安装的软件以及各种数据
  • root :什么都没有
  • dev :设备节点文件的存放地


/system目录是在Android文件系统占有及其重要的位置,基本上所有的工具和应用程序都在这个目录下。
它在M9手机中映射的是nandflash中的mtdblock4分区,是一个yaffs2文件系统,在启动时被挂载到/system目录下:
# mount | busybox grep system
/dev/block/mtdblock4 /system yaffs2 ro,relatime 0 0

关于system目录下的结构:
# busybox ls -l system
drwxr-xr-x    1 0        0             4096 May 19 03:10 app
drwxr-xr-x    1 0        2000          4096 May 19 03:10 bin
-rw-r--r--    1 0        0             1800 Aug  1  2008 build.prop
drwxr-xr-x    1 0        0             4096 May 19 03:10 etc
drwxr-xr-x    1 0        0             4096 May 19 03:10 fonts
drwxr-xr-x    1 0        0             4096 May 19 03:10 framework
drwxr-xr-x    1 0        0             4096 May 19 03:10 lib
drwxr-xr-x    1 0        0             4096 May 19 03:10 lost+found
drwxr-xr-x    1 0        0             4096 May 19 03:10 media
drwxr-xr-x    1 0        0             4096 May 19 03:10 tts
drwxr-xr-x    1 0        0             4096 May 19 03:10 usr
drwxr-xr-x    1 0        0             4096 May 19 03:10 vendor
drwxr-xr-x    1 0        0             4096 May 19 03:10 xbin

  • app :顾名思义,存放的是Android系统自带的JAVA应用程序
  • bin :存放用户常用的工具程序的
  • build.prop :是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件
  • etc :存放了系统中几乎所有的配置文件,根目录下的/etc就链结於此
  • fonts :字库文件的存放目录
  • framework: 是JAVA平台的一些核心文件,属於JAVA平台系统框架文件,里面的文件都是.jar和.odex文件
  • lib :存放几乎所有的共享库(*.so)文件
  • lost+found :类似回收站的文件夹,ext,yaffs等文件系统固有的
  • media :存放系统的铃声的,分为 notifications(通知)、ui(界面)、alarms(警告)和ringtones(铃声),里面都是.ogg音频文件
  • tts :存放语言相关的文件
  • usr :用户的配置文件,如键盘布局、共享、时区文件等等,可以通过cat查看
  • vendor :制造商提供的二进制和库文件
  • xbin :存放系统管理工具的

几点备注:
1、关于odex文件 : odex是被优化过的JAVA程序文件,体积通常是.jar的4倍左右。执行效率比.jar高
2、/system/app中存放的系统自带的应用程序,总共也没几个;用户自己安装的则存放到/data/app之中了(安装到SD卡的肯定存放到/sdcard里面了)。
3、关于/sys :在设备模型中,sysfs文件系统用来表示设备的结构。将设备的层次结构形象的反应到用户空间中,用户空间可以修改sysfs中的文件属性来修改设备的属性值。

参考链接:
[1] www.m8fans.com/news/Article-162-1.html
[2] pandastudio.themex.net/?p=498
[3] hi.baidu.com/tigerpan/blog/item/4046aa21b24c8be3d7cae20f.html

你可能感兴趣的:(java,android,shell,手机,工具,notifications)