■
参考にしたのは以下のページ
- http://www.debian.org/releases/stable/i386/ch08s06.html.ja
- http://park15.wakwak.com/~unixlife/linux/de-kernel.html
- http://park15.wakwak.com/~unixlife/linux/de-kernel-pkg.html
# apt-get install kernel-package
# apt-get install libc6-dev
# apt-get install libncurses5-dev
# apt-get install module-init-tools
libc6-devを入れると自動的にlinux-kernel-headersもインストールされた。以下からソースを落としてくる。
root以外のユーザでログインしてソースをwgetで取得
$ wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.1.tar.gz
$ tar zxvf linux-2.6.23.1.tar.gz
$ cd linux-2.6.23.1
$ make oldconfig
いろいろと聞いてくる。とりあえず全部エンター
$ make menuconfig
iptables関連を有効にしておく
$ make-kpkg clean
$ fakeroot make-kpkg --initrd --revision=custom.0.1 kernel_image
ここでエラー。どうやらfakerootがない。rootに戻ってインストール。
# apt-get install fakeroot
もう一度一般ユーザに戻ってmake-kpkg
$ make-kpkg clean
$ fakeroot make-kpkg --initrd --revision=custom.0.1 kernel_image
かなりの時間がかかる。無事カーネルパッケージの作成完了
このlinux-image-2.6.23.1_custom.0.1_arm.debをインストールする。以下はrootアカウントで実行
# dpkg -i linux-image-2.6.18-subarchitecture_custom.1.0_i386.deb
途中で以下のように怒られる
dpkg: dependency problems prevent configuration of linux-image-2.6.23.1:
linux-image-2.6.23.1 depends on initramfs-tools (>= 0.53) | yaird (>= 0.0.11) | linux-initramfs-tool; however:
Package initramfs-tools is not installed.
Package yaird is not installed.
Package linux-initramfs-tool is not installed.
dpkg: error processing linux-image-2.6.23.1 (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
linux-image-2.6.23.1
initramfs-toolsをインストールしようとしたが、apt-get -f installしろと怒られる
# apt-get -f install
とりあえず以下のように表示される。
Setting up linux-image-2.6.23.1 (custom.0.1) ...
Running depmod.
Finding valid ramdisk creators.
Using mkinitramfs-kpkg to build the ramdisk.
とりあえずうまくいったように見える。コンソールキットをつないでU-Bootからの起動を試みるがうまくゆかず。
仕方なしに、uImage.buffaloにもどして、dpkgを用いない方法で試すことにする。
以下のURLを参照
$ make clean
$ make uImage
時間がかかるのでちょっと休憩
"mkimage" command not found - U-Boot images will not be built
このエラー画面を見て納得。uImageはU-Bootで用いるイメージのことだったらしい。
道理でうまくゆかないわけだ。ちなみにmkimageをfindで調べたところ、
/usr/local/sbinにあるらしい。
PATH=/usr/local/sbin:$PATH; export PATH
として再び
$ make uImage
今度はうまく作成されたっぽい。
Kernel: arch/arm/boot/zImage is ready
UIMAGE arch/arm/boot/uImage
Image Name: Linux-2.6.23.1
Created: Sun Nov 11 18:42:57 2007
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 961100 Bytes = 938.57 kB = 0.92 MB
Load Address: 0x00008000
Entry Point: 0x00008000
Image arch/arm/boot/uImage is ready
つづいてモジュールのコンパイル
$ make modules
モジュールのコンパイル中に気づく、もしかしてdpkgを使って作成したカーネルイメージからmkimageを用いてuImageを作成できるのでは?
そこで調査すると以下のページを見つける
さっそくCtrl-Cでコンパイルを途中で止めrootになり試す
# cd /boot
# mkimage -l uImage.buffalo
Image Name: Linux-2.6.12.6-arm1
Created: Thu Feb 8 15:00:09 2007
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 1736372 Bytes = 1695.68 kB = 1.66 MB
Load Address: 0x00008000
Entry Point: 0x00008000
# mkimage -A arm -O linux -T kernel -C none -a 0x00008000 -e 0x00008000 -n "Linux-2.6.23.1-arm1 Ver0.1" -d vmlinuz-2.6.23.1 uImage.kurobox
Image Name: Linux-2.6.23.1-arm1 Ver0.1
Created: Sun Nov 11 19:10:19 2007
Image Type: ARM Linux Kernel Image (uncompressed)
Data Size: 961104 Bytes = 938.58 kB = 0.92 MB
リブートしてU-Bootでストップ
Marvell>>setenv kernel 'uImage.kurobox'
Marvell>>boot
こんどはカーネルの読み込みまではうまくいったが上がってこない。
何かを根本的に間違っているのだろうか?
仕方ないので電源を強制的に切ってパラメータを元に戻す。
Marvell>>setenv kernel 'uImage.buffalo'
Marvell>>boot