keropoの備忘録

しらべたことをメモるブログ

linuxカーネルのコンパイル

構築したARMクロスコンパイラでカーネルコンパイルしてみる。
もともとオリジナルの組込みLinuxOSを作成したいと思っているので、ここからが本番。

実行環境のインストール

qemuでクロスコンパイルしたカーネルを実行するため、インストールする。
とりあえず、下記コマンドで、qemuソースコードを落としてくる。

 $wget http://wiki.qemu-project.org/download/qemu-1.4.0.tar.bz2

解凍して、コンパイルを実行。
インストールする時、rootじゃないといけないので、rootで実行。

 #./configure
 #make
 #make install

インストールが完了したら、とりあえず、$qemuと打って、タブを押すと
qemu-system-ほげほげ」というのが候補として表示されたらインストールOK。

カーネルコンパイル

いよいよカーネルコンパイル
今回はカーネル3.2.35をARMアーキテクチャqemuでよくエミュレート方法が
いろいろなサイトで紹介されているversatileボード用にコンパイルする。

環境変数設定

ロスコンパイラのプレフィックスを環境変数に設定

  $export CCPREFIX=${CROSS}/bin/arm-unknown-linux-gnueabi-
versatileデフォルトの設定を反映
 $make mrproper
 $make ARCH=arm CROSS_COMPILE=$CCPREFIX versatile_defconfig
次にmenuconfigで下記のように設定
      -BUS Support
       -->[*]PCI Support
      -kernel feature
       -->[*]Use the ARM EABI to compile the kernel
        -->[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
      -device driver
       -->graphic support
        -->[*]Bootup logo
       -->SCSI device support
        --><*>SCSI device support
        --><*> SCSI disk support
        --><*> SCSI generic support
        -->[*] SCSI low-level drivers (NEW)
          --><*>   SYM53C8XX Version 2 SCSI support
      -File System
       -->[*]   Ext2 extended attributes
       -->[*]   Ext2 execute in place support
       --><*> Ext3 journalling file system support
       -->[*]   Default to 'data=ordered' in ext3
       -->[*]   Ext3 extended attributes
コンパイル実行
 $make ARCH=arm CROSS_COMPILE=$CCPREFIX

コンパイルが成功すれば、arch/arm/bootフォルダにzImageが出力される。

とりあえず、qemuで実行してみる。

作成されたzImageを適当なフォルダにコピーして、以下を実行

  $qemu-system-arm -M versatilepb -m 256 -kernl zImage

こんな感じで実行された。
まだルートファイルシステムがないので、カーネルパニックを起こすけど、とりあえずカーネルが動いた。
f:id:keropo:20130415234746p:plain