2011年6月25日土曜日

[TEST] NTT docomo SC-02C Galaxy S2 kernel build 。initramfsほしいです。

わすれっぽい自分のために。
世の中は進んでる人もいますが、自分は一歩一歩、たのしんで行きます。で、早速kernelビルドのための情報をあつめていましたが、なんともdocomo版のkernelを確実にビルドする方法はどこにも紹介されていないようで、面倒なのでsamsung opensourceサイトからGT-I9100のソースを落としてきて眺めてみることに。
https://opensource.samsung.com/
GT-I9100を検索してみるとその下にSGH-N033の文字が。これはdocomo版の型番だったような気がしますね。googleで検索してみてもそんな感じ。早速ダウンロード。
unzip GT-I9100_Opensource.zip

.GT-I9100_Kernel_Gingerbread.tar.gz
.GT-I9100_Platform_Gingerbread.tar.gz

tar xvfz GT-I9100_Kernel_Gingerbread.tar.gz
..
.
README_kernel.txtを眺めて、defconfig関連に目を通していると、どうやらdocomo版のソースもこれでOKな感じです。defconfigをざっと眺めただけで、推測にすぎませんが、ファイル名とconfigの内容からして下記のような対応かと考えました。
GT-I9100 : c1_rev02_defconfig         (UK? version)
SGH-N033 : c1_rev02_jpn_ntt_defconfig (Japan version)
SHW-M250S: c1_rev02_kor_skt_defconfig (Korea version)
KOR版にはCONFIG_TDMBが有効になっており、JPN版にはCONFIG_ISDBT_FC8100が有効なことから判断してみました。まぁ憶測ですw。あとc1_rev01_*関連は目をとおしてないですがいらないでしょうね。

というわけで、なにはともあれbuildしてみることに。README_kernel.txtには
http://www.codesourcery.com/
からarm eabiなコンパイラを落としてきて使えとあります。これは以前のエントリでも書いたChina Telecom版のGalaxy Sのkernelをビルドしたときに落としてきたのと同じコンパイラですね。
wget http://www.codesourcery.com/sgpp/lite/arm/portal/package5353/public/arm-none-eabi/arm-2009q3-68-arm-none-eabi-i686-pc-linux-gnu.tar.bz2
これを適当なディレクトリに展開します。次にMakefileをいじって、コンパイラへのパスを通します。
cd kernel
chmod 666 Makefile
vi Makefile
--
CROSS_COMPILE   ?= /somewhere/android_dev/SCH-i909_OpenSource/arm-2009q3/bin/arm-none-eabi-
--
のような感じで編集しておきます。できたらc1_rev02_jpn_ntt_defconfigでビルドします。
make ARCH=arm c1_rev02_jpn_ntt_defconfig
make ARCH=arm menuconfig
menuconfigしたのは、TUN/TAPなどをenableにしようと考えたわけですが、なんと!今回のc1_rev02_jpn_ntt_defconfigはTUN/TAPがはじめからenableでしかもmoduleじゃありませんでした!。これは、、このconfigで当たりwならけっこうすごいことなんじゃないでしょうかね。どっちみにdeviceをオープンするのにrootいるのかなと思いためしに、なにもいじくってない状態のSC-02Cにadb shellしてlsしてみると。。
adb shell
ls -l /dev/tun
crw-rw---- vpn      vpn       10, 200 2011-06-24 00:11 tun
おお!あんじゃん。しかもgroup writableなんだけど!。と前回かいたわけです。ちなみにGalaxy S2用らしいdefconfigたちをCONFIG_TUNでgrepしてみると。
$ grep CONFIG_TUN c1_rev02*
c1_rev02_c1q1_defconfig:# CONFIG_TUN is not set
c1_rev02_defconfig:CONFIG_TUN=y
c1_rev02_jpn_ntt_defconfig:CONFIG_TUN=y
c1_rev02_kor_skt_defconfig:CONFIG_TUN=y
c1_rev02_p6_defconfig:# CONFIG_TUN is not set
c1_rev02_talbot_defconfig:# CONFIG_TUN is not set
こんな感じでした。

#中国版はソースが別みたいなので調べてません。

ちょっと脱線しましたが、最後にkernelをmakeします。
warning : このzImage絶対焼かないように!。initramfs準備してないので起動しません。コンパイルのテストです。

make -j2 ARCH=arm
zImageを作る手前でエラーがでました、lzopが無かったようです、これをapt-getで入れて再度コンパイル
sudo apt-get install lzop
make -j2 ARCH=arm

$ make -j2 ARCH=arm
  CHK     include/linux/version.h
  CHK     include/generated/utsrelease.h
make[1]: `include/generated/mach-types.h' is up to date.
  CALL    scripts/checksyscalls.sh
  CHK     include/generated/compile.h
  Kernel: arch/arm/boot/Image is ready
  Building modules, stage 2.
  LZO     arch/arm/boot/compressed/piggy.lzo
  MODPOST 6 modules
  SHIPPED arch/arm/boot/compressed/lib1funcs.S
  AS      arch/arm/boot/compressed/lib1funcs.o
  AS      arch/arm/boot/compressed/piggy.lzo.o
  LD      arch/arm/boot/compressed/vmlinux
  OBJCOPY arch/arm/boot/zImage
  Kernel: arch/arm/boot/zImage is ready
zImageできましたね、これでもREADME_kernel.txtのとおりにbuildしたわけですが、initramfsが無いので、このzImageは起動しません。UKあたりのinitramfsを参考に構築してみますかねぇ。

initramfsが準備できたら
.configをいじって、
CONFIG_INITRAMFS_SOURCE="path"
のように指定してビルドでいけると思われます。

今日のところはこの辺で。

0 コメント:

コメントを投稿