14: 2011-09-06 (火) 05:51:14 yuji Attached file: sc02bomkf2_yuji0905.tar, Deleted an attach file: sc02bomkf2_yuji0902.tar at 2011-09-07 (水) 17:02:29, Deleted an attach file: sc02bomkf2_yuji0827.tar at 2011-09-07 (水) 17:02:50 |
現: 2020-12-26 (土) 15:07:42 yuji Attached file: sc02bomkf2_yuji0201.tar |
||
---|---|---|---|
Line 1: | Line 1: | ||
*kernelのコンパイル [#cf986eb9] | *kernelのコンパイル [#cf986eb9] | ||
- | Samsungで,OMKF2のソースコードが公開されたみたいだ。このソースから,Kernelをコンパイルしてみる。 | + | Samsungで,ソースコードが公開されている。このソースから,Kernelをコンパイルしてみる。 |
**ソースコードのダウンロード [#g62549cd] | **ソースコードのダウンロード [#g62549cd] | ||
https://opensource.samsung.com/にソースコードが公開されている。(SC-02BOMKF2のKernel)~ | https://opensource.samsung.com/にソースコードが公開されている。(SC-02BOMKF2のKernel)~ | ||
- | ファイル名は,SC-02B_OpenSource.zip~ | + | ファイル名は,Gingerbread ver2.3.3のKF2がSC-02B_OpenSource.zipで,ver2.3.6のKL4がSC-02B_GB_Opensource_Update.zip。~ |
適当なディレクトリを作成して, | 適当なディレクトリを作成して, | ||
$ unzip SC-02B_OpenSource.zip | $ unzip SC-02B_OpenSource.zip | ||
$ tar xvfz SC-02B_Kernel.tar.gz | $ tar xvfz SC-02B_Kernel.tar.gz | ||
- | で解凍すると,kernelのソースコードが展開される。 | + | のようにしてzipファイルを解凍すると,kernelのソースコードが展開される。 |
**initramfsを準備する [#n14eb993] | **initramfsを準備する [#n14eb993] | ||
Line 25: | Line 25: | ||
# mount rfs /dev/block/mmcblk0p2 /data nosuid nodev check=no | # mount rfs /dev/block/mmcblk0p2 /data nosuid nodev check=no | ||
mount rfs /dev/block/mmcblk0p2 /data nosuid nodev crypt check=no | mount rfs /dev/block/mmcblk0p2 /data nosuid nodev crypt check=no | ||
- | # ext4 support by Yuji | ||
mount ext4 /dev/block/mmcblk0p2 /data noatime data=ordered nodelalloc | mount ext4 /dev/block/mmcblk0p2 /data noatime data=ordered nodelalloc | ||
chown system system /data | chown system system /data | ||
Line 34: | Line 33: | ||
#mount rfs /dev/block/mmcblk0p2 /data nosuid nodev check=no | #mount rfs /dev/block/mmcblk0p2 /data nosuid nodev check=no | ||
mount rfs /dev/block/mmcblk0p2 /data nosuid nodev crypt check=no | mount rfs /dev/block/mmcblk0p2 /data nosuid nodev crypt check=no | ||
- | # ext4 support by Yuji | ||
mount ext4 /dev/block/mmcblk0p2 /data noatime data=ordered nodelalloc | mount ext4 /dev/block/mmcblk0p2 /data noatime data=ordered nodelalloc | ||
他の部分(/system,/data,/dbdata)も適当に変更する。~ | 他の部分(/system,/data,/dbdata)も適当に変更する。~ | ||
+ | mountコマンドのオプションには,すこしでも早くするために,とりあえずnoatimeをつけてみた。 | ||
+ | --noatimeをつける~ | ||
+ | この場合,ファイルにアクセスした時にタイムスタンプを更新しないようにするんで,更新を前提としたアプリケーションでは問題が出る可能性がある。 | ||
+ | --relatimeをつける~ | ||
+ | noatimeで問題が出るような場合は,relatimeがいいみたい。relatimeはatimeがcmtimeよりも古い場合にのみ,タイムスタンプを更新する。 | ||
+ | |||
-sd-ext用のマウントポイントを作っておく~ | -sd-ext用のマウントポイントを作っておく~ | ||
init.rcになくてもイイんだけど,ついでに入れておく。 | init.rcになくてもイイんだけど,ついでに入れておく。 | ||
Line 81: | Line 85: | ||
# classes will still be killed first. | # classes will still be killed first. | ||
write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15 | write /sys/module/lowmemorykiller/parameters/adj 0,1,2,7,14,15 | ||
+ | |||
write /proc/sys/vm/overcommit_memory 1 | write /proc/sys/vm/overcommit_memory 1 | ||
write /proc/sys/vm/min_free_order_shift 4 | write /proc/sys/vm/min_free_order_shift 4 | ||
Line 134: | Line 138: | ||
***その他の変更 [#cedb47bc] | ***その他の変更 [#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を[[Clockworkmod:http://www.clockworkmod.com/]]の[[3.0.0.5:http://forum.xda-developers.com/showthread.php?t=839640]]をinitramfsに組み込んだ。これで,HT-03AのようにrecoveryモードでSC-02Bを起動すると,nandバックアップが出来るようになる。 | recoveryを[[Clockworkmod:http://www.clockworkmod.com/]]の[[3.0.0.5:http://forum.xda-developers.com/showthread.php?t=839640]]をinitramfsに組み込んだ。これで,HT-03AのようにrecoveryモードでSC-02Bを起動すると,nandバックアップが出来るようになる。 | ||
- | **Kernelソースの変更 [#b58bcd31] | + | **Kernelの変更 [#b58bcd31] |
***OverClock [#z7e47aae] | ***OverClock [#z7e47aae] | ||
[[ここ:https://github.com/existz/galaxys-i9000-OC-kernel-source-patches]]に,Galaxy S(2.6.35.7)用のOC/UV対応パッチがあったんで,入れてみた。ただOCのMaxは1.2GHz :-( ~ | [[ここ:https://github.com/existz/galaxys-i9000-OC-kernel-source-patches]]に,Galaxy S(2.6.35.7)用のOC/UV対応パッチがあったんで,入れてみた。ただOCのMaxは1.2GHz :-( ~ | ||
Line 155: | Line 158: | ||
$ patch -p1 -i ../patch/bln/bln_i9000_linux-2.6.35_gingerbread.patch | $ patch -p1 -i ../patch/bln/bln_i9000_linux-2.6.35_gingerbread.patch | ||
- | ***電話の音がおかしくなるのを修正 [#n5bdf1ce] | + | ***電話の音がおかしくなるのを修正(KF2のみ) [#n5bdf1ce] |
コンパイルしてSC-02Bに出来たkernelを焼いて使ってみたら,電話の音がブチブチブチとかいう音になって電話として使えなかった :cry: JJ1から焼き直したりしてみたけど,結局自分で作ったkernelだとダメになっちゃうと言うことがわかった。((冷静に考えれば当たり前なんだけど・・・)) | コンパイルしてSC-02Bに出来たkernelを焼いて使ってみたら,電話の音がブチブチブチとかいう音になって電話として使えなかった :cry: JJ1から焼き直したりしてみたけど,結局自分で作ったkernelだとダメになっちゃうと言うことがわかった。((冷静に考えれば当たり前なんだけど・・・)) | ||
Line 166: | Line 169: | ||
***その他の変更 [#xafe1a5a] | ***その他の変更 [#xafe1a5a] | ||
- | tethering出来るように変更 | + | -テザリング出来るように変更~ |
.configをmake menuconfigでルーティングとNAT関連を有効にする。~ | .configをmake menuconfigでルーティングとNAT関連を有効にする。~ | ||
USB tethering出来ないようになっている部分をコメント化して使えるようにした。~ | USB tethering出来ないようになっている部分をコメント化して使えるようにした。~ | ||
+ | |||
+ | -swapパーテーションとzram対応~ | ||
+ | swapは,MicroSDのSwapパーテーションとzramを使えるようにした。 | ||
+ | swapを使えるようにするには,kernel設定を変更するだけ。 | ||
+ | CONFIG_SWAP=y | ||
+ | ただ,実際にスワップパーテーションを使ってみたらサクサク感がなくなっちゃうんで,使用するのはやめた。~ | ||
+ | MicroSDを早いやつにすれば良いのかもしれない。~ | ||
+ | CPUパワーがあるんで,compcacheの方が良い結果が出るかも。と思いcompcache(zramと名前が変わった)を使えるようにもしてみた。 | ||
+ | |||
+ | -IOディスパッチにsio,bfqを追加してデフォルトをsioにしてみた~ | ||
+ | sio,bfqのIOスケジュールを追加して,選択出来るようにした。 | ||
+ | IOディスパッチを変更するには,adbからか,自動実行シェルスクリプトなんかで, | ||
+ | # cat /sys/block/mmcblk0/queue/scheduler | ||
+ | noop deadline cfq bfq [sio] | ||
+ | で使用できる設定一覧と現在の設定値が表示するので, | ||
+ | # echo cfq > /sys/block/mmcblk0/queue/scheduler | ||
+ | のようにして切り替える。 | ||
+ | |||
+ | -その他~ | ||
+ | --ext4ファイルシステム周りを変更(KF2)~ | ||
+ | --TinyRCUに変更(KF2)~ | ||
+ | --Governorをいくつか追加(interactive,conservative,userspace,powersave,ondemand,performance)~ | ||
**コンパイル [#af091748] | **コンパイル [#af091748] | ||
Line 176: | Line 200: | ||
***コンパイルしてみる [#jc67712d] | ***コンパイルしてみる [#jc67712d] | ||
- | $ export LOCALVERSION="-SC02BOMKF2-CL271364" | + | $ export LOCALVERSION="-SC02BOMKF2-CL271364" (KF2) |
- | $ export KBUILD_BUILD_VERSION="0722" | + | $ export LOCALVERSION="-SC02BOMKL4-CL793915" (KL4) |
+ | $ export KBUILD_BUILD_VERSION="xxxx" (日付など・・・) | ||
として環境変数をセット。~ | として環境変数をセット。~ | ||
+ | |||
+ | 設定ファイルの.configを, | ||
+ | $ make mrproper | ||
+ | $ make aries_jpn_defconfig | ||
+ | で,SC-02B用の.configを作成する。 | ||
使うコンパイラ設定を,Makefileを変更して記述する。(上記の2009q3-68の場合の例) | 使うコンパイラ設定を,Makefileを変更して記述する。(上記の2009q3-68の場合の例) | ||
Line 192: | Line 222: | ||
に変更する。(編集したinitramfsがある場所を設定する。) | に変更する。(編集したinitramfsがある場所を設定する。) | ||
- | それと,スワップを使用出来るように設定する。 | + | 必要なら通常のLinux設定のように, |
- | CONFIG_SWAP=y | + | |
- | 設定ファイルの.configを, | + | |
- | $ make mrproper | + | |
- | $ make aries_jpn_defconfig | + | |
- | で,SC-02B用の.configを作成する。必要なら | + | |
$ make menuconfig | $ make menuconfig | ||
でkernel設定を変更する。 | でkernel設定を変更する。 | ||
これで,準備OK。 | これで,準備OK。 | ||
$ make | $ make | ||
- | でコンパイル出来た。~ | + | でコンパイルする。~ |
うまくコンパイルできると,arch/arm/bootにzImageが作成される。 | うまくコンパイルできると,arch/arm/bootにzImageが作成される。 | ||
- | module化したものがある場合は,initramfs/lib/modulesに*.koファイルを追加して,再度makeしてinitramfsを統合化してzImageを作る。 | + | module化したものがある場合は,initramfs/lib/modulesに*.koファイルを追加して,再度makeしてinitramfsを統合化してzImageを作ようにする。 |
$ cp `find ./ -name "*.ko"` ../initramfs/lib/modules/ | $ cp `find ./ -name "*.ko"` ../initramfs/lib/modules/ | ||
$ make | $ make | ||
**odin3でflash出来るようにする。 [#n58f8476] | **odin3でflash出来るようにする。 [#n58f8476] | ||
- | odin3で書き込めるようにtarファイルにする。 | + | odin3で書き込めるように,zImageをtarファイルにする。 |
$ cd arch/arm/boot | $ cd arch/arm/boot | ||
- | $ tar cvf sc02bomkf2_yuji0827.tar zImage | + | $ tar cvf sc02bomkf2_yujixxxx.tar zImage |
- | とかしてodin3で書き込めるファイル&ref(sc02bomkf2_yuji0905.tar);を作成する。~ | + | とかしてodin3で書き込めるファイル&ref(sc02bomkf2_yuji0201.tar);を作成する。~ |
SC-02Bをdownloadモードで立ち上げて,odin3で出来たファイルをPDAに指定してflashすれば,SC-02Bに書き込める。 | SC-02Bをdownloadモードで立ち上げて,odin3で出来たファイルをPDAに指定してflashすれば,SC-02Bに書き込める。 | ||
- | 純正ソースから,1.2GまでのOC,BLN対応,ext4パーテーション対応,sd-ext使用,userinit.d,swapパーテーション可,root使用,tether対応(USB,wlan),CWMリカバリーとあまりいじってないのもあって,安定している。電池持ちもSetCPUを使って,スリープ時のCPU Clockを下げるのと電圧調整で14時間は使えている :) スワップは,スワップパーテーションを使うとサクサク感がなくなっちゃうんで,使うのをやめた。CPUパワーがあるんで,compcacheの方が良い結果が出るかも。 | + | 純正ソースから, |
+ | -1.2GまでのOC~ | ||
+ | -BLN対応~ | ||
+ | -ext4パーテーション対応と高速化(高速化はKF2のみ)~ | ||
+ | -sd-ext使用とuserinit.d対応~ | ||
+ | -swapパーテーションでのswap対応 | ||
+ | -zram(compcache)での拡張ram対応~ | ||
+ | -tether(USB,WLAN)対応 | ||
+ | -IOスケジュールに,sio,bfqを追加してデフォルトをsioに~ | ||
+ | -root化~ | ||
+ | -CWMリカバリー搭載~ | ||
+ | |||
+ | と,純正からあまりいじってないのもあって,動作は安定している。(KL4はまだ試していない・・・)電池持ちもSetCPUを使って,スリープ時のCPU Clockを下げるのと電圧調整で,いろいろ使っても16時間以上は使えている :) 予備バッテリを最初購入して交換しながら使っていたんだけど,もう使わなくなった。 | ||
+ | |||
+ | あれ,%%suとSuperuser.apkがコピーされていない%% &worried; | ||
+ | cp /res/misc/su > /system/xbin/su | ||
+ | cp /res/misc/Superuser.apk > /system/app/Superuser.apk | ||
+ | とかして,とりあえずコピーした。そのうちinitramfsを変更しないと・・・ | ||
+ | |||
+ | 04/07/2012 直してみた。でもCWMのnandroidバックアップがなぜか出来ない。どうも, | ||
+ | /sdcard/clockworkmod/backup | ||
+ | ディレクトリが無いのが原因みたい。このディレクトリを作成したらnandroidバックアップ出来た &worried; | ||
+ | |||
+ | KL4は,KernelをKF2と同じ内容でいじってコンパイルとinitramfsも作成してみたんだけど,なんかなぜか/systemがマウント出来ない。しょうがないんでKF2に戻して使っている ;) |