android 修改ramdisk.img和init.rc android启动后设置/data权限为770
有时候希望在启动后做点事情,比如在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里面的内容了。
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
android 修改ramdisk.img和init.rc android启动后设置/data权限为770相关推荐
- 做Android开发,要清楚init.rc里面的东西
init.rc 复习 看这个之前,先看看大神总结的文章 这篇文章总结的非常到位,但是因为代码不是最新的Android版本,对我们最新的Android版本不适用. http://gityuan.com/ ...
- Android init.rc 服务启动不成功
Android init.rc 服务启动不成功 问题 在开发过程中发现一个问题,我们需要在开机的时候判断硬件版本号去启动服务, 服务的名字是ledservice和ledservice4,但是发现每次烧 ...
- android init.rc中启动的service 默认是disable的,后续如何启动此服务
如果 android init.rc中启动的service 默认是disable的,如何才能启动此服务呢? init.rc中可以直接启动service 附带的参数决定启动程序的状态,例如数据业务中配置 ...
- Android 10.0系统启动之init进程-[Android取经之路]
摘要:init进程是linux系统中用户空间的第一个进程,进程号为1.当bootloader启动后,启动kernel,kernel启动完后,在用户空间启动init进程,再通过init进程,来读取ini ...
- 修改android init.rc,busybox及bash在android中的安装及init.rc修改
ramdisk的制作 2.6内核开始,initrd.img采用cpio压缩,ramdisk.img也一样,使用gunzip解压缩,然后再使用 cpio解包. 1)将ramdisk.img复制其他目录, ...
- Android程序暂停sh,init进程 解析Android启动脚本init.rc 修改它使不启动android init.rc中启动一个sh文件...
Android启动后,系统执行的第一个进程是一个名称为init 的可执行程序.提供了以下的功能:设备管理.解析启动脚本.执行基本的功能.启动各种服务.代码的路径: system/core/init,编 ...
- Android 9.0 在init.rc中启动一个服务
现在有一个blink .bin文件,需要拷贝到/system/bin/目录下面去,然后再init.rc文件中启动该服务 一.init.rc文件中启动服务 1.在init.rc文件中启动服务 代码路径: ...
- Android init.rc如何启动service去执行sh脚本
在Android开发中经常会遇到,在应用层想去执行一个脚本来完成某些底层相关的操作,但在应用层又没有root权限. 所以,老大给出一种方法完美解决此问题,又把上层和底层进行了隔离,非常好的策略. 1. ...
- Android系统(2)---init.rc知识
在解析Init.rc之前需要对init.rc文件有一个认识,init.rc是由一种被称为"Android初始化语言"(Android Init Language,这里简称为AIL)的脚本写成的文件.该 ...
最新文章
- TensorFlow用法
- java400状态,java – HttpURLConnection:如何读取400响应的有效负载
- MyBatis:CRUD功能
- Flink SQL Client实现CDC实验
- 学习笔记(35续):Python网络编程并发编程-基于gevent及线程池实现的并发套接字通讯
- Leetcode 86. 分隔链表
- P7116-[NOIP2020]微信步数【数学】
- mmall工程生成dao层的插件出错了出错了 自动生成mapper 的插件出错了
- / 卡路里_最大卡路里
- 升级WINDOWS 10的失败
- python web工资怎么样_月薪21170的Python Web岗,学到什么程度能找到工作?
- 荣耀盒子无线网连接不上电脑连接服务器,华为荣耀盒子无法连接有线网络怎么解决...
- 使用laypage和pageHelper分页
- 胡崧讲Dreamweaver视频教程
- python内存泄漏_python 泄漏
- TensorFlow的Dataset的padded_batch使用
- Android集成bilibili播放器以及弹幕
- linux drm 架构 基础
- 两片74161实现60进制_用二进制计数器集成芯片74161设计:(1)60进制计数器 (2)6×10进制计数器 (3)10×6进制计数器的实验思路...
- 学校更换门窗计算机桌椅,学校机房建设中需要注意的细节