通过adb shell访问Android。
有时候会在已经root的系统文件下面进行读写,例如/system,但是会提示类似read only file system的信息。
目前发现两种方法,该方法只在自己的测试机上成功,不保证其他机子一样。我的是Huawei U8818
下面的例子都是围绕/system目录。
方法一:
使用df命令查看
-
# df
-
df
-
Filesystem Size Used Free Blksize
-
/dev 197M 64K 197M 4096
-
/mnt/asec 197M 0K 197M 4096
-
/mnt/obb 197M 0K 197M 4096
-
/system 295M 245M 50M 4096
-
/data 755M 26M 728M 4096
-
/cache 188M 4M 184M 4096
-
/HWUserData 2G 1024K 2G 32768
-
/cust 59M 14M 44M 4096
-
/mnt/sdcard 7G 753M 6G 32768
-
/mnt/secure/asec 7G 753M 6G 32768
看到/system分区有295MB的大小。
接着查看/proc下的partitions
-
# cat /proc/partitions
-
cat /proc/partitions
-
major minor #blocks name
-
-
179 0 3817472 mmcblk0
-
179 1 20 mmcblk0p1
-
179 2 300 mmcblk0p2
-
179 3 133120 mmcblk0p3
-
179 4 1 mmcblk0p4
-
179 5 12288 mmcblk0p5
-
179 6 196608 mmcblk0p6
-
179 7 4096 mmcblk0p7
-
179 8 3072 mmcblk0p8
-
179 9 4096 mmcblk0p9
-
179 10 3072 mmcblk0p10
-
179 11 3072 mmcblk0p11
-
179 12 393216 mmcblk0p12
-
179 13 786432 mmcblk0p13
-
179 14 4096 mmcblk0p14
-
179 15 8192 mmcblk0p15
-
179 16 20480 mmcblk0p16
-
179 17 4096 mmcblk0p17
-
179 18 81920 mmcblk0p18
-
179 19 2154496 mmcblk0p19
-
179 32 7761920 mmcblk1
-
179 33 7757824 mmcblk1p1
-
31 0 4096 mtdblock0
看出,分区mmcblk012的大小最接近295MB,判断挂载点/system就对应该它了。
(其实,可以在/proc/mounts下面看的更直接。。。)
于是,输入以下mount命令
-
# mount -o remount,rw /dev/block/mmcblk0p12 /system
就可以在/system下面进行写操作。
当然,如果不打算重启机子的话,最好还是将它恢复到read only状态。输入:
-
# mount -o remount,ro /dev/block/mmcblk0p12 /system
该方法比较麻烦的是还要判断某挂载点跟分区,理论上说必须要将它们对应上来,否则会出错。
而实际上试过将不同的分区跟挂载点remount一下,居然还是可以的。原因暂时不明。
方法二:
考虑到上面用斜黑体字写的现象,尝试用其他信息代替”/dev/block/mmcblk0p12“,试了一下居然也是可行的!
直接输入下列命令即可:
-
-
# mount -o remount,rw mtd@system /system
-
第二种方法虽然也是可以的。之所以这么写是参考init.rc里面的mount写法。
不清楚这个是怎么回事,要是原生的linux mount命令应该不会这样的。
update: 2013.11
其实,没必要像上面方法一和方法二那么复杂.还可以更简单.只需要输入:
-
# mount -o remount,rw /system
即可.
linux系统自己会去维护一个已经mount的表.所以只需要输入现有的挂载点就行啦
阅读(59731) | 评论(2) | 转发(1) |