SC-02Bだとinitから実行されるスクリプト格納場所のinit.dが無い。HT-03Aだとinit.dで/sd-extをマウントするようにしていた。
これがないと不便なんで,SC-02Bでも/sd-extをマウントできるようにしてみた。
いくつか方法が考えられます。今は,後者の方法を使っている。
init.rcを見ていたらinstall-recovery.shが起動時に1度実行されるみたいだ。*1
アップデートされた2.3.3だとinstall-recovery.shは存在していないので使われてはいないんだろうということで,このinitで実行されるスクリプトを使って,/sd-extをマウントするようにしてみた。
/system/etc/install-recovery.shを作成する。
#!/system/bin/sh mount -o remount,rw rootfs / mkdir /mnt/sd-ext mount -t ext3 -onosuid,nodev /dev/block/mmcblk1p2 /mnt/sd-ext ln -s /mnt/sd-ext /sd-ext mount -o remount,ro rootfs /
マウントポイントの/mnt/sd-extも存在しないので,無理矢理作成。その後,MicroSDの2番目のパーテンションをext3で作ってあるので,それを/mnt/sd-extにマウントして,さらに/sd-extにシンボリックリンク。
その後,リブートする。
これで,HT-03Aで使っていた/sd-extが使えるようになった。
install-recovery.shを使ってsd-extをマウントするようにしていたが,自分でコンパイルしたkernelを使うようになって,initramfsも変更できるようになった。
そんなんで,initramfsの中にあるinit.rcを変更して,run_partsを使って/system/etc/init.dの中のスクリプトを起動するようにしたみた。*2
init.rcの「class_start default」の後に,以下を追加
# add run system/etc/init.d service setsysinit /sbin/sysinit user root oneshot disabled
on boot付近に,
# set RLIMIT_NICE to allow priorities from 19 to -20 setrlimit 13 40 40 # added by Yuji Ueno start setsysinit
のように,追加する。
run-partsを使って,init.dの中にあるスクリプトを実行するようにする為に,initramfsに,/sbin/sysinitを作成する。(実行できるようにパーミッションを設定)
#!/sbin/ext/busybox sh /system/xbin/busybox run-parts /system/etc/init.d
後は,/system/etc/init.dに,05mountsdextや20userinitを入れておくと,HT-03Aと同じように,/sd-extのマウントや/sd-extに置いたユーザースクリプトが使える。
新しくコメントをつける