|
1: 2010-08-30 (月) 05:55:18 yuji |
| + | *kernelのコンパイル [#n214438c] |
| + | Androidのkernelをソースからコンパイルしてみる。 |
| | | |
| + | **Android repoの設定~ [#obf27ee9] |
| + | -自分のホームにbinディレクトリが必要~ |
| + | mkdir -p ~/bin |
| + | -androidのgitリポジトリを設定~ |
| + | curl http://android.git.kernel.org/repo > ~/bin/repo |
| + | chmod a+x ~/bin/repo |
| + | ログインし直すと,$PATHにbinが設定されているのを確認する。~ |
| + | |
| + | **AndroidのソースコードをDownloadする [#ga97b195] |
| + | -ワークディレクトリを作る~ mkdir -p ~/android/system |
| + | cd ~/android/system |
| + | -ソースをダウンロードする(CyanogenModのソースにしてみる)~ |
| + | repo init -u git://github.com/CyanogenMod/android.git -b froyo |
| + | repo sync |
| + | -コンパイラ環境を設定する~ |
| + | export CCOMPILER=${HOME}/android/system/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi- |
| + | |
| + | **実際にkernelをコンパイル [#d87a30ed] |
| + | -ワークディレクトリを作る~ |
| + | mkdir -p ~/android/kernel |
| + | cd ~/android/kernel |
| + | -カーネルのソースコードをgitでDownloadする~ |
| + | git clone git://github.com/CyanogenMod/cm-kernel.git |
| + | -その後,kernel .configをHT-03Aから持ってくるか,menuconfigなんかで作成する。~ |
| + | --持ってくる場合~ |
| + | cd cm-kernel |
| + | adb pull /proc/config.gz /home/user_name/androkern/cm-kernel/config.gz |
| + | gunzip config.gz && mv config .config |
| + | --configし直す場合~ |
| + | make ARCH=arm CROSS_COMPILE=$CCOMPILER oldconfig |
| + | もしくは, |
| + | make ARCH=arm CROSS_COMPILE=$CCOMPILER menuconfig |
| + | とかして,.configを作成する。~ |
| + | -kernelをコンパイルする~ |
| + | make ARCH=arm CROSS_COMPILE=$CCOMPILER |
| + | 結構時間がかかる。~ |
| + | kernelは,~/android/kernel/cm-kernel/arch/arm/boot/zImage に保存される。~ |
| + | |
| + | *boot.imgの作成 [#m7e8073d] |
| + | **filesystem [#wb787241] |
| + | cat /proc/mtd |
| + | dev: size erasesize name |
| + | mtd0: 00040000 00020000 "misc" |
| + | mtd1: 00500000 00020000 "recovery" |
| + | mtd2: 00280000 00020000 "boot" |
| + | mtd3: 05a00000 00020000 "system" |
| + | mtd4: 05000000 00020000 "cache" |
| + | mtd5: 127c0000 00020000 "userdata" |
| + | mtd3=/system,mtd4=cache,mtd5=/dataにそれぞれmountされる。~ |
| + | mtd2はboot時使われるファイルで,mtd1はリカバリーモードで使われる。 |
| + | **bootイメージ [#i1df0efb] |
| + | bootイメージは,linuxのブート時に使用されていて, |
| + | +2kのAndroid用ヘッダー |
| + | +gzip圧縮されたkernel |
| + | +システムを初期化するためなどに使用される,基本的なコアファイルを入れてあるramdisk |
| + | +2ndステージローダー(オプション) |
| + | がbootイメージに入っている。~ |
| + | kernelをコンパイルした後,kernelファイルとこれらのファイルをマージしてboot.imgを作成する。~ |
| + | これをmtd2にflashすると,bootloaderがkernelを起動してくれる。 |