sd-extをマウントする anchor.png

SC-02Bだとinitから実行されるスクリプト格納場所のinit.dが無い。HT-03Aだとinit.dで/sd-extをマウントするようにしていた。
これがないと不便なんで,SC-02Bでも/sd-extをマウントできるようにしてみた。

いくつか方法が考えられます。今は,後者の方法を使っている。

Page Top

install-recovery.shを使ってみる anchor.png

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が使えるようになった。

Page Top

/system/etc/init.dを使えるようにする anchor.png

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に,file05mountsdextfile20userinitを入れておくと,HT-03Aと同じように,/sd-extのマウントや/sd-extに置いたユーザースクリプトが使える。


*1 たぶん,recoveryが書き換えられていたらもとに戻す為の処置だと思われる。HT-03Aの純正ROMにもあった方法。
*2 セキュリティーホールだ :-D

新しくコメントをつける

題名
ゲスト名
投稿本文
より詳細なコメント入力フォームへ

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 527, today: 1, yesterday: 0
最終更新: 2020-12-26 (土) 16:07:33 (JST) (1215d) by yuji