世の中は進んでる人もいますが、自分は一歩一歩、たのしんで行きます。で、早速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 menuconfigmenuconfigしたのは、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=armzImageを作る手前でエラーがでました、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 readyzImageできましたね、これでもREADME_kernel.txtのとおりにbuildしたわけですが、initramfsが無いので、このzImageは起動しません。UKあたりのinitramfsを参考に構築してみますかねぇ。
initramfsが準備できたら
.configをいじって、
CONFIG_INITRAMFS_SOURCE="path"
のように指定してビルドでいけると思われます。
今日のところはこの辺で。
0 コメント:
コメントを投稿