7: 2011-07-29 (金) 21:49:47 yuji ソース
Attached file: sc02bomkf2_yuji0729.tar, Deleted an attach file: sc02bomkf2_yuji0726.tar at 2011-07-30 (土) 05:50:13
現: 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 14: Line 14:
たぶん,kernelをコンパイル後zImageを作成する時にinitramfsが必要になる。~ たぶん,kernelをコンパイル後zImageを作成する時にinitramfsが必要になる。~
とりあえず,SC-02BからバックアップしておいたzImageから,&ref(unpack-initramfs);コマンドを使ってinitramfsを抜き出したファイルを使用することにする。 とりあえず,SC-02BからバックアップしておいたzImageから,&ref(unpack-initramfs);コマンドを使ってinitramfsを抜き出したファイルを使用することにする。
- $ ./unpack-initramfs zImage+ $ unpack-initramfs zImage
これで,ファイルがinitramfsの中のファイルが復元されるんで,ディレクトリをKernelディレクトリがある所にinitramfsというディレクトリを作成して,そこに移動しておく。 これで,ファイルがinitramfsの中のファイルが復元されるんで,ディレクトリをKernelディレクトリがある所にinitramfsというディレクトリを作成して,そこに移動しておく。
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 129: Line 133:
     disabled      disabled
で/sbin/init_bln.shが自動起動するようにしておく。 で/sbin/init_bln.shが自動起動するようにしておく。
 +
 +***rootが使えるようにしておく [#paf74932]
 +[[このようにして>../root化]],rootが使えるようにした。
***その他の変更 [#cedb47bc] ***その他の変更 [#cedb47bc]
Line 135: Line 142:
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から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バックアップが出来るようになる。
-***rootが使えるようにしておく [#paf74932] +
-[[このようにして>../root化]],rootが使えるようにした。+
-**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 153: 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 162: Line 167:
 ifeq ($(CONFIG_ARIES_NTT),y)  ifeq ($(CONFIG_ARIES_NTT),y)
これで改めてコンパイルしたら,ちゃんと電話の音が鳴った :-D  これってSC-02Bのソースなんだよね,Samsungさん。 これで改めてコンパイルしたら,ちゃんと電話の音が鳴った :-D  これってSC-02Bのソースなんだよね,Samsungさん。
 +
 +***その他の変更 [#xafe1a5a]
 +-テザリング出来るように変更~
 +.configをmake menuconfigでルーティングとNAT関連を有効にする。~
 +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]
- $ export LOCALVERSION="-SC02BOMKF2-CL271364" +***コンパイラtoolchain [#l09e45db] 
- $ export KBUILD_BUILD_VERSION="0722"+コンパイラー環境は,HT-03Aの時と同じ。(そのままでOK)か,[[CodeSourcery:http://www.codesourcery.com/]]のサイトから[[Sourcery G++ Lite Edition GNU Toolchain for ARM ProcessorsのEABI用Ver.2009q3-68:http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3053]]を((Samsungでは,これでコンパイルしたと,なにかのドキュメントに書いてあった。)),ダウンロードして使う。 
 + 
 +***コンパイルしてみる [#jc67712d] 
 + $ export LOCALVERSION="-SC02BOMKF2-CL271364" (KF2) 
 + $ export LOCALVERSION="-SC02BOMKL4-CL793915" (KL4) 
 + $ export KBUILD_BUILD_VERSION="xxxx" (日付など・・・)
として環境変数をセット。~ として環境変数をセット。~
-コンパイラー環境は,HT-03Aの時と同じ。(そのままでOK)+設定ファイルの.configを, 
 + $ make mrproper 
 + $ make aries_jpn_defconfig 
 +で,SC-02B用の.configを作成する。
-initramfsを変更した物を使えるようにする。 +使うコンパイラ設定を,Makefileを変更して記述する。(上記の2009q3-68の場合の例) 
- $ cd Kernel+ CROSS_COMPILE  ?= /opt/toolchains/arm-2009q3/bin/arm-none-linux-gnueabi- 
 +  ↓ 
 + CROSS_COMPILE  ?= /opt/toolchains/arm-2009q3/bin/arm-none-eabi- 
 + 
 +initramfsを変更した物を使えるようにする。~
arch/arm/configs/aries_jpn_defconfigの87行目当たりにある, arch/arm/configs/aries_jpn_defconfigの87行目当たりにある,
 CONFIG_INITRAMFS_SOURCE=""  CONFIG_INITRAMFS_SOURCE=""
 ↓  ↓
 CONFIG_INITRAMFS_SOURCE="../initramfs"  CONFIG_INITRAMFS_SOURCE="../initramfs"
-に変更する。(編集したinitramfsがある場所)+に変更する。(編集したinitramfsがある場所を設定する。)
-スワップを使用出来るように設定する。 +必要なら通常のLinux設定のように,
- CONFIG_SWAP=y +
-設定ファイルの.configを, +
- $ make mrproper +
- $ make aries_jpn_defconfig +
-で,作成する。必要なら+
 $ make menuconfig  $ make menuconfig
でkernel設定を変更する。 でkernel設定を変更する。
これで,準備OK。 これで,準備OK。
 $ make  $ make
-でコンパイル出来た。+でコンパイルする。
-うまくコンパイルできると,Kernel/arch/arm/bootにzImageが作成される。+うまくコンパイルできると,arch/arm/bootにzImageが作成される。 
 + 
 +module化したものがある場合は,initramfs/lib/modulesに*.koファイルを追加して,再度makeしてinitramfsを統合化してzImageを作ようにする。 
 + $ cp `find ./ -name "*.ko"` ../initramfs/lib/modules/ 
 + $ make
**odin3でflash出来るようにする。 [#n58f8476] **odin3でflash出来るようにする。 [#n58f8476]
-odin3で書き込めるようにtarファイルにする。+odin3で書き込めるように,zImageをtarファイルにする。
 $ cd arch/arm/boot  $ cd arch/arm/boot
- $ tar cvf sc02bomkf2_yujixx.tar zImage + $ tar cvf sc02bomkf2_yujixxxx.tar zImage 
-とかしてodin3で書き込めるファイル&ref(sc02bomkf2_yuji0729.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,root使用,CWMリカバリーとあまりいじってないのもあって,安定している。電池持ちもスリープ時の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に戻して使っている ;)


トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 1067, today: 1, yesterday: 1