有时候希望在启动后做点事情,比如在sdcard上建立目录,修改/data的访问权限等,这些都可以放在init.rc中去完成,那么如何来完成呢,最近由于工作的需要,在这方面进行了一些研究,特写于此,供大家参考。

通过下面的例子来讲述,实现一个功能:在android系统启动后,修改/data的访问权限为770.

共4步:1、解压ramdisk.img 2、用c语言完成要实现的功能 3、修改init.rc,启动c语言可执行程序 4、制作ramdisk.img

1、解压ramdisk.img:

解压、修改Android的ramdisk.img的手动方法:

将ramdisk.img复制一份到任何其他目录下,将其名称改为ramdisk.img.gz,并使用命令

gunzip ramdisk.img.gz

然后新建一个文件夹,叫ramdisk吧,进入,输入命令
cpio -i -F ../ramdisk.img
这下,你就能看见并操作ramdisk里面的内容了。

此步可参考:http://blog.csdn.net/liushaogeng/archive/2010/10/14/5941259.aspx

2、完成一个C语言程序chpermission.c,来实现修改权限的功能。代码如下:

#include <stdlib.h>

int main()

{

system("chmod 700 /data");

return 0;

}

然后编译此程序,不过需要编译为android下的可执行程序,可参考我的博客:http://blog.csdn.net/liushaogeng/archive/2010/09/01/5855925.aspx ,采用博客中介绍的两种方法均可以。
编译完后将可执行文件push到模拟器的/data目录中去:
#adb push chpermission /data

3、 修改ramdisk目录下init.rc文件,让其启动 chpermission程序, 增加以下代码:

#add by me on 2010-10-18
service chpermission /data/ chpermission
oneshot

用于启动 chpermission,完成相应的功能--修改data权限。

init.rc的语法可参考博客: http://blog.csdn.net/liushaogeng/archive/2010/10/18/5949244.aspx

4、制作ramdisk.img,

init.rc修改之后,可以使用下列命令重新打包成镜像
cpio -i -t -F ../ramdisk.img > list
cpio -o -H newc -O lk.img < list
当前目录下生成的lk.img就是我们的新镜像了。

可参考博客: http://blog.csdn.net/liushaogeng/archive/2010/10/14/5941259.aspx

将ramdisk.img拷贝到sdk指向的目录。

全部ok,重启自己的模拟器,查看data权限是否为770

android 修改ramdisk.img和init.rc android启动后设置/data权限为770相关推荐

  1. 做Android开发,要清楚init.rc里面的东西

    init.rc 复习 看这个之前,先看看大神总结的文章 这篇文章总结的非常到位,但是因为代码不是最新的Android版本,对我们最新的Android版本不适用. http://gityuan.com/ ...

  2. Android init.rc 服务启动不成功

    Android init.rc 服务启动不成功 问题 在开发过程中发现一个问题,我们需要在开机的时候判断硬件版本号去启动服务, 服务的名字是ledservice和ledservice4,但是发现每次烧 ...

  3. android init.rc中启动的service 默认是disable的,后续如何启动此服务

    如果 android init.rc中启动的service 默认是disable的,如何才能启动此服务呢? init.rc中可以直接启动service 附带的参数决定启动程序的状态,例如数据业务中配置 ...

  4. Android 10.0系统启动之init进程-[Android取经之路]

    摘要:init进程是linux系统中用户空间的第一个进程,进程号为1.当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取ini ...

  5. 修改android init.rc,busybox及bash在android中的安装及init.rc修改

    ramdisk的制作 2.6内核开始,initrd.img采用cpio压缩,ramdisk.img也一样,使用gunzip解压缩,然后再使用 cpio解包. 1)将ramdisk.img复制其他目录, ...

  6. Android程序暂停sh,init进程 解析Android启动脚本init.rc 修改它使不启动android init.rc中启动一个sh文件...

    Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径: system/core/init,编 ...

  7. Android 9.0 在init.rc中启动一个服务

    现在有一个blink .bin文件,需要拷贝到/system/bin/目录下面去,然后再init.rc文件中启动该服务 一.init.rc文件中启动服务 1.在init.rc文件中启动服务 代码路径: ...

  8. Android init.rc如何启动service去执行sh脚本

    在Android开发中经常会遇到,在应用层想去执行一个脚本来完成某些底层相关的操作,但在应用层又没有root权限. 所以,老大给出一种方法完美解决此问题,又把上层和底层进行了隔离,非常好的策略. 1. ...

  9. Android系统(2)---init.rc知识

    在解析Init.rc之前需要对init.rc文件有一个认识,init.rc是由一种被称为"Android初始化语言"(Android Init Language,这里简称为AIL)的脚本写成的文件.该 ...

最新文章

  1. TensorFlow用法
  2. java400状态,java – HttpURLConnection:如何读取400响应的有效负载
  3. MyBatis:CRUD功能
  4. Flink SQL Client实现CDC实验
  5. 学习笔记(35续):Python网络编程并发编程-基于gevent及线程池实现的并发套接字通讯
  6. Leetcode 86. 分隔链表
  7. P7116-[NOIP2020]微信步数【数学】
  8. mmall工程生成dao层的插件出错了出错了 自动生成mapper 的插件出错了
  9. / 卡路里_最大卡路里
  10. 升级WINDOWS 10的失败
  11. python web工资怎么样_月薪21170的Python Web岗,学到什么程度能找到工作?
  12. 荣耀盒子无线网连接不上电脑连接服务器,华为荣耀盒子无法连接有线网络怎么解决...
  13. 使用laypage和pageHelper分页
  14. 胡崧讲Dreamweaver视频教程
  15. python内存泄漏_python 泄漏
  16. TensorFlow的Dataset的padded_batch使用
  17. Android集成bilibili播放器以及弹幕
  18. linux drm 架构 基础
  19. 两片74161实现60进制_用二进制计数器集成芯片74161设计:(1)60进制计数器 (2)6×10进制计数器 (3)10×6进制计数器的实验思路...
  20. 学校更换门窗计算机桌椅,学校机房建设中需要注意的细节

热门文章

  1. Eclipse svn代码提交冲突
  2. JS配合css实现slide文字框缩放伸展效果
  3. matlab生成常用信号(方波、三角波、随机信号、单位冲激)
  4. 一些java基本程序图解2
  5. React 组件学习
  6. 8086汇编复习1 - 并使用emu8086模拟器查看效果
  7. arcgis engine 计算距离面积体积
  8. Cut the Sequence(POJ3017)
  9. Openwrt WIFI探针开发【一】
  10. reactNative 打包那些事儿