这些天想加一个启动进程到android的启动里面,结果找了半天修改启动的办法,大多提到是在init.rc里面修改,但是网上很多版本都没研究清楚啊

1 不知道源码的情况下,从安装包里面拿

通过下面的例子来讲述,实现一个功能:在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

ref:

http://blog.csdn.net/kaiwii/article/details/7681801

2 如果有源码的话:

2.1 一个简单的方法是:

修改方法对于有源码能编译的朋友来说很简单

那就是直接找到源码

android_install_folder/out/target/product/xxxx/root

文件夹下,xxxx代表你的产品名称

修改过后,重新编译源码,打包,烧录即可!

ref:

http://my.oschina.net/f839903061/blog/143092

2.2 系统默认的正在修改位置也许在这里:

android_install_folder/system/core/rootdir/init.rc

http://blog.csdn.net/jacy_y/article/details/7094561

3 修改后,如果不想编译整个系统,我们应该在android下编译哪个东西?

当然是要编译android的内核,

make kernel 2>&1 | tee kernel.log

android init.rc 到底在哪里?相关推荐

  1. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  2. Android init.rc文件格式解析

    /****************************************************************************** Android init.rc文件格式解 ...

  3. Android init.rc文件解析过程详解(三)

    Android init.rc文件解析过程详解(三) 三.相关结构体 1.listnode listnode结构体用于建立双向链表,这种结构广泛用于kernel代码中, android源代码中定义了l ...

  4. Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  5. Android init.rc文件解析过程详解(一)

        Android init.rc文件解析过程详解(一) 一.init.rc文件结构介绍 init.rc文件基本组成单位是section, section分为三种类型,分别由三个关键字(所谓关键字 ...

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

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

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

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

  8. Android 系统(242)---Android init.rc执行顺序

    Android init.rc执行顺序 1. 所有的action运行于service之前 2.  下面为各个section的执行顺序,英文编号的section是系统内建的(写死在init.c中的命令) ...

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

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

最新文章

  1. Docker镜像制作规范
  2. WPF之坑——ICommandSource与RoutedUICommand
  3. 【转】 GetProcAddress()用法
  4. php mysql curd_Php mysql 常用代码、CURD操作以及简单查询
  5. 琴岛学院计算机应用技术,我院计算机工程系成功晋级“中国高校计算机大赛-网络技术挑战赛”全国总决赛...
  6. uva 11105——Semi-prime H-numbers
  7. FFmpeg - C++中使用ffmpeg库
  8. hadoop--集群崩溃处理方法
  9. Skype for Business Server 2015-04-前端服务器-5-创建DNS记录
  10. 质因数分解 2012年NOIP全国联赛普及组
  11. 拓端tecdat|R语言使用蒙特卡洛模拟进行正态性检验及可视化
  12. fedora15下GNOME3使用笔记
  13. 卡耐基梅隆大学一些关于人机交互中未来接口人研究
  14. js打印线程id_理解Python多线程:通过易懂的小例子展开第一篇
  15. 数据同步工具:Canal
  16. PyTorch安装及试用 基于Anaconda3
  17. excel导出动态表头以及二级三级表头,还有数据库动态的数据来源
  18. AI上推荐 之 MIND(动态路由与胶囊网络的奇光异彩)
  19. zzuli OJ 2331:小新同学的智商
  20. 国行switch商店服务器维护,国行Nintendo Switch e商店商城常见问题解答

热门文章

  1. 通过Android反编译技术研究国内陌生人社交即时通讯的技术方案
  2. 14.面向对象-----UML类图
  3. JRebel 启动报错 could not be processed by xxx
  4. 解决Docker容器内安装chrome浏览器无法启动bug
  5. 如何设置VSCode以提高生产力
  6. 残疾人软件开发_更高级别的可访问性:我使freeCodeCamp指南对残疾人可用的5种方式...
  7. 这个库厉害了,自动补全 Python 代码,节省 50% 敲码时间
  8. 自己专属的Ubuntu系统伪装Mac
  9. Python实现红黑树的删除操作
  10. Git建立远程代码仓库和本地代码仓库