2013年4月24日水曜日

KURO-BOX/T4用カーネルをクロスコンパイル環境で作ってみる

KURO-BOX/T4でカーネルコンパイルさせようとすると遅いので、DebianいれたPCでコンパイルできるように環境を作ります。

PCはAMD FX6100(AMD880G+SB710)/8G/64GBSSDにSqueeze(64bit版)入れてます。

1. 開発ツールをいれる
まずEmdebianの鍵を登録します。
debian# apt-get install emdebian-archive-keyring
次にパッケージのダウンロード元にEmdebianを追加します。
debian# vi /etc/apt/sources.list
↓以下を最後に追加
#
# -- Emdebian cross toolchains
#
deb http://www.emdebian.org/debian squeeze main
編集が終わったら更新します。
debian# apt-get update
更新できたらパッケージを追加します。
debian# apt-get install gcc-4.3-powerpc-linux-gnu
debian# apt-get install build-essential fakeroot
debian# apt-get build-dep linux
debian# apt-get install ncurses-dev ← menuconfig用にいれました
カーネルソースも取ってきます。
debian# cd /usr/src ← ソースを展開するディレクトリに移動
debian# apt-get install debian-keyring
debian# apt-get source linux-2.6
debian# apt-get install linux-patch-debian-2.6.32
2. mkimageの作成
あらかじめmkimageを作っておきます。
u-bootのソースを拾ってきます。 こちらからとってきました。
debian# wget ftp://ftp.denx.de/pub/u-boot/u-boot-2013.04.tar.bz2
解凍してコンパイルします。
debian# tar xjvf u-boot-2013.04.tar.bz2
debian# cd u-boot-2013.04
debian# make linkstation_HGLAN_config
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make tools
適当なディレクトリにコピーしておきます。
debian# cp tools/mkimage /usr/local/bin/
debian# ln -s /usr/local/bin/mkimage /usr/bin/
3. パッチあてとか
まずKURO-BOX/T4用のファイルをダウンロードしておきます。 こちらののページから必要なファイルを使わせてもらいます。
debian# wget http://hiro7216.dyndns.org/blognplus/files/initrd.img
debian# wget http://hiro7216.dyndns.org/blognplus/files/kuro_nas_t4.its
同じページから2.26.32用のパッチを2.26.32-48squeeze1用に変えたもの(kuro-nas-t4-2.6.32-48squeeze1.diff)も入れておきます。
debian# wget https://sites.google.com/site/iroirofiles/kuro-nas-t4-2.6.32-48squeeze1.diff
次にDebianの(?)パッチを当てておきます。
debian# cd linux-2.6-2.6.32/ ← ソースを展開されたディレクトリに移動
debian# ../kernel-patches/all/2.6.32/apply/debian
つづいてKURO-BOX/T4用のパッチをあてます。
debian# patch -p 1 < ../kuro-nas-t4-2.6.32-48squeeze1.diff
4. カーネルのコンパイルとか
T4用のコンフィグをコピーします。oldconfigでいろいろ聞かれてもそのままEnterで良いと思います。
debian# cp arch/powerpc/configs/kuro_nas_t4_defconfig .config
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make oldconfig
設定を変更する場合は、menuconfigとかで。
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make menuconfig
カーネルをコンパイルします。
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make
マルチコアの環境であれば、-j(コア数)で速くなります。
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make -j6 ← 6コアの場合
dtbファイルを作成します。
debian# scripts/dtc/dtc -I dts -O dtb -p 1024 -o ../kuro_nas_t4.dtb arch/powerpc/boot/dts/kuro_nas_t4.dts
モジュールをコンパイルし、移行用にアーカイブしておきます。
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- make modules
debian# mkdir ../modules ← モジュール用のディレクトリ作成
debian# ARCH=powerpc CROSS_COMPILE=powerpc-linux-gnu- INSTALL_MOD_PATH=../modules make modules_install
debian# cd ../modules
debian# tar zcvf /usr/src/modules.tgz lib ← 圧縮するファイル名(modules.tgz)は何でも
FITイメージの作成にdtcが必要なのであらかじめコピーしておきます。
debian# cp linux-2.6-2.6.32/scripts/dtc/dtc /usr/local/bin/
debian# ln -s /usr/local/bin/dtc /usr/bin/
FITイメージを作成します。
debian# cd /usr/src
debian# cp linux-2.6-2.6.32/vmlinux.bin.gz vmlinuz
debian# mkimage -f kuro_nas_t4.its uImage-2.6.32-48squeeze1
できたuImage-2.6.32-48squeeze1とmodules.tgzをKURO-BOX/T4に移して使います。 (tftpとかで正しく起動するか試してから移すと良いと思います。)

参考: EmdebianToolchain - Debian Wiki
参考: Debian Linux Kernel Handbook - Common kernel-related tasks
参考: Hiroaki’s blog::Kernel 2.6.32をコンパイル

0 件のコメント:

コメントを投稿