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を使用することが多い.
$ 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が提供しているこのスクリプトはまったく鶏の肋骨です...