android的system.img修改加权限并写回的一些命令操作

手机用root工具后就可以把system分区用dd 命令复回来。

adb shell, dd if=/dev/block/platform/msm_sdcc.3/by-name/system of=/sdcard/system.img 

如果by-name目录没有就要找到system对应的分区号. 

adb shell, cat /proc/partitions 会显示分区的一些信息

adb shell, mount 会显示一些初始mount的命令,参数中有system cache data 的参数信息。但没有boot ,recovery的一些信息。所以不了解的块决对不要去改对。如下命令是读出命令。但相反的就是写回,用时一定要小心。

adb shell, dd if=/dev/block/mmcblk0p17 of=/sdcard/system.img

这样就得到了可用于线刷的system.img 数据。从卡刷数据包中也能提出.但我修改后,写入不成功,可能是用了用fastboot写sparse包的原因,但我成功改写了一个方法后就没再试。因为还有改权限的问题。

system.img 在Unutu下用android 工具包的,make_ext4fs simg2img, img2simg 就可以解包打包了。

dd读出的是raw包,所以可以直接mount

sudo mount system.img androidsystem(这是挂载点)

cd 到目录下就可看到system分区的东西。修改后。再打包就可。

打包的工具有两个,mkuserimg.sh make_ext4fs 两个加-S参数时生成sparse包

sudo ./mkuserimg.sh (-s) androidsystem system-r.img ext4 system 512M

make_ext4fs -l 512M (-s) -a system system_out.img androidsystem

用simg2img, img2simg可在两种包格式中转换。

fastboot  flash system system-r.img

如果包接近内存大小,会报错。这时需要改包为sparse格式,并用如下命令。

fastboot -S 512M flash system system-s.img

最后把生成的包,重新mount 到一个挂载点,然后改权限,因为只用这样su命令才能起做用。make_ext4fs的-a system指明是system时,会改把包的su的特别权限改去。所以要mount后重新改回。

sudo chmod 7755 su 就可以了。

还有一种root,切称为内核root,也就是default.prop这个文件中两个属性值:

ro.secure=0

ro.debuggable=1

内核root之后,adb shell直接是root用户登录,而软件层面root,adb shell依然是shell用户登录,必须通过su命令切换到root用户($ 符号变成#)。
 

猜你喜欢

转载自blog.csdn.net/qushaobo/article/details/83049379
今日推荐