init.rc启动 shell脚本

[Android] 在開機的時候,執行你想要的 shell script

雖然 init.rc 很好用,但還是有其缺陷... 像是我要 echo 某些字串到檔案時,他就做不到了 :(


所以可以搭配一個 .sh 的檔案,讓他開機的時候去執行這個 .sh 即可。

建議修改方式:

[1] 在 AndroidBoard.mk 裡面將你的 .sh 包起去
file := $(TARGET_OUT)/etc/my.sh
ALL_PREBUILT += $(file)
$(file) : $(LOCAL_PATH)/ my.sh | $(ACP)
$(transform-prebuilt-to-target)
[2] 在你想要加進去的 init.rc 中加入下面這段:
on boot
    exec /system/bin/sh /system/etc/my.sh

這樣子就可以嚕 ^^  裡面用粗體紅字的就是要注意的地方囉



Android::开机自动执行shell脚本

在应用程序启动之前,往往需要在Android启动过程中去对系统做一些设置,如修改某些文件夹的属主和文件的权限,本文实现在init.rc中调用shell脚本,而所有对系统资源的修改和配置都在此shell脚本中实现。


1、在system/core/rootdir/etc/init.djstava.sh脚本文件,以开机获取IP地址为例,脚本内容可如下
#! /system/bin/sh
ifconfig eth0 192.168.18.200 netmask 255.255.255.0 up
route add default gw 192.168.18.1 dev eth0

2、修改system/core/rootdir/Android.mk文件,增加语句
copy_from += etc/init.djstava.sh

3、修改device/$(硬件平台)/init.rc文件,增加语句
mount yaffs2 mtd@system /system ro remount 改为
mount yassf2 mtd@system /system rw remount

chmod 755 /system/etc/init.djstava.sh
chown root shell /system/etc/init.djstava.sh
  
service eth0_set /system/etc/init.djstava.sh
oneshot

4、设置dns,修改system/core/rootdir/init.rc,在setprop net.tcp.buffersize.gprs命令后增加如下语句
setprop net.dns1 211.167.97.67
setprop net.dns2 202.96.209.133

[init.rc] android开机过程执行shell脚本

1、在system/core/rootdir/etc/下添加脚本文件,命名为myshell.sh,脚本内容可如下
        #! /system/bin/sh
2、修改system/core/rootdir/Android.mk文件,增加语句
        copy_from += etc/myshell.sh
3、修改相应的init.rc文件,增加语句
        将mount yaffs2 mtd@system /system ro remount 改为
        mount yassf2 mtd@system /system rw remount

        //以下的内容一定不要乱放,一定把它们放在跟它们类似的命令旁边,如service就放在最后。

        chmod 755 /system/etc/myshell.sh
        chown root shell /system/etc/myshell.sh

        service myshell /system/etc/myshell.sh
        oneshot

init脚本的关键字可以参考init进程的system/core/init/keyword.h文件。
init.rc的使用方法,可以参考说明文件system/core/init/readme.txt

详细的讲解就参考:http://blog.csdn.net/magicyu2/article/details/5392524
如果想要修改启动过程只需要修改init.c(system/core/init)或者init.rc里的内容即可.

参考:

http://www.eoeandroid.com/thread-165459-1-1.html

http://www.cnblogs.com/perseus/archive/2012/03/19/2405503.html

Android pppd_gprs脚本启动过程

http://blog.zol.com.cn/4473/article_4472516.html

Android: 启动init.rc 中service的权限问题




init.rc是一个配置文件,用于规定Android系统中init进程的行为和动作。init进程是由Android的Linux内核启动的第一个进程,它的PID永远是1,并且是不会死亡的。init进程启动后会fork出其他重要的系统进程,如zygote进程,负责拉起所有应用程序的进程。init.rc文件中包含两种声明,即on和service。on声明定义了init服务的行为,而service声明定义了服务及其相关行为。init.rc文件中的服务声明可以让服务执行启动、停止等动作。通过修改init.rc文件,可以实现开机启动进程等功能。\[1\]\[3\]在具体的工程中,init.rc文件的路径可能会有所不同,可以根据实际情况查找相应的目录。\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [init.rc介绍](https://blog.csdn.net/ll148305879/article/details/91963302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [init.rc 启动 shell 脚本 开机执行脚本 init.rc执行shell脚本](https://blog.csdn.net/weixin_53620063/article/details/123797135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值