カーネルをビルドする方法
113 : SIM無しさん : 2011/11/12(土) 17:43:21.32 ID:CSjruCTU [1/5回発言]
カーネルのコンパイルはぐぐれば誰にでもできる簡単なお仕事です。
とはいえ、この機種で初めてだって人にはちょっと敷居が高いことも事実。
安くgetした人の入門機種になるといいと思うので、簡単にまとめてみます。
■Linux環境の用意
フリーの仮想マシン(Oracle VM VirtualBoxなど)
Linuxディストリビューションはお好みで。
Ubuntu 10.04 LTSあたりがいいんじゃない?
■コンパイル環境の用意
カーネルのビルドにはクロス開発環境があれば十分だと思うけど、
面倒なのでL-04C用Cyanogenソースコード一式持ってきちゃう。
1.repoのインストール
curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo
chmod a+x ~/bin/repo
※curlコマンド、git-coreはLinuxのパッケージからインストールしておく。
※~/binにパスを通しておく。
2.ダウンロード
mkdir -p ~/android/src
cd ~/android/src
repo init -u git://github.com/y10g/android.git -b gingerbread
repo sync -j32
めっちゃ時間がかかるので注意。
■カーネルソースの取得
適当なディレクトリを作って移動
git clone git://github.com/y10g/elini_kernel.git
■カーネルconfigファイルの編集
arch/arm/configs/elini-perf_defconfig を好きなように編集する。
■make
make elini-perf_defconfig
make CROSS_COMPILE=~/android/src/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-'
以上でカーネルのビルド完了(arch/arm/boot/zImage)
114 : SIM無しさん : 2011/11/12(土) 17:44:05.63 ID:CSjruCTU [2/5回発言]
つづき
■zImageとramdiskからboot.imgを作る。
1.このへんを参考に、既存のboot.imgからramdiskを取り出す。
ttp://whitesc3.blog7.fc2.com/blog-entry-250.html
2.zImageとramdiskからboot.imgを作る
※カレントディレクトリにzImageとramdisk(ディレクトリ)があるものとする
mkbootfs ./ramdisk | gzip > ramdisk.gz
mkbootimg --cmdline 'mem=471M console=ttyMSM2,115200n8 androidboot.hardware=elini' --kernel zImage --ramdisk ramdisk.gz --base 0x12800000 -o boot.img
■boot.imgを実機に転送
※flash_imageは予め用意しておいてカレントディレクトリに置いておく。
adb shell su -c "mount -o rw,remount /system /system"
adb shell su -c "mkdir /system/recovery"
adb push flash_image /system/recovery/
adb push boot.img /system/recovery/
adb shell chmod 755 /system/recovery/flash_image
adb shell su -c "/system/recovery/flash_image boot /system/recovery/boot.img"
adb shell sync
■参考
LGの配布物 ttp://www.lg.com/global/support/opensource/opensource.jsp
Mobile Phone - L04Cを選択して、REAME.txtに目を通しておこう。
兄弟機種?のP500、P350と比較してみると、理解が早いかもしれない。
P500のGingerbreadカーネル裏山鹿。
xdadeveloppers
P500 ttp://forum.xda-developers.com/showthread.php?t=946354#
P350 ttp://forum.xda-developers.com/showthread.php?t=1293188
いじょ
116 : SIM無しさん : 2011/11/12(土) 19:01:41.53 ID:bdDLTWnM [1/4回発言]
>>113
もしかして、>>33?
なんにしろ乙。
ちなみに、>>113 みたいに仮想環境でやるなら、kernel+cyanogenmodの
リポジトリで10GB前後必要なんで、余裕見てディスクイメージ準備しましょう。
117 : SIM無しさん : 2011/11/12(土) 19:36:15.54 ID:CSjruCTU [3/5回発言]
>>116
>>33とは別人
でも>>35の態度についカッとなって書いたw
初心者でも通りすがりパッチとかを作れる可能性はあると思うので
仮想環境は可変容量のディスクで、最大値を大きめ(100GBなど)確保しておけば
スモールスタート可能だよ
118 : SIM無しさん : 2011/11/12(土) 19:52:42.66 ID:bdDLTWnM [2/4回発言]
>>117
> >>33とは別人
おお、なんか地味にkernelいじる人増えてきてるってことか。
> スモールスタート可能だよ
可変ディスクイメージは、ビルドする時けっこう遅くなるので
あまりオススメしないかな。
通りすがりパッチといえば、通りすがりの人の
githubのリポジトリどこ行っちゃったの?
127 : SIM無しさん : 2011/11/13(日) 00:32:40.49 ID:uy8gFtLI [1/1回発言]
>>113
ちょっとしたことだけど修正
>■カーネルソースの取得
>適当なディレクトリを作って移動
>git clone git://github.com/y10g/elini_kernel.git
これはandroid.gitにkernelも含まれてるから余分かも
~/android/src/kernel
に入ってる
あと、大したことじゃないんだけど
それで取得したkernelってCM7向けに改変されてるから
froyo使いたいなら素直に
>LGの配布物 ttp://www.lg.com/global/support/opensource/opensource.jsp
こっち使った方が良いかも
まとめWiki作る・・・?
310 : SIM無しさん : 2011/11/29(火) 11:06:54.02 ID:/2JuodwG [1/2回発言]
y1logさんのCM71をGithubから落としてきてビルドしようとしたけど
エラーが出てビルド通らない・・・
> ackages/apps/CMParts/src/com/cyanogenmod/cmparts/activities/DisplayActivity.java:85: シンボルを見つけられません。
> シンボル: 変数 config_enableScreenAnimation
> 場所 : com.android.internal.R.bool の クラス
> if (getResources().getBoolean(com.android.internal.R.bool.config_enableScreenAnimation)) {
こんな感じのエラーがいっぱい出る。
何が足りないんだろう…
311 : SIM無しさん : 2011/11/29(火) 11:14:37.67 ID:/2JuodwG [2/2回発言]
ちなみにこんな感じでビルドしました。
★CM71を落とす
mkdir cm71l04c
cd cm71l04c
repo init -u git://github.com/y10g/android.git -b gingerbread
repo sync
★環境設定&ビルド
cd device/lge/elini
./extract-files.sh (*)
cd ../../..
. build/envsetup.sh && brunch elini
(*)"adb pull"をcpに置き換えて、バックアップからファイルコピーしました
312 : SIM無しさん : 2011/11/30(水) 15:18:18.72 ID:/yhKzvFd [1/1回発言]
>>311
環境は?
JavaがOpenJavaだとコンパイルエラー出るよ。
Sun純正のJDKでコンパイルして味噌。
313 : 310 : 2011/11/30(水) 17:41:42.30 ID:0jDhKpid [1/2回発言]
ビルドが通らない原因がわかりました。
android_frameworks_base が古かったようです。
古かったというと変ですが、エラーが出ていた
CyanogenMod/android_packages_apps_CMParts
は、元のリポジトリを参照してるので更新されているけど
frameworks/baseはforkされた状態で
元のリポジトリからマージされていなかったのが原因でした。
cd frameworks/base
git pull https://github.com/CyanogenMod/android_frameworks_base.git
とマージすることで、とりあえずビルドは通りました。
さて、動くかどうか…?
314 : 310 : 2011/11/30(水) 17:43:04.33 ID:0jDhKpid [2/2回発言]
>312
SunのJavaを使ってます。
ちなみにOSはUbuntu 11.10。
unity使いづらいぜ。
325 : 310 : 2011/12/03(土) 17:41:01.63 ID:gh5pU4ww [2/5回発言]
誰が作ったROMか識別するのにどこ書き換えればいいんだろ?
Modバージョン?
ビルド番号?
あと、yuさんのfixみたいに差分zip作る方法がわからん…
326 : SIM無しさん : 2011/12/03(土) 19:21:34.42 ID:364Pvt6j [1/2回発言]
作成者の識別はModバージョンがわかりやすいと思う。
update.zipの作り方
1. 適当な update.zipを解凍
※yuさんの差分zipでいいと思う
2. 解凍した system ディレクトリ階層に必要なファイルを配置
3. META-INF/com/google/android/updater-scriptを編集
※中身はそんなに難しくないから、何とかなる
4. zipで固めた後、zipに署名する
けっこう簡単でしょ?
最終更新:2012年03月16日 16:13