1: 2011-07-19 (火) 13:45:36 yuji ソース 2: 2011-07-19 (火) 13:46:53 yuji ソース
Attached file: unpack-initramfs
Line 1: Line 1:
*kernelのコンパイル [#cf986eb9] *kernelのコンパイル [#cf986eb9]
-Samsungで公開されているソースコードから,Kernelをコンパイルしてみる。+Samsungで,OMKF2のソースコードが公開されたみたいだ。このソースから,Kernelをコンパイルしてみる。
**ソースコードのダウンロード [#g62549cd] **ソースコードのダウンロード [#g62549cd]
-https://opensource.samsung.com/にソースコードが公開されている。SGH-N013がSC-02Bを表しているようだ。+https://opensource.samsung.com/にソースコードが公開されている。(SC-02BOMKF2のKernel)
-ファイル名は,GT-I9000_OpenSource_GB_Update.tar.gz +ファイル名は,SC-02B_OpenSource.zip~
適当なディレクトリを作成して, 適当なディレクトリを作成して,
- $ tar xvfz GT-I9000_OpenSource_GB_Update.tar.gz + $ unzip SC-02B_OpenSource.zip 
-で解凍する。さらに, + $ tar xvfz SC-02B_Kernel.tar.gz 
- $tar xvfz GT-I9000_Kernel.tar.gz +で解凍すると,kernelのソースコードが展開される。
-として,kernelのソースコードを解凍する。+
**initramfsを準備する [#n14eb993] **initramfsを準備する [#n14eb993]
通常のLinuxだと,kernel+initramfs=boot.imgなんだけど,Samsungの場合はなぜかkernel+initramfs=zImageみたい。~ 通常のLinuxだと,kernel+initramfs=boot.imgなんだけど,Samsungの場合はなぜかkernel+initramfs=zImageみたい。~
-kernelをコンパイル後zImageを作成する時にinitramfsが必要になる。+たぶん,kernelをコンパイル後zImageを作成する時にinitramfsが必要になるんだと思う。
-とりあえず,SC-02BのFlash ROMからバックアップしておいたzImageから,unpack-initramfsコマンドを使ってinitramfsを抜き出す。+とりあえず,SC-02BからバックアップしておいたzImageから,&ref(unpack-initramfs);コマンドを使ってinitramfsを抜き出したファイルを使用することにする。 
 + $ ./unpack-initramfs zImage 
 +これで,ファイルがinitramfsの中のファイルが復元されるんで,ディレクトリをKernelディレクトリがある所にinitramfsというディレクトリを作成して,そこに移動しておく。 
 + 
 +***init.rcの変更 [#m62a7443] 
 +-ファイルシステムにrfs以外にext4でもマウント出来るようにする~ 
 +SC-02Bのオリジナルのままだと,/system,/data,/dbdata等は,rfsでマウントされる。プチフリ対策等で/data,/dbdataなんかをext4に変更したりすると,このままだとマウントできないと思う。~ 
 +init.rcを以下のように変更する。(/data部分) 
 +     mkdir /data 
 + # SEC_DMCRYPT crypt flag added data 
 +     # mount rfs /dev/block/mmcblk0p2 /data nosuid nodev 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 
 +     chown system system /data 
 +     chmod 0771 /data 
 +他の部分(/system,/data,/dbdata)も適当に変更する。~ 
 +fota.rcも同様に変更 
 +     mkdir /data 
 +     #mount rfs /dev/block/mmcblk0p2 /data nosuid nodev 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 
 +他の部分(/system,/data,/dbdata)も適当に変更する。~ 
 +-sd-ext用のマウントポイントを作っておく~ 
 +init.rcになくてもイイんだけど,ついでに入れておく。 
 + # create mountpoints 
 +     mkdir /mnt 0775 root system 
 +     mkdir /mnt/sdcard 0000 system system 
 +     mkdir /mnt/sd-ext 0000 system system 
 +         : 
 + # Backwards Compat - XXX: Going away in G* 
 +     symlink /mnt/sdcard /sdcard 
 +     symlink /mnt/sd-ext /sd-ext 
 +-Recoveryの変更~ 
 +どうもSC-02B(Galaxy S)だとRecoveryはinitramfsに入れておいて,実行するみたいだ。HT-03Aみたいにブートローダーがrecoveryパーテーションから別のlinuxを起動するのではなく,いつも使うlinuxをそのまま使い,recoveryコマンドを起動するだけになっている。~ 
 +HT-03Aだと,bootパーテーションとrecoveryパーテーション(独立したlinuxが入っている)が生きていれば,万一Systemを壊したりしてもrecoveryからリストア出来たが,SC-02Bの場合はSystemを壊した場合はRecoveryが起動出来ないと思う。~ 
 +このおかげで?,initramfsに入っているrecoveryを入れ替えることもinitramfsを変更すれば可能になる。~ 
 +この時点で,必要ならrecoveryをCWMとかに変更しておく。 
 + 
 +**Kernelソースの変更 [#b58bcd31] 
 +***OverClock [#z7e47aae] 
 +[[ここ:https://github.com/existz/galaxys-i9000-OC-kernel-source-patches]]に,Galaxy S(2.6.35.7)用のOC/UV対応パッチがあったんで,入れてみた。ただOCのMaxは1.2GHz :-( ~ 
 +SetCPU等を使って各クロック毎にコア電圧を設定できる。低くするとちょこっと電池持ちがよくなるかも。 
 + $ cd Kernel 
 + $ patch -p1 -i ../patch/oc/oc120v400-source.patch 
 + 
 +***BLN対応 [#c06c8fee] 
 +SC-02Bはインジケーター用のLEDが搭載されていない。メニューと戻るボタンのタッチパネルのバックライトをインジケーターLEDのように使用する為の変更を入れてみた。 
 +[[これ:https://raw.github.com/neldar/backlightnotification/master/kernel_patches/bln_i9000_linux-2.6.35_gingerbread.patch]]をダウンロードして,パッチを当てる。 
 + $ cd Kernel 
 + $ patch -p1 -i ../patch/bln/bln_i9000_linux-2.6.35_gingerbread.patch 
 + 
 +**コンパイル [#af091748] 
 + $ export ARCH="arm" 
 + $ export LOCALVERSION="-SC02BOMKF2-CL271364" 
 + $ export KBUILD_BUILD_VERSION="01" 
 +として環境変数をセット。~ 
 + 
 +コンパイラー環境は,HT-03Aの時と同じ。(そのままでOK) 
 + 
 + $ cd Kernel 
 +arch/arm/configs/aries_jpn_defconfigの83行目当たりにある, 
 + CONFIG_INITRAMFS_SOURCE="" 
 + ↓ 
 + CONFIG_INITRAMFS_SOURCE="../initramfs" 
 +に変更する。 
 + 
 + $ make mrproper 
 + $ make aries_jpn_defconfig 
 +で,.configを作成する。必要なら 
 + $ make menuconfig 
 +でkernel設定を変更する。 
 +これで, 
 + $ make 
 +でコンパイル出来た。~ 
 +うまくコンパイルできると,Kernel/arch/arm/bootにzImageが作成される。 
 + 
 +**odin3でflash出来るようにする。 [#n58f8476] 
 +odin3で書き込めるようにtarファイルにする。 
 + $ tar cvf sc02bomkf2_yuji.tar zImage 
 +としてodin3でPDAで出来たファイルを指定してflashすれば,SC-02Bに書き込める。


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