カーネルのクロスコンパイル

PowerMac G5用の64ビットカーネルの作り方

1) binutilsとgccを使ってクロスコンパイラを作ります。

作業例:

tar xvjf binutils-2.14.tar.bz2
mkdir binutils-work
cd binutils-work
../binutils-2.14/configure --target=powerpc64-linux --prefix=/opt/ppc64 \
 --disable-shared 
make
make install
make clean
cd ../

export PATH=/opt/ppc64/bin:${PATH}
tar xvjf gcc-core-3.3.3.tar.bz2
mkdir gcc-work
cd gcc-work
../gcc-3.3.3/configure --target=powerpc64-linux --prefix=/opt/ppc64 \
   --enable-languages=c --disable-shared --disable-threads
make
make install
make clean
cd ../

2) 2.6系のカーネルソースと不安定版のgenkernelをインストールします。

作業例:

ACCEPT_KEYWORDS=ppc64 emerge ppc-development-sources
ACCEPT_KEYWORDS=~ppc emerge genkernel

3) /usr/src/linuxのシンボリックリンクを確認します。

/usr/src/linuxのシンボリックリンク先が先ほど入れたカーネルのソースになっているか確認し、違っていたら適切なリンクを張ります。

作業例:

cd /usr/src
ls -la

4) Makefileを書き換えます。

作業例:

cd /usr/src/linux
nano -w Makefile

書き換える箇所は次の2カ所です。

ARCH            ?= ppc64
CROSS_COMPILE   ?= /opt/ppc64/bin/powerpc64-linux-

5) カーネルコンフィグファイルを流用します。

作業例:

cd /usr/src/linux
cp /usr/share/genkernel/ppc64/kernel-2.6.g5 .config

6) make menuconfigを実行します。

設定はいじらずそのまま保存してください。

作業例:

make menuconfig

7) カーネルとモジュールを作ります。

作業例:

make dep && make vmlinux modules modules_install
mount /boot
cp vmlinux /boot/kernel-2.6.x-64
cp System.map /boot/System.map-2.6.x-64

8) yabootのプロンプトに直接カーネルを指定して起動してみます。

作業例:

boot: /kernel-2.6.x-64

9) 無事起動したらyabootの設定も変えておきましょう。