程序文件拷贝和自启动服务添加

 

一般是在device.mk文件中执行如下的拷贝工作

  1. PRODUCT_COPY_FILES += \
  2.         device/hisilicon/bigfish/etc/usbfs.sh:system/etc/usbfs.sh

 

二:添加启动动作,使Android在启动时候执行

init.rc文件末尾处加入以下内容(不再详述,不懂的自己翻书或者爬网查)

  1. service mount-usbfs /system/etc/usbfs.sh
  2.     class main
  3.     user root
  4.     group root
  5.     oneshot

之后编译系统,烧写,启动,观察启动log,发现确实执行了该sh文件,但是却报了一个“权限不足”的提示,ll了一下usbfs.sh文件,发现权限是644,没有执行权限。

OK,没有执行权限,给他添加上执行权限就是了,同样是在init.rc文件中,添加以下内容:

  1. chown root shell /system/etc/usbfs.sh
  2. chmod 0550 /system/etc/usbfs.sh

添加了执行的权限,这次应该没有问题了吧,网上很多介绍也是这么干的。

 

观察启动的log,居然还是“权限不足”!!!怎么回事,难道没有生效?ll了一下usbfs.sh文件,发现权限居然还是644,说明刚才的赋权限是没有效果的。

为什么?接着查,在查看init.rc的过程中,发现了以下内容:

  1. mount ext4 ext4@system /system ro

原来system分区是以只读的形式进行挂载的,忽略这点了。以只读形式挂载,再怎么赋权限,也是徒劳啊。

突然又发现,与usbfs.sh在同一个目录的init.bigfish.sh,权限是正常的,并且该文件的源文件与sh文件同样都在一个目录里。那么,这说明Android在编译过程中,除了拷贝以外,应该还有一个赋权限的动作。

基于以上思路,继续进行查找。功夫不负有心人,还真被我找到了,确实存在这么一个动作,它在哪里呢?

在这里:system/core/include/private/android_filesystem_config.h,其中有个结构体做如下定义:

  1. { 00550, AID_ROOT,      AID_SHELL,     "system/etc/usbfs.sh" },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值