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