第 4 章 カーネル構築 58
4.3 カーネルの入れ替え
■HZの変更方法
HZを変更するには、Linuxカーネルのヘッダーファイルを書き換えて、カーネルの再コンパイルが
必要になります。1.
ヘッダーファイルの変更/usr/src/cpz-2.6/linux-2.6.11.12/include/asm-sh/param.hをテキストエディターで開いて、斜線の箇所を 100〜1000の間で変更します。
#ifndef __ASM_SH_PARAM_H
#define __ASM_SH_PARAM_H
#ifdef __KERNEL__
# ifdef CONFIG_SH_WDT
# define HZ 1000 /* Needed for high-res WOVF */
# else
# define HZ 100
# endif
# define USER_HZ 100 /* User interfaces are in "ticks" */
# define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */
#endif
2.
カーネルコンパイルまず、make ARCH=sh CROSS_COMPILE=sh4-linux- cleanを実行して、予め中間ファイルを削除しま す。その後、make ARCH=sh CROSS_COMPILE=sh4-linux- と実行することで行います。
kitty:/usr/src/cpz-2.6/linux-2.6.11.12# make ARCH=sh CROSS_COMPILE=sh4-linux - clean
:
kitty:/usr/src/cpz-2.6/linux-2.6.11.12# make ARCH=sh CROSS_COMPILE=sh4-linux -
:
kitty:/usr/src/linux-2.6.11.12# mkdir mod-dir
kitty:/usr/src/linux-2.6.11.12# make ARCH=sh CROSS_COMPILE=sh4-linux- INST ALL_MOD_PATH=/usr/src/linux-2.6.11.12/mod-dir/ modules_install
ここでは、コンパイルした後、./mod-dir/にモジュールをインストールしています。
4.3 カーネルの入れ替え
4.3.1 USB 接続の CF リーダ / ライタを使う場合
CPZ-SH03搭載のCFを、 USB接続のCFリーダ/ライタにセットし、
ホストマシンに接続します。(以降、
CFを/dev/sdaと認識したものとして説明します。)
1.
カーネルとモジュールの書き込み以下の手順で、構築したカーネルとモジュールを、CFにコピーします。
SH-Linux kernel ver. 2.4.17 i
kitty:~# cd /usr/src/linux-2.4.17
kitty:/usr/src/linux-2.4.17# mount -t ext3 /dev/sda1 /mnt/
kitty:/usr/src/linux-2.4.17# cp -a arch/sh/boot/zImage /mnt/boot/vmlinuz kitty:/usr/src/linux-2.4.17# rm -rf /mnt/lib/modules
kitty:/usr/src/linux-2.4.17# cp -a mod-dir/lib/modules /mnt/lib/
SH-Linux kernel ver. 2.6.11 i
kitty:~# cd /usr/src/cpz-2.6/linux-2.6.11.12
kitty:/usr/src/cpz-2.6/linux-2.6.11.12# mount -t ext3 /dev/sda1 /mnt/
kitty:/usr/src/cpz-2.6/linux-2.6.11.12# cp -a arch/sh/boot/zImage /mnt/boot/vmlinuz kitty:/usr/src/cpz-2.6/linux-2.6.11.12# rm -rf /mnt/lib/modules
kitty:/usr/src/cpz-2.6/linux-2.6.11.12# cp -a mod-dir/lib/modules /mnt/lib/
もし、CF内の/lib/modules/以下に、カーネル以外のモジュールを組み込んだ場合は、一旦、別のデ ィレクトリに退避し、カーネルモジュールをコピーした後、再度 元の場所にコピーし直してくだ さい。
2.
ブートローダの書き込みクロスで実行できるように、/mnt/etc/lilo.confと/mnt/boot/boot.bを変更します。
kitty:~# cd /mnt
kitty:/mnt# cp -a etc/lilo.conf etc/lilo.conf-orig kitty:/mnt# mv boot/boot.b boot/boot.b-orig kitty:/mnt# gedit etc/lilo.conf
kitty:/mnt# cp -a /opt/cpz-usbcf/boot.b-21.4 boot/boot.b kitty:/mnt# /opt/cpz-usbcf/lilo -r /mnt/
Added linux * kitty:/mnt#
この例では、
/mnt/etc/lilo.confをlilo.conf-origとして、 /mnt/boot/boot.bをboot.b-origとして保存していま
す。その後、/mnt/etc/lilo.confを変更します。変更内容は、『29ページ
2.4 CFのリカバリ手順』の
『29ページ
2.4.1 USB接続のCFリーダ/ライタを使う場合』を、参照してください。
3.
終了処理セルフでliloを実行しても問題ないように、/mnt/etc/lilo.confと
/mnt/boot/boot.bを元のファイルに戻し、
umountすれば完了です。
kitty:/mnt# cp etc/lilo.conf-orig etc/lilo.conf kitty:/mnt# cp boot/boot.b-orig boot/boot.b kitty:/mnt# cd
kitty:~# umount /mnt/
kitty:~#
以上で、カーネルの書き込みは完了です。
4.3.2 ネットワークを使用する場合
ここでは、『29ページ
2.4 CFのリカバリ手順』のネットワークを使用する場合で説明したホス
トマシンの準備ができているものとして説明します。なお、ホストマトン上の/etc/exportsの設定で、
CPZ-SH03からmountできるディレクトリを /optとして
いますので、構築したカーネルとモジュールを、cp -aコマンドで、 /opt/tmp/に移動させておきます。
SH-Linux kernel ver. 2.4.17 i
kitty:~# cd /opt kitty:/opt# mkdir tmp
kitty:/opt/tmp# cp -a /usr/src/linux-2.4.17/arch/sh/boot/zImage ./
kitty:/opt/tmp# cp –a /usr/src/linux-2.4.17/mod-dir ./
kitty:/opt/tmp# cd kitty:~#
SH-Linux kernel ver. 2.6.11 i
kitty:~# cd /opt kitty:/opt# mkdir tmp
kitty:/opt/tmp# cp -a /usr/src/cpz-2.6/linux-2.6.11.12/arch/sh/boot/zImage ./
kitty:/opt/tmp# cp –a /usr/src/cpz-2.6/linux-2.6.11.12/mod-dir ./
kitty:/opt/tmp# cd kitty:~#
1.
ネットワーク経由でCPZ-SH03を起動CPZ-SH03基板上のDSW2の1,2をOFF、3,4をONにします。
CPZ-SH03のLAN1とホストマシンのLAN、およびクロスのシリアルで接続し、ホストマシン上で、
ターミナルエミュレータ(minicom)を起動後、CPZ-SH03の電源を入れます。
(ネットワーク経由でCPZ-SH03を起動する場合、ホストマシン上で、nfsサーバ、dhcpdが動いて
いる必要があります。動いていない場合、/etc/init.dディレクトリの関連するデーモンをスタート してください。)起動メッセージが表示され、loginプロンプト状態になりますので、rootでログインします。
Linux version 2.4.17 (root@kitty) (gcc version 3.0.4) #1 Mon Jun 27 15:24:43 JST 2005 On node 0 totalpages: 16384
On node 0 totalpages: 16384 ・
・ ・
Starting internet superserver: inetd.
Starting deferred execution scheduler: atd.
Starting periodic command scheduler: cron.
Debian GNU/Linux testing/unstable greenart ttySC1 greenart login: root
・ ・ ・ greenart:~#
2.
カーネルとモジュール以下の手順で、構築したカーネルとモジュールを、CFにコピーします。
greenart:~# mkdir /host
greenart:~# mount kitty:/opt /host greenart:~# mount -t ext3 /dev/hda1 /mnt
greenart:~# cp -a /host/tmp/zImage /mnt/boot/vmlinuz greenart:~# rm -rf /mnt/lib/modules
greenart:~# cp -a /host/tmp/mod-dir/lib/modules /mnt/lib/
greenart:~# umount /host greenart:~#
もし、CF内の/lib/modules/以下に、カーネル以外のモジュールを組み込んだ場合は、一旦、別のデ ィレクトリに退避し、カーネルモジュールをコピーした後、再度 元の場所にコピーし直してくだ さい。
3.
ブートローダの書き込みliloコマンドでブートローダをCFに書き込みます。
4.
終了処理最後にCFをアンマウントし、シャットダウンします。
greenart:/mnt# cd greenart:~# umount /mnt/
greenart:~# shutdown -h now
Broadcast message from root (ttySC1) (Thu Jun 30 10:43:10 2005):
The system is going down for system halt NOW!
INIT: Switching to runlevel: 0
INIT: Sending processes the TERM signal INIT: Sending processes the KILL signal ・
・ ・
Unmounting remote filesystems... done.
Deconfiguring network interfaces: done.
Deactivating swap... done.
Unmounting local filesystems... done.
Power down.
以上で、カーネルの書き込みは完了です。