メモ

覚書です

coLinuxでkernel build(Debian)

2008-10-10 00:18:10 | Linux
●ソースの取得と展開
wget http://www.colinux.org/snapshots/devel-colinux-20080923.tar.gz
tar xfvz devel-colinux-20080923.tar.gz
cd devel-colinux-20080923
./configure

※colinuxがstableバージョンの場合
http://www.colinux.org/snapshots/stable-colinux-20080524.tar.gz
↑をゲットしてください。

※最新版は下記で確認してください。
coLinux - Snapshots

●パッチ
make kernel

Making Kernel 2.6.22.18がはじまったあたりで中止

cd ../build/linux-2.6.22.18-source
cp ../../devel-colinux-20080923/conf/linux-2.6.22.18-config .config
make oldconfig
make menuconfig

適当にカーネルの設定を変更
CPUをCore2にしてみた。
gccが4.3.0以降の場合、Makefileの修正。CFLAGSに-fno-tree-scev-cpropを追加。
(Debian lennyなのです)

#追記
squashfsを使う場合、そのままだとコンパイルエラーが出ます。
linux-2.6.22.18-source/fs/squashfs/inode.c に一行追加すると良いようです。

#include <linux/vfs.h>
#include <linux/vmalloc.h>
+#include <linux/sched.h>
#include <linux/smp_lock.h>


●カーネルパッケージの構築
make-kpkg --rootcmd fakeroot --initrd --revision=colinux.1 kernel_image kernel_headers
mv vmlinux vmlinux-2.6.22.18-co-0.8.0

●古いモジュールの移動
すでに/lib/modules/2.6.22.18-co-0.8.0がある場合
mv /lib/modules/2.6.22.18-co-0.8.0 /lib/modules/2.6.22.18-co-0.8.0.old

●カーネルパッケージのインストール
cd ../
dpkg -i linux-image-2.6.22.18-co-0.8.0_colinux.1_i386.deb

●イメージをホストにコピー
vmlinux-2.6.22.18-co-0.8.0
initrd.img-2.6.22.18-co-0.8.0
cofsをマウントするなりして上の二つをホストにコピー。

●設定ファイルの更新
kernel行とinitrd行を新しいイメージのファイル名にする。
coLinuxをいったん終了して再起動する。

●不要なファイルの削除
無事動作を確認できたので、不要なファイルを削除しました。
必要ならディスクスペースを増やしましょう。

★備考
あとからcoLinuxを0.7.3から0.8.0へ変更した場合など、TAP-Adapterをインストールしなおしたからかな?、MACアドレスが変わります。そのためudevでeth0からeth1などにrenameされてました。(dmesgで確認できます。)
その場合には/etc/udev/rule.d/以下の設定を変更しましょう。
こちらの環境では70-persistent-net.rulesというファイル名でした。
記述を削除(コメントアウト)しても問題なさそうですが、一応MACアドレスを設定しておきました。
MACアドレスは ifconfig -a|grep eth などとして確認できます。(HWaddrの後ろがMACアドレスです。udevinfo -a -p /sys/class/net/eth1 | grep addressとかdmesg | grep conetでもOK。)
変更したら一度ネットワークを止めて udevtrigger で更新。(lennyでは udevadm trigger)
面倒だったらrebootですね。
renameを気にしない場合は、/etc/network/interfacesの設定をeth1などに変えればよいかと思います。

★参考サイト
coLinuxのメモ - カーネルのコンパイル
2007-12-08 - ぴょぴょぴょ? - Linuxとかプログラミングの覚え書き - - GCC 4.3 情報
Bug 5490 - cimagf gives incorrect results
Re: [ANN] Squashfs 3.3 released | KernelTrap