RT-Linux 3.2 pre3 のインストール
関連情報:
OpenTech - RTLinux Support in Europe 日本のサイトはないようです.
以下は,RT-Linux 3.2 pre 3 のインストール方法,というより,インストールログです.
インストール対象:
機種 | SONY VAIO PCG-TR3/S
|
CPU | Pentium M 1GHz
|
メモリ | 512MB
|
OS | Fedora Core 1.0/kernel 2.4.22
|
gcc | 3.3.2 20031022 (Red Hat Linux 3.3.2-1)
|
必要なもの:
Fedora 1 の現時点のカーネルが 2.4.22 なので,ここでは同じバージョンのカーネルソースを使います.
他のバージョンのカーネルに対しても,rtlinux-3.2pre3 のパッチが上記 URL で公開されています.
上記 2 つを /usr/src におきます.
まず,rtlinux のアーカイブを展開します:
# cd /usr/src
# bunzip2 -c rtlinux-3.2-pre3.tar.bz2 | tar xvf -
# cd rtlinux-3.2-pre3
基本的なインストール方法は doc/INSTALLATION に書いてある通りです.
linux カーネルソースを展開します:
# cd /usr/src
# bunzip2 -c linux-2.4.22.tar.bz2 | tar xvf -
linux -> linux-2.4.22 のシンボリックリンクを作成します.
古いリンクを消す必要があるかもしれません.
# ls -l linux
lrwxrwxrwx 1 root root 24 5 21 15:19 linux -> linux-2.4.22-1.2188.nptl
# rm linux
# ln -s linux-2.4.22 linux
カーネルソースに,RTLinux のパッチを当てます:
# cd linux
# patch -p1 < ../rtlinux-3.2-pre3/patches/kernel_patch-2.4.22-rtl3.2-pre3
patching file Makefile
patching file arch/i386/config.in
patching file arch/i386/kernel/Makefile
(略)
patching file kernel/exit.c
patching file kernel/fork.c
patching file mm/vmalloc.c
The next patch would delete the file net/ipv4/netfilter/ipt_MASQUERADE.c~,
which does not exist! Assume -R? [n]
Apply anyway? [n]
Skipping patch.
1 out of 1 hunk ignored
最後のは無視して問題ありません.(余分なファイルの消し忘れ?)
次に,カーネルパラメータを設定します:
# make menuconfig (←この時点で,gcc がない,curses.h がない,等,エラーが出る場合は,適宜 rpm パッケージをインストールする必要があります.当方は,yum install gcc ncurses-devel する必要がありました.)
(何も編集せずにセーブして終了)
# cp .config ../.config-rtl3.2-pre3-org
# make menuconfig
(必要に応じて,適宜パラメータの設定を変更します)
# cp .config ../.config-rtl3.2-pre3-edited
参考までに,編集前後の .config ファイルはつぎの通りです:
編集前:.config-rtl3.2-pre3-org
編集後:.config-rtl3.2-pre3-edited
ここでは,initrd は使用していません.rtlinux で initrd を使用できるかどうかは,わかりません.(使ってはいけない,とも書いていない)
APM は外した方が良いでしょう(INSTALLATION に記載あります).
また,こちらでは最初,Ext3 journalling file system support をモジュールに,Ext2 を off にしていましたが,kernel panic になりはまりました.
次に,カーネルとモジュールをコンパイル,インストールします:
# make dep
# make bzImage
# make modules
# make modules_install
# cp arch/i386/boot/bzImage /boot/vmlinuz-2.4.22-rtl3.2-pre3
grub.conf に以下を追加します:
title Fedora Core (2.4.22-rtl3.2-pre3)
root (hd0,4)
kernel /vmlinuz-2.4.22-rtl3.2-pre3 ro root=/dev/hda6 hdc=ide-scsi rhgb apm=off acpi=on
ただし,root= には,linux のルート(/)パーティションを指定してください.
grub.conf の例
リブートして rtlinux カーネルで起動します.
その後引続き,rtlinux モジュールのコンパイル等を行います:
# cd /usr/src/rtlinux-3.2-pre3
# make menuconfig
(こちらでは,何も変更せず,セーブして終了しました.
この後,doc/INSTALLATION には,rtl.config ファイルの CC= を確認しろ,と指示がありますが,
こちらでは rtl.config ファイルがなかったのでスキップしました.)
# make dep
# make
# make install
テストします:
# make regression
(略)
Testing multiple loads of rtl.o... [ OK ]
Testing multiple loads of rtl_time.o... [ OK ]
Testing multiple loads of rtl_sched.o... [ OK ]
Testing multiple loads of rtl_posixio.o... [ OK ]
Testing multiple loads of rtl_fifo.o... [ OK ]
Testing RTLinux fifos... [ FAILED ]
Testing thread wait times... [ FAILED ]
Testing that Linux time progresses... [ OK ]
Testing that Linux time is monotonically increasing... [ OK ]
Testing ping flood..
全て OK となるのが正常だそうですが,上記のようになってしまいました.
rtl_time.o のテストは,ほとんどハングアップ状態でした.
これはパスしましたが,ping flood の後,完全に止まってしまいました.
ただし,ハングアップではありません.ctrl-c でストップしました.
fifo のテストが failed になっていますが,/dev を調べると /dev/rtf?? がありません.Makefile を見ると,/dev/rtf?? は make install 時に作られことになっています.
おかしいなと思いつつ,再度
# make install
何故か今度は /dev/rtf?? ができました.
再度テスト:
# make regression
(略)
Testing multiple loads of rtl.o... [ OK ]
Testing multiple loads of rtl_time.o... [ OK ]
Testing multiple loads of rtl_sched.o... [ OK ]
Testing multiple loads of rtl_posixio.o... [ OK ]
Testing multiple loads of rtl_fifo.o... [ OK ]
Testing RTLinux fifos... [ OK ]
(今度は OK になりました....)
Testing thread wait times... [ OK ]
Testing that Linux time progresses... [ OK ]
Testing that Linux time is monotonically increasing... [ OK ]
Testing ping flood... [ OK ]
(先程と同様,ここで止まりましたが,ctrl-c を押して先に進めました.)
Testing floating-point support... [ OK ]
Removing rtl_sched.o... [ OK ]
Testing periodic timer... [ OK ]
Testing oneshot timer... [ OK ]
というわけで,良くわかりませんが一応全て OK となりました.
ping flood のテスト時,
ping -f -c 100000 localhost 2>> ${OUTFILE} > /dev/null
に時間がかかっているようです.OUTFILE は regression.log です.
よくわからないので先に進みます.
rtlinux モジュールをロードします:
# rtlinux start
Warning: loading /usr/rtlinux-3.2/modules/mbuff.o will taint the kernel: no license
See http://www.tux.org/lkml/#export-tainted for information about tainted modules
Module mbuff loaded, with warnings
Module rtl loaded, with warnings
Module rtl_time loaded, with warnings
Module rtl_posixio loaded, with warnings
Module rtl_fifo loaded, with warnings
Module rtl_sched loaded, with warnings
Scheme: (-) not loaded, (+) loaded
(+) mbuff
(+) rtl
(+) rtl_fifo
(+) rtl_posixio
(+) rtl_sched
(+) rtl_time
全て (+) で正常です.
status を確認します:
# rtlinux status
Scheme: (-) not loaded, (+) loaded
(+) mbuff
(+) rtl
(+) rtl_fifo
(+) rtl_posixio
(+) rtl_sched
(+) rtl_time
通常は,ここで実験用モジュールを組み込んで,制御実験等を行います.
rtlinux モジュールを外します:
# rtlinux stop
rmmod: rtl is in use
Scheme: (-) not loaded, (+) loaded
(-) mbuff
(-) rtl
(-) rtl_fifo
(-) rtl_posixio
(-) rtl_sched
(-) rtl_time
Yasuhide Kobayashi
Last modified: Sun Feb 11 13:22:47 JST 2007