1. 程式人生 > >init.rc啟動 shell指令碼

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啟動過程中去對系統做一些設定,如修改某些資料夾的屬主和檔案的許可權,本文實現在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 uproute add default gw 192.168.18.1 dev eth0
2、修改system/core/rootdir/Android.mk檔案,增加語句 copy_from += etc/init.djstava.sh3、修改device/$(硬體平臺)/init.rc檔案,增加語句 mount yaffs2 [email protected] /system ro remount 改為 mount yassf2 [email protected] /system rw remount

chmod 755 /system/etc/init.djstava.shchown root shell /system/etc/init.djstava.shservice eth0_set /system/etc/init.djstava.shoneshot4、設定dns,修改system/core/rootdir/init.rc,在setprop net.tcp.buffersize.gprs命令後增加如下語句 setprop net.dns1 211.167.97.67setprop net.dns2 202.96.209.133
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 [email protected] /system ro remount 改為
        mount yassf2 [email protected] /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

參考:

Android pppd_gprs指令碼啟動過程

Android: 啟動init.rc 中service的許可權問題

相關推薦

init.rc啟動 shell指令碼

[Android] 在開機的時候,執行你想要的 shell script 雖然 init.rc 很好用,但還是有其缺陷... 像是我要 echo 某些字串到檔案時,他就做不到了 :( 所以可以搭配一個 .sh 的檔案,讓他開機的時候去執行這個 .sh 即可。 建議修改

Android 7.0 init.rc 執行shell指令碼 ---- 製作一初始化配置檔案

最近在一個Android 7.0 PDA專案中遇到如下需求:初始化一配置檔案,此配置檔案需要儲存到data分割槽供系統服務和第三方應用進行讀寫操作,另外此配置檔案在系統重啟後保持檔案內容不變,除非恢復出廠才可以恢復成預設配置引數 。因為初始化的配置引數為了方便其它同事修改

在android init.xxx.rc啟動shell指令碼

on boot # start essential services     start shell-setup service shell-setup /system/etc/init.shell.sh     user root     group root    o

Android在init.rc中加入指令碼開機安裝APK並啟動APK的服務

要求:開機檢查APK是否安裝,如果不安裝則自動靜默安裝,同時啟動APK的服務。 把要安裝的APK放在device資料夾下,編譯時用指令碼拷貝到out目錄下,開機啟動指令碼安裝APK並啟動服務。 這裡以Airplay.apk為例。 1.在device目錄下建立資料夾Ai

linux編寫自啟動shell指令碼

1.需求分析    在很多情況下,程式設計師都做著重複枯燥的工作,雖然這些工作也是必須的,其實這些重複性的工作可以執行指令碼替代;今天筆者就如何編寫自啟動shell指令碼減少程式設計師開啟伺服器後的環境開啟工作; 2.配置環境 linux版本:centos-6.3

redis-cluster 啟動shell指令碼

下面是自己寫的一個redis叢集啟動指令碼,就是先殺掉原來的程序,然後開起來,主要是方便自己在虛擬機器上除錯。正常生產環境肯定不會像自己的虛擬機器那樣每天早上開晚上關,一般應該都是開著的,都會使用哨

linux環境java應用通用啟動shell指令碼

     對於java應用部署在linux環境分兩種情況,一為war包,應用入口為編譯後的classes檔案下的本身應用入口,其啟動指令碼可參考不錯的linux下通用的java程式啟動指令碼這篇部落格。     一為jar包形式 這種便於打包增量升級,關注於改動的jar即可

ubuntu 開機啟動shell指令碼

1.建立shell啟動指令碼test2.將啟動指令碼複製到 /etc/init.d 目錄下3.設定指令碼檔案許可權sudo chmod 755 /etc/init.d/test4.設定指令碼啟動sudo update-rc.d test defaults 95   //95

Android init.rc啟動服務

轉載 http://m.it610.com/article/5082334.htm 在“上一篇android  init.rc檔案語法詳解”,但是到了android5.0之後,按照上面的方法做,可能我們要啟動的服務就起不來了。這是因為採用了新的安全機制了——SEAndr

android開機啟動shell指令碼

1、system/core/rootdir/init.rc service start_test /system/bin/test.sh         user root     group roo

解壓RK3288的boot.img修改init.rc 新增開機自啟動指令碼

最近找別人開發一款智慧AI機器人,由於方案廠商現在程式碼還沒有交付。每次只提供ROM。現在公司要求要開機啟動系統檢測指令碼。我們都知道Android現在許可權管理很嚴格。而且我的指令碼是用shell指令碼完成的。所以無法監聽開機廣播。只能修改init.rc檔案。

RK3128系統&驅動開發分享——(四)init.rc及開機啟動指令碼

1、android啟動程式碼/system/core/init/init.c 該啟動程式碼讀取並解析init.rc指令碼程式碼如下: init_parse_config_file("/init.rc"); 然後通過action_for_each_trigger觸發響應的動作

[Android6.0]App中呼叫init.rc中的服務,從而執行shell指令碼

Author: Younix Platform: RK3399 OS: Android 6.0 Kernel: 4.4 Version: v2017.07 需求:希望在 Android App 中新增 SPDIF 測試功能。對 Android

[init.rc] android開機過程執行shell指令碼

1、在system/core/rootdir/etc/下新增指令碼檔案,命名為myshell.sh,指令碼內容可如下         #! /system/bin/sh 2、修改system/core/rootdir/Android.mk檔案,增加語句         co

init.rc文件中面啟動c++程序,通過jni調用java實現

mini val sni ril urn runtime sport mco env </pre><p>註:假設是自己的myself.jar包,還要修改例如以下:</p><p>target/product/core_bas

shell 指令碼批量啟動docker內部應用

起因; 內網機房斷電,執行在虛擬機器之上的docker 應用還得手動觸發重啟,實在太費勁,針對此應用場景進行shell 指令碼編寫; #/bin/bash #author lijx #用於docker 斷電啟動,Docker 內程式應用指令碼 function&

SpringBoot2.x應用啟動、關閉shell指令碼

本篇主要說明以下內容: 1.SpringBoot2.x應用啟動、關閉的shell指令碼 1 啟動指令碼 直接放到同jar包同一個目錄下,如下: #!/usr/bin/env bash APPLICATION_NAME='spblearn' CURRENT_PATH=`pwd` PID=""

寫一個shell指令碼啟動伺服器

使用shell指令碼寫一個一鍵啟動伺服器 ####由於我們伺服器使用的docker, nginx和 redis 還有mysql都是docker啟動好的 我們專案使用supervisor程序管理工具,需要提前配置,但是不知道什麼原因,以前的環境配置出了問題,supervisor不

Android如何配置init.rc中的開機啟動程序(service)

轉載。 http://blog.csdn.net/qq_28899635/article/details/56289063 開篇:為什麼寫這篇文章 先說下我自己的情況,我是個普通的學生,之前在學校一直做Android應用開發,找實習的時候也一直想找相關的工作,來到現在這家公司以

編寫shell指令碼一鍵啟動zookeeper叢集!!

踩了一個多小時坑終於解決了: 這裡分享給大家,更主要的目的是記住這些坑,避免以後重複走!!! 首先,這裡採用ssh祕鑰方式進行叢集主機之間免密登入執行啟動命令 這裡簡單說下原理: 通過ssh去另外一臺機器執行命令,直接執行還不行,因為需要環境變數,而ssh登入之後不在同一個程序裡面,所以環境變數不