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