Android 4.0.1シミュレータカーネルの最新ダウンロードアドレスとコンパイル手順
2874 ワード
Android 4.0.1はすでにリリースされていますが、そのシミュレータカーネルはプリコンパイルされたbianryです.カーネルソースコードが指定されていません.自分でカーネルをコンパイルしたいので、カーネルコードを変更することができますが、ネット上の資料を探してみると、もう時代遅れだと気づきました.この文書では、最新のアドレスと方法を提供します.
Android kernelの一部の閉鎖戦略のため、kernel orgはandroid kernelを主線から蹴り出した.従来の同期アドレスはリダイレクトされており,android kernel自体の構造の調整に加えて,多くの従来の同期方法が使用できなくなっている.次はandroid 4.0.1シミュレータのカーネル(qemu kernel,goldfish branch)をコンパイルするのに適した最新の方法です.
従来の方法ではアドレス同期Android goldfishを使うことが多い
$ git clone git://Android.git.kernel.org/kernel/common.git
$ cd common
$ git branch -a
$git checkout remotes/origin/archive/Android-gldfish-2.6.29ブラウザで入力できます
Android.git.kernel.org/kernel/common.git
実際にはリダイレクトされています
Android.googlesource.com/kernel/common.git
しかしこのrepoにはgoldfishの分岐は含まれていない.同期後git branch-aを使用すると、最新の3.0と2.6.39のブランチしか見えません.
$git branch -a * (no branch)
master remotes/origin/HEAD -> origin/master
remotes/origin/Android-2.6.39 remotes/origin/Android-3.0
remotes/origin/master
実はgoldfishブランチは独立して単独のrepoになっています.http://Android.googlesource.com/kernel/goldfish.git次の手順は、最新の正しい同期手順です.
$git clone http://Android.googlesource.com/kernel/goldfish.git $cd goldfish
$git branch -a * (no branch)
master remotes/origin/HEAD -> origin/master
remotes/origin/Android-goldfish-2.6.29 remotes/origin/master
$git checkout $make ARCH-arm CROSS_COMPILE=arm-eabi-
...
OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready
新しいkernel imgでシミュレータを起動できます.
$emulator -kernel ...../kernel/goldfish/arch/arm/boot/zImage &
シミュレータを起動して、Settings=>Aboutに行って見て、kernelは確かに私たちが自分でコンパイルしたバージョンをプログラミングします.手作りできます.また、Googleはkernelをコンパイルするための簡単なスクリプトを提供する意図があるようで、external/qemu/docs/Android-KERNELを見ることができます.TXTはそのdistrib/rebuild-kernelに言及した.sh.しかし、検索後、このファイルは存在しません.最も近い2つのスクリプトはprebuild/Android-arm/kernel/rebuildです.sh.しかし、このスクリプトは明らかに半製品です.--helpの情報とスクリプトの実現はまだ出ています.正しい使い方は次のとおりです.
$cd ics/platform ( your $TOP) $prebuild/Android-arm/kernel/rebuild.sh kernel/goldfish/(先ほど同期したgoldfish kernelディレクトリ) コンパイルは順調に完了し、生成された新しいkernelはprebuild/Android-arm/kernelに自動的にコピーされます.しかしkernel img起動を指定しないと、元のimgが使用されていることがわかります.それともemulatorを再起動する必要があるのか-kernelパラメータで明示的に指定してコンパイルしたimg:
./emulator -avd ics -kernel <$TOP>/prebuilt/Android-arm/kernel/kernel-qemu-armv7
そうなると、googleが提供しているこのスクリプトはまったく鶏の肋骨です...
Android kernelの一部の閉鎖戦略のため、kernel orgはandroid kernelを主線から蹴り出した.従来の同期アドレスはリダイレクトされており,android kernel自体の構造の調整に加えて,多くの従来の同期方法が使用できなくなっている.次はandroid 4.0.1シミュレータのカーネル(qemu kernel,goldfish branch)をコンパイルするのに適した最新の方法です.
従来の方法ではアドレス同期Android goldfishを使うことが多い
$ git clone git://Android.git.kernel.org/kernel/common.git
$ cd common
$ git branch -a
$git checkout remotes/origin/archive/Android-gldfish-2.6.29ブラウザで入力できます
Android.git.kernel.org/kernel/common.git
実際にはリダイレクトされています
Android.googlesource.com/kernel/common.git
しかしこのrepoにはgoldfishの分岐は含まれていない.同期後git branch-aを使用すると、最新の3.0と2.6.39のブランチしか見えません.
$git branch -a
master
remotes/origin/Android-2.6.39
remotes/origin/master
実はgoldfishブランチは独立して単独のrepoになっています.http://Android.googlesource.com/kernel/goldfish.git次の手順は、最新の正しい同期手順です.
$git clone http://Android.googlesource.com/kernel/goldfish.git
$git branch -a
master
remotes/origin/Android-goldfish-2.6.29
$git checkout
remotes/origin/Android-goldfish-2.6.29
コンパイル手順はほとんど変わりませんが、新しいconfigを使用する必要があります.
$ make ARCH=arm goldfish_armv7_defconfig
OBJCOPY arch/arm/boot/zImage
新しいkernel imgでシミュレータを起動できます.
$emulator -kernel ...../kernel/goldfish/arch/arm/boot/zImage &
シミュレータを起動して、Settings=>Aboutに行って見て、kernelは確かに私たちが自分でコンパイルしたバージョンをプログラミングします.手作りできます.また、Googleはkernelをコンパイルするための簡単なスクリプトを提供する意図があるようで、external/qemu/docs/Android-KERNELを見ることができます.TXTはそのdistrib/rebuild-kernelに言及した.sh.しかし、検索後、このファイルは存在しません.最も近い2つのスクリプトはprebuild/Android-arm/kernel/rebuildです.sh.しかし、このスクリプトは明らかに半製品です.--helpの情報とスクリプトの実現はまだ出ています.正しい使い方は次のとおりです.
$cd ics/platform ( your $TOP)
./emulator -avd ics -kernel <$TOP>/prebuilt/Android-arm/kernel/kernel-qemu-armv7
そうなると、googleが提供しているこのスクリプトはまったく鶏の肋骨です...