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に書き込める。 |