android init.rc 到底在哪里?
这些天想加一个启动进程到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里面的内容了。
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.aspx4、制作ramdisk.img,
init.rc修改之后,可以使用下列命令重新打包成镜像
cpio -i -t -F ../ramdisk.img > list
cpio -o -H newc -O lk.img < list
当前目录下生成的lk.img就是我们的新镜像了。
将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 到底在哪里?相关推荐
- 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)
Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...
- Android init.rc文件格式解析
/****************************************************************************** Android init.rc文件格式解 ...
- Android init.rc文件解析过程详解(三)
Android init.rc文件解析过程详解(三) 三.相关结构体 1.listnode listnode结构体用于建立双向链表,这种结构广泛用于kernel代码中, android源代码中定义了l ...
- Android init.rc文件解析过程详解(二)
Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...
- Android init.rc文件解析过程详解(一)
Android init.rc文件解析过程详解(一) 一.init.rc文件结构介绍 init.rc文件基本组成单位是section, section分为三种类型,分别由三个关键字(所谓关键字 ...
- android init.rc中启动的service 默认是disable的,后续如何启动此服务
如果 android init.rc中启动的service 默认是disable的,如何才能启动此服务呢? init.rc中可以直接启动service 附带的参数决定启动程序的状态,例如数据业务中配置 ...
- Android init.rc 服务启动不成功
Android init.rc 服务启动不成功 问题 在开发过程中发现一个问题,我们需要在开机的时候判断硬件版本号去启动服务, 服务的名字是ledservice和ledservice4,但是发现每次烧 ...
- Android 系统(242)---Android init.rc执行顺序
Android init.rc执行顺序 1. 所有的action运行于service之前 2. 下面为各个section的执行顺序,英文编号的section是系统内建的(写死在init.c中的命令) ...
- 修改android init.rc,busybox及bash在android中的安装及init.rc修改
ramdisk的制作 2.6内核开始,initrd.img采用cpio压缩,ramdisk.img也一样,使用gunzip解压缩,然后再使用 cpio解包. 1)将ramdisk.img复制其他目录, ...
最新文章
- Docker镜像制作规范
- WPF之坑——ICommandSource与RoutedUICommand
- 【转】 GetProcAddress()用法
- php mysql curd_Php mysql 常用代码、CURD操作以及简单查询
- 琴岛学院计算机应用技术,我院计算机工程系成功晋级“中国高校计算机大赛-网络技术挑战赛”全国总决赛...
- uva 11105——Semi-prime H-numbers
- FFmpeg - C++中使用ffmpeg库
- hadoop--集群崩溃处理方法
- Skype for Business Server 2015-04-前端服务器-5-创建DNS记录
- 质因数分解 2012年NOIP全国联赛普及组
- 拓端tecdat|R语言使用蒙特卡洛模拟进行正态性检验及可视化
- fedora15下GNOME3使用笔记
- 卡耐基梅隆大学一些关于人机交互中未来接口人研究
- js打印线程id_理解Python多线程:通过易懂的小例子展开第一篇
- 数据同步工具:Canal
- PyTorch安装及试用 基于Anaconda3
- excel导出动态表头以及二级三级表头,还有数据库动态的数据来源
- AI上推荐 之 MIND(动态路由与胶囊网络的奇光异彩)
- zzuli OJ 2331:小新同学的智商
- 国行switch商店服务器维护,国行Nintendo Switch e商店商城常见问题解答
热门文章
- 通过Android反编译技术研究国内陌生人社交即时通讯的技术方案
- 14.面向对象-----UML类图
- JRebel 启动报错 could not be processed by xxx
- 解决Docker容器内安装chrome浏览器无法启动bug
- 如何设置VSCode以提高生产力
- 残疾人软件开发_更高级别的可访问性:我使freeCodeCamp指南对残疾人可用的5种方式...
- 这个库厉害了,自动补全 Python 代码,节省 50% 敲码时间
- 自己专属的Ubuntu系统伪装Mac
- Python实现红黑树的删除操作
- Git建立远程代码仓库和本地代码仓库