Android init.rcの書き方 /system/core/init/readme.txt

Androidのユーザランド側の起動を調べて発表することになりました。

とりあえず、ソースファイルの/system/core/init/init.c のmain()が起点になるので、そこから見ていけば良いとアドバイスを頂きました。

BeagleBoard用にビルドした環境を見てみるとありますね。
init.c自体は1KSくらい、終えないことはない。しかしコメントは、ほぼ無しか。

フォルダを見るとMakefileやら、ヘッダやらがあります。
中にreadme.txtがあったので軽い気持ちで見てみるといきなり
Android Init Language

と書いてあります??
Android Init Languageでぐぐってみると、おお、何と、init.rcの書き方の説明だそうです。
っていうかそんな大事なこと、readme.txtに書くかよと思って、つぶやくと
http://source.android.com/porting/bring_up.html
にも書いてあるよと返事をいただきました。そうだったんだ。

ということで、init.cを見る前にreadme.txtをざっくり翻訳してみました。
=================ここから==============================

Android Init Language
---------------------

Android Init Languageは、4つクラスから成ります。
それは、アクション、コマンド、サービスそしてオプションです。

これらの全ては行単位で、空白で区切られたトークンから構成されます。
Cスタイルのバックスラッシュエスケープがトークンに空白を挿入するために使用されることがあります。
ダブルクォートは複数トークンに分割したテキストから空白を防止するために使用されることがあります。
バックスラッシュが行の最後の文字であるときは、行を折りたたむために使用されることがあります。

#(先頭の空白は許可します)で始まる行はコメントです。

アクションとサービスは暗黙的に新しいセクションを宣言します。
全てのコマンドあるいはオプションは直近に宣言されたセクションに所属します。
最初のセクションより前のコマンドとオプションは無視されます。

アクションとサービスは一意の名前を持ちます。もし二番目のアクションもしくはサービスが
既に存在するものと同じ名前を宣言したら、エラーとして無視されます。

アクション
----------
アクションはコマンドのシーケンスで名づけられます。アクションはトリガを持っています。
トリガはアクションがいつ発生するべきかを決定するために使用されます。
アクションのトリガに一致したイベントが発生した時、アクションは実行されるキューの末尾に追加されます。(それアクションが既にキュー上に存在しない限りは)

キュー内のそれぞれのアクションは、順に取り出され、各コマンドは順に実行されます。

Initはアクティビティ内のコマンドの実行する間に他のアクティビティ(デバイスの作成/破棄、プロパティの設定、プロセスの再起動)を処理します。

アクションは以下の形をとります。
on




サービス
--------
サービスはInitが起動そして、(オプション)サービスが終了したときに再起動するプログラムです。
サービスは以下の形をとります。

service [ ]*

"Android init.rcの書き方 /system/core/init/readme.txt" へのコメントを書く

お名前
ホームページアドレス
コメント