2010/12/22
bc10向けLinux kernel-2.6.32について、情報をまとめてあります。
このKernelはrowboatプロジェクトのKernelをベースにして、bc10固有のデバイスドライバなどが追加されたものです。
bc10のブートプロセスやKernelイメージの配置方法についての情報はbc10/bootingを参照してください。
2010/12/22
bc10向けtoolchainを準備します。
以下のtoolchainでビルドを確認しています。
OpenEmbeddedのtoolchainを利用するには、あらかじめOpenEmbedded開発環境をインストールしておく必要があります。
OpenEmbedded開発環境のインストールについては、bc10/OpenEmbedded Linuxを参照してください。
toolchainを使用するために、環境変数を以下のように設定します。
export PATH=${WORK_DIR}/OE/angstrom-dev/cross/armv7a/bin:${PATH} export ARCH=arm export CROSS_COMPILE=arm-angstrom-linux-gnueabi-
gitリポジトリからソースコードを入手します。
git clone git://gitorious.org/~bc-dev/rowboat/bc10-rowboat-kernel.git bc10-rowboat-kernel
bc10向けのブランチに切り替えます。
cd bc10-rowboat-kernel/ git checkout -t -b bc10-2.6.32 origin/bc10-2.6.32
OpenEmbedded toolchainを使用してクロスビルドします。
make omap3_bc10_defconfig make uImage
ビルドに成功するとuImage(kernelイメージファイル)が、以下の場所に生成されます。
uImageの配置方法についてはbc10/bootingを参照してください。
bc10-rowboat-kernelはデバイスドライバなどのほとんどを組み込みに設定しており、modulesの配置をおこなわなくても基本的には問題ありません。
特に、bc10でAndroidを起動する場合はmodulesの使用を前提としていないため、以下の作業は必要ありません。
OpenEmbeddedを起動する場合は、modulesがインストールされていない場合には警告が出るため、念のためインストールしておいてもよいでしょう。
Kernel modulesは以下のようにビルドします。
make modules
続いて、modulesをインストールします。
ここでは後で自由に配置できるように、カレントディレクトリにmodworkというディレクトリを新規作成し、そこにインストールします。
インストール先が決まっている場合は、INSTALL_MOD_PATHの値をインストールパスに置き換えてください。
make DEPMOD=echo INSTALL_MOD_PATH=modwork modules_install arm-angstrom-linux-gnueabi-depmod-2.6 -A -b ./insmods/ -F ./System.map `make kernelrelease`
これで./modwork以下にmodulesがインストールされました。
以下のように圧縮しておくと、Targetのuserlandで展開するなど、作業時に扱いやすくなります
tar czvf modules.tgz -C ./insmods/ lib
機能の追加や修正などでソースコードが更新された場合は、更新分のみを取得するだけでかまいません。
cd bc10-rowboat-kernel/ git checkout bc10-2.6.32 git pull
ソースコードをアップデートした後は、リビルドしてuImageなどを置き換えてください。
2010/12/22
bc10-rowboat-kernelのソースコードはGitoriousで管理しています。
bc10-rowboat-kernelリポジトリには、多数のブランチがあります。
その中でもbc10向けのブランチとして、以下の3つがあります。
bc10で動作するuImageをビルドするには、bc10-2.6.32ブランチを使用してください。
bc10-2.6.32-developブランチは機能追加時の試験などのために利用されています。
常に最新の実装がなされていますが、うまく動作しない場合もあるので、通常はbc10-2.6.32ブランチを使用してください。
bc10-2.6.32-buildブランチはbc10のMACH_TYPE番号が公式に追加されるまで、一時的なビルド用ブランチとして存在していました。
現在は公式にbc10のMACH_TYPEがサポートされたので、bc10-2.6.32-buildブランチの更新は停止しています。
将来、削除される可能性がありますので、bc10-2.6.32-buildブランチは使用しないでください。
この問題の詳細については、カーネルソースに含まれる Documentation/arm/README を参照してください。
bc10-rowboat-kernelのソースコードは、rowboat kernelリポジトリをcloneし、bc10向けに改造されたものです。
2010/12/22
Kernelの起動時に設定可能なオプションについて説明します。