AndroidエミュレータでLinuxカーネルをデバッグ!!:作りながら理解するファイルシステムの仕組み(6)(2/3 ページ)
Linuxカーネルにtarfsを組み込むための手順を解説。今回はAndroidを題材に開発環境構築、デバッグ方法を紹介する
Androidエミュレータ用Linuxカーネルをコンパイルする
Linuxカーネルをコンパイルするために、カーネルソースが配置されているディレクトリに移動しましょう。
$cd common
次に、以下の要領でクロスコンパイル用の環境変数に設定します。
$ export ARCH=arm $ export CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-
これでコンパイルの準備が整ったわけですが、カーネルのコンフィグレーションを行う必要があります。これは、カーネル機能の追加/削除を行う作業であり、今回の場合は、Androidエミュレータ用にカーネルをカスタマイズする必要があります。また、それに加えて、Linuxカーネルをデバッグできるように設定する必要もあります。
まず、Androidエミュレータ用のコンフィグレーションを以下の要領で行います。
$ make goldfish_defconfig
次に、Linuxカーネルをデバッグできるようにするために、カーネルのコンフィグレーションの設定画面を以下の要領で開きます。
$ make menuconfig
図1は、カーネルコンフィグレーション設定の初期画面です。ここから、キーボードの[↓]キーを押下して、「Kernel hacking --->」の項目で[Enter]キーを押します。
すると図2の画面が現れます。[↓]キーを押下して、「Compile the kernel with debug info」を選択し、[スペース]キーを押すと、[ ]内に*が表示されます。後は、[→]キーを押下し、<Exit>を選択して、[Enter]キーを押し、最初の画面に戻ります。最初の画面も同様に<Exit>を選択し、saveして終了します。
これでカーネルのコンフィグレーションは終了です。なお、この設定は「.config」というファイルに保存されていますので、興味のある方はぜひ参照してみてください。
それでは、makeコマンドを実行し、コンパイルをはじめましょう。
$ make
コンパイルが終わると、以下のようなメッセージが出力され、Linuxカーネルモジュールが作られていることが分かります。
======================================================== : LD vmlinux SYSMAP System.map SYSMAP .tmp_System.map OBJCOPY arch/arm/boot/Image Kernel: arch/arm/boot/Image is ready AS arch/arm/boot/compressed/head.o GZIP arch/arm/boot/compressed/piggy.gz AS arch/arm/boot/compressed/piggy.o CC arch/arm/boot/compressed/misc.o LD arch/arm/boot/compressed/vmlinux OBJCOPY arch/arm/boot/zImage Kernel: arch/arm/boot/zImage is ready ========================================================
これらの中で、Linuxカーネルをデバッグするために必要となるファイルは、以下の2つです。
Androidエミュレータ実行環境を構築する
次に、Androidエミュレータ実行環境を以下の手順で実行していきます。
- Android SDKをダウンロードする
- Androidパッケージをインストールする
- Android仮想デバイスを作成する
Androidエミュレータは、Android SDKの中に入っているので、仮想マシン上でFirefoxを開き、Android SDKのサイトから、「android-sdk_r06-linux_86.tgz」をダウンロードしましょう。
関連リンク: | |
---|---|
⇒ | Android SDK | Android Developers |
ダウンロードが完了すると、デスクトップ上にファイルが保存されるので、そのファイルを「${HOME}/mydroid」配下に移動し、以下の要領で展開したら「tools」ディレクトリ配下に移動します。
$ tar xzvf android-sdk_r06-linux_86.tgz $ cd android-sdk-linux_86/tools/
それでは、早速、Androidパッケージをインストールするために、以下のandroidコマンドを実行します。
$ ./android
すると図3のように、仮想デバイスマネージャが起動します。
まず、Androidのパッケージからインストールします。図4の画面左の「Available Packages」を選択すると、画面右に「https://dl-ssl.google.com/android/repository/repository.xml」が現れるので、それを選択します。
するとAndroidプラットフォームが複数現れるので、「Android 2.1」だけを選択し、[Install Selected]をクリックし、インストールをはじめます。
インストールが終了したら、図4の画面左の「Virtual Devices」を選択します。すると、画面右上に[New...]というボタンが現れるので、それをクリックして仮想デバイス作成画面を起動します。仮想デバイスの設定情報は、図5のようにして[Create AVD]ボタンをクリックします。
これで、Androidエミュレータを実行するための準備はすべて整いました。なお、ここで作成した仮想デバイスやインストールしたパッケージは、「${HOME}/.android」配下に配置されていますので、興味のある方は参照してみてください。
Copyright © ITmedia, Inc. All Rights Reserved.