Android開機執行shell指令碼

2021-06-28 14:26:23 字數 3049 閱讀 4438

往往需要在android啟動過程中去對系統做一些設定,如修改某些資料夾的屬主和檔案的許可權,可在init.rc中增加service執行shell指令碼,從而可在shell指令碼中完成大部分操作。

1、在system/bin/下建立乙個shell指令碼init.mbx.sh,以修改mtd許可權為例,內容如下:

#!/system/bin/sh

busybox chmod 666 -r /dev/mtd/*

2、在init..board.rc中增加執行上述指令碼的service

service init-setup /system/bin/init.mbx.sh

class main

user root

group root

oneshot

把service設為class main,則在啟動class類的serive自動啟動init-setup的service。

如果想在更後的時間執行shell指令碼,可如下設定:

service init-setup /system/bin/init.mbx.sh

user root

group root

disabled

oneshot

on property:sys.boot_completed=1

start  init-setup

在 android中使用啟動指令碼init.rc,可以在系統的初始化過程中進行一些簡單的初始化操作。這個指令碼被直接安裝到目標系統的根檔案系統中,被 init可執行程式解析。 init.rc是在init啟動後被執行的啟動指令碼,其語法主要包含了以下內容:

commands:命令

actions: 動作

triggers:觸發條件

services:服務

options:選項

propertise:屬性

(1) commands是一些基本的操作,例如:

mkdir /sdcard 0000 system system

mkdir /system

mkdir /data 0771 system system

mkdir /cache 0770 system cache

mkdir /config 0500 root root

mkdir /sqlite_stmt_journals 01777 root root

mount tmpfs tmpfs /sqlite_stmt_journals size=4m

這些命令在init可執行程式中被解析,然後呼叫相關的函式來實現。

(2) actions(動作)表示一系列的命令,通常在triggers(觸發條件)中呼叫,動作和觸發條件的形式為:

on < trigger>

< command>

< command>

< command>

動作的使用示例如下:

on init

export path /sbin:/system/sbin:/system/bin:/system/xbin

mkdir /system

init表示乙個觸發條件,這個觸發事件發生後,進行設定環境變數和建立目錄的操作稱為乙個「動作」

(3) services(服務)通常表示啟動乙個可執行程式,options(選項)是服務的附加內容,用於配合服務使用。

service vold /system/bin/vold

socket vold stream 0660 root mount

service bootsound /system/bin/play***

user media

group audio

oneshot

vold和bootsound分別是兩個服務的名稱,/system/bin/vold和/system /bin/play***分別是他們所對應的可執行程式。

socket、user、group、oneshot就是配合服務使用的選項。其中oneshot選項表示該服務只啟動一次,而如果沒有oneshot選項,

這個可執行程式會一直存在--如果可執行程式被殺死,則會重新啟動。

(4) properties(屬性)是系統中使用的一些值,可以進行設定和讀取。

on property:ro.kernel.qemu=1

start adbd

setprop 用於設定屬性,on property可以用於判斷屬性,這裡的屬性在整個android系統執行中都是一致的。

init指令碼的關鍵字可以參考init程序的system/core/init/keyword.h檔案。

init.rc的使用方法,可以參考說明檔案system/core/init/readme.txt。

如果想要修改啟動過程只需要修改init.c(system/core/init)或者init.rc裡的內容即可。

往往需要在android啟動過程中去對系統做一些設定,如修改某些資料夾的屬主和檔案的許可權,可在init.rc中增加service執行shell指令碼,從而可在shell指令碼中完成大部分操作。

1、在system/bin/下建立乙個shell指令碼init.mbx.sh,以修改mtd許可權為例,內容如下:

#!/system/bin/sh

busybox chmod 666 -r /dev/mtd/*

2、在init..board.rc中增加執行上述指令碼的service

service init-setup /system/bin/init.mbx.sh

class main

user root

group root

oneshot

把service設為class main,則在啟動class類的serive自動啟動init-setup的service。

如果想在更後的時間執行shell指令碼,可如下設定:

service init-setup /system/bin/init.mbx.sh

user root

group root

disabled

oneshot

on property:sys.boot_completed=1

start  init-setup

linux 開機執行shell命令

linux在啟動的時候會去執行 etc rc.local指令碼的檔案,也就是shell命令 例如開機 linux在啟動的時候會去執行 etc rc.local指令碼的檔案,也就是shell命令 例如開機的時候刪除某個檔案,只需要在該檔案中新增下面的語句即可 vi etc rc.local rm rf...

Linux 開機執行shell指令碼

因為我的樹梅派每次開機時都不需要提示輸入密碼就直接進入桌面了,這樣老覺得心裡不踏實,想著既然能進系統後執行命令鎖屏,那就肯定可以開機的時候執行乙個鎖屏指令碼命令啊,於是乎就自己開幹了起來,系統鎖屏命令是 usr bin dm tool lock 那就想著在開機時直接執行這條命令就行啊,想想這麼簡單的...

Linux 電腦開機執行過程

我們知道作業系統控制計算機所有的裝置並提供核心功能。但作業系統也是軟體。在計算機開機時,計算機內沒有任何軟體,那麼計算機是如何讀取硬碟內的作業系統檔案的呢?1.計算機開機時執行的第乙個程式是bios。由bios去讀取cmos上計算機的各項硬體資訊,從而得到mbr上第乙個可開機的裝置 2.第乙個可開機...