Android入门之旅4—M9系统Root权限获取及目录结构分析
关于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