4: 2011-07-24 (日) 01:41:03 yuji Attached file: sc02bomkf2_03yuji.tar |
5: 2011-07-25 (月) 05:41:11 yuji Attached file: sc02bomkf2_yuji0725.tar, Deleted an attach file: sc02bomkf2_03yuji.tar at 2011-07-25 (月) 13:41:46 |
||
---|---|---|---|
Line 30: | Line 30: | ||
chmod 0771 /data | chmod 0771 /data | ||
他の部分(/system,/data,/dbdata)も適当に変更する。~ | 他の部分(/system,/data,/dbdata)も適当に変更する。~ | ||
- | fota.rcも同様に変更 | + | fota.rcも同様に変更(何に使うんだろ?) |
mkdir /data | mkdir /data | ||
#mount rfs /dev/block/mmcblk0p2 /data nosuid nodev check=no | #mount rfs /dev/block/mmcblk0p2 /data nosuid nodev check=no | ||
Line 47: | Line 47: | ||
symlink /mnt/sdcard /sdcard | symlink /mnt/sdcard /sdcard | ||
symlink /mnt/sd-ext /sd-ext | symlink /mnt/sd-ext /sd-ext | ||
+ | -プロセスがkillされる設定の確認~ | ||
+ | AndroidのLinuxカーネルには,メモリの空き容量が少なく(ある一定値以下に)なった場合に,プロセスを殺す仕組みがある。~ | ||
+ | カーネルには,その仕組みが2種類のものが実装されていて,一つがOOM(Out Of Memory) Killerという元々のLinuxでの実装と,もう一つLow Memory KillerというAndroid特有の実装がある。~ | ||
+ | initramfsにいれるinit.rcを見てみると, | ||
+ | # Define the oom_adj values for the classes of processes that can be | ||
+ | # killed by the kernel. These are used in ActivityManagerService. | ||
+ | setprop ro.FOREGROUND_APP_ADJ 0 | ||
+ | setprop ro.VISIBLE_APP_ADJ 1 | ||
+ | setprop ro.PERCEPTIBLE_APP_ADJ 1 | ||
+ | setprop ro.HEAVY_WEIGHT_APP_ADJ 2 | ||
+ | setprop ro.SECONDARY_SERVER_ADJ 2 | ||
+ | setprop ro.BACKUP_APP_ADJ 2 | ||
+ | setprop ro.HOME_APP_ADJ 4 | ||
+ | setprop ro.HIDDEN_APP_MIN_ADJ 7 | ||
+ | setprop ro.CONTENT_PROVIDER_MEM 14 | ||
+ | setprop ro.EMPTY_APP_ADJ 15 | ||
+ | : | ||
+ | # Define the memory thresholds at which the above process classes will | ||
+ | # be killed. These numbers are in pages (4k). | ||
+ | setprop ro.FOREGROUND_APP_MEM 2560 | ||
+ | setprop ro.VISIBLE_APP_MEM 4096 | ||
+ | setprop ro.PERCEPTIBLE_APP_MEM 4096 | ||
+ | setprop ro.HEAVY_WEIGHT_APP_MEM 4096 | ||
+ | setprop ro.SECONDARY_SERVER_MEM 6144 | ||
+ | setprop ro.BACKUP_APP_MEM 6144 | ||
+ | setprop ro.HOME_APP_MEM 6144 | ||
+ | setprop ro.HIDDEN_APP_MEM 10240 | ||
+ | setprop ro.CONTENT_PROVIDER_MEM 11264 | ||
+ | setprop ro.EMPTY_APP_MEM 12288 | ||
+ | : | ||
+ | # classes will still be killed first. | ||
+ | write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15 | ||
+ | |||
+ | write /proc/sys/vm/overcommit_memory 1 | ||
+ | write /proc/sys/vm/min_free_order_shift 4 | ||
+ | write /sys/module/lowmemorykiller/parameters/minfree 1536,2048,4096,10240,11264,20480 | ||
+ | ↓ 変更 | ||
+ | write /sys/module/lowmemorykiller/parameters/minfree 2560,4096,6144,10240,11264,12288 | ||
+ | にしてみた。~ | ||
+ | adjは,プロセスの優先順位みたいで数字が小さいほど優先して実行されるという意味。adjは,プロセス毎に値を持っていて,アプリケーションのライフタイムによって変化する。~ | ||
+ | minfreeは,最低限の空きページ数を示していて,1ページは4kB。1536では,1536x4KB=6144KB という意味になる。~ | ||
+ | 空き容量が,12288ページ(49152KB)以下で,adjが15以上のプロセスはkill | ||
+ | 空き容量が,11264ページ(45056KB)以下で,adjが14以上のプロセスはkill | ||
+ | 空き容量が,10240ページ(40960KB)以下で,adjが7以上のプロセスはkill | ||
+ | : | ||
+ | オリジナルだと20480x4=81920KBになったら,フォアグランドで動いているプロセスも殺されていたんだけど,変更して,12288x4=49152KBまでは殺されないようになっていると思う。~ | ||
+ | プロセスチェックは常に行われていて,kernel/drivers/staging/android/lowmemorykiller.cに実装されている。~ | ||
+ | # echo "1536,2048,4096,5120,15360,23040" > /sys/module/lowmemorykiller/parameters/minfree | ||
+ | とかして,動作中に変更することも出来る。 | ||
+ | |||
+ | ***その他の変更 [#cedb47bc] | ||
-Recoveryの変更~ | -Recoveryの変更~ | ||
どうもSC-02B(Galaxy S)だとRecoveryはinitramfsに入れておいて,実行するみたいだ。HT-03Aみたいにブートローダーがrecoveryパーテーションから別のlinuxを起動するのではなく,いつも使うlinuxをそのまま使い,recoveryコマンドを起動するだけになっている。~ | どうもSC-02B(Galaxy S)だとRecoveryはinitramfsに入れておいて,実行するみたいだ。HT-03Aみたいにブートローダーがrecoveryパーテーションから別のlinuxを起動するのではなく,いつも使うlinuxをそのまま使い,recoveryコマンドを起動するだけになっている。~ | ||
HT-03Aだと,bootパーテーションとrecoveryパーテーション(独立したlinuxが入っている)が生きていれば,万一Systemを壊したりしてもrecoveryからリストア出来たが,SC-02Bの場合はSystemを壊した場合はRecoveryが起動出来ないと思う。~ | HT-03Aだと,bootパーテーションとrecoveryパーテーション(独立したlinuxが入っている)が生きていれば,万一Systemを壊したりしてもrecoveryからリストア出来たが,SC-02Bの場合はSystemを壊した場合はRecoveryが起動出来ないと思う。~ | ||
このおかげで?,initramfsに入っているrecoveryを入れ替えることもinitramfsを変更すれば可能になる。~ | このおかげで?,initramfsに入っているrecoveryを入れ替えることもinitramfsを変更すれば可能になる。~ | ||
- | この時点で,必要ならrecoveryをCWMとかに変更しておく。 | + | この時点で,必要ならrecoveryをCWMとかに変更しておく。これで,recoveryからnandバックアップが出来るようになる。 |
**Kernelソースの変更 [#b58bcd31] | **Kernelソースの変更 [#b58bcd31] | ||
Line 108: | Line 159: | ||
odin3で書き込めるようにtarファイルにする。 | odin3で書き込めるようにtarファイルにする。 | ||
$ tar cvf sc02bomkf2_yujixx.tar zImage | $ tar cvf sc02bomkf2_yujixx.tar zImage | ||
- | とかしてodin3でPDAで出来たファイル&ref(sc02bomkf2_03yuji.tar);を指定してflashすれば,SC-02Bに書き込める。 | + | とかしてodin3でPDAで出来たファイル&ref(sc02bomkf2_yuji0726.tar);を指定してflashすれば,SC-02Bに書き込める。 |