chachaとの格闘は続く… init.d編

chachaは今回stock romをカスタマイズして使うことにしたわけですが、init.dをどのように導入したらいいかで丸一日つぶれました…

dsixda氏のrom kitchenではboot.imgにinit.dを利用可能にするコードを追加してくれるはずなんですが、/system/etc/init.d/にスクリプト(/dataに手を加える内容)を入れても何も起こらない… 学生の時にちゃんとunixのスクリプトを勉強しなかったので、スクリプトに間違いがあって動かないのか、システム的に正しくinit.dを実行できていないのかが切り離せず手こずりました。

結局、答えはここにありました。

init.rcでファイルシステムの準備ができてからsysinitを開始するようにする必要がありました。よくよく考えると当たり前の話なのですが、気が付きませんでした… init.rcに追加したのは下の赤字の部分です。

start sysinit
on property:cm.filesystem.ready=1 ←kitchenでinit.dを有効にしても、この部分がないのでファイルシステムの準備ができる(スクリプトが読み込める)前にinit.dが起動されて終了してしまう
class_start default

さらに、/system/etc/init.d/にファイルシステムの準備が整ったら、cm.filesystem.readyを1にセットするスクリプトを置いておく必要があります。今回は元ネタの通り99completedというファイルを作り、以下のようなスクリプトを入れておきました。

#!/system/bin/sh
sync;
setprop cm.filesystem.ready 1;

すると、あら不思議、今まで動かなかった/dataを修正するスクリプトがうまく実行できました。いままで、boot.imgの中身まで自分でいじったことはなかったので、今回はいい勉強になりました。

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: