android下的ramdisk

以下摘自:http://blog.csdn.net/liushaogeng/archive/2010/10/18/5949268.aspx

 

***********************************

有时候希望在启动后做点事情,比如在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.

 

************************************************

 

这个适合拷到sdk下,但是如果要下载到板子上就不一定合适了,因为这里的ramdisk.img是“gzip compressed data, from Unix“,但是我们的板子是用uramdisk.img,是“u-boot/PPCBoot image“。这就需要用mkimage转换一下:

   mkimage -A arm -O linux -T ramdisk -C none -a 41000000 -n "ramdisk" -d ramdisk.img uramdisk.img

 

还有另外一种方法:

在android的开发环境下,更改/vendor/XXX/YYY/init.rc,然后在开发环境的根目录下运行make ramdisk(该Makefile在/build/core/Makefile里有定义),这样就能生成ramdisk.img和uramdisk.img。把uramdisk.img下载到板子上就OK了。

注:这里的XXX是平台名称,YYY是产品名称。当然这些都是平台相关的,各个厂家都不太一样,并且Makefile也要支持,但是大概就是这个样子。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值