RTAI+Fedora12 64bit RTAIインストール方法II
FRONT PAGE

コレは何?
 RTAIを64bitで動かせるかどうか試してみます。 ここでは,64bit版 Fedora 12 をRTAIでリアルタイム化します。

ここの内容は少々古いので, RTAI3.9+Fedora17 64bit を試した方が良いかもしれません。(12/07/26追記)


ハードウェア/ソフトウェア構成例
 今回使用したパソコンのハードウェアおよびソフトウェア構成は以下の通りです。
ハードウェア構成:Intel Core i7 870 @ 2.93 GHz + Gigabyte P55-UD3R + Intel SSD X25-M
ソフトウェア構成:Fedora 12 64bit + kernel-2.6.32.2 + rtai-3.8
上記で動作を確認しています。 64bitでメモリ使いたい放題。 Core i7 のコア数は4,ハイパースレッディングで8なので,制御プログラムをマルチスレッド化すれば制御周期が一気に縮められるかもしれません。 しかも64bit。

注意1:当方の環境でFedora13~15を試して見ましたが,どうも起動にやたら時間がかかったり,sleeping forever.. などと表示され起動に失敗します。 今のところFedora12で且つ最新版へのアップデートをしない方が安定するようです。(initrd→initramfsが怪しい?) (12/01/25追記)

注意2:ランレベル5(GUI)ではなく,ランレベル3(CUI)で起動して下さい。正常起動しても画面表示が出なかったりするようです。
/etc/inittab の id:5:initdefault: を id:3:initdefault: に変更
(12/06/22追記)
(どうしてもX-windowを使いたいときは nouveau を無効にし,機体に適合するグラフィックドライバ(nVidia等々)を入れて下さい)


1.Fedora 12 のインストール
 64 bit版 Fedora 12 を普通にインストールします。 SSDがシステムになるようにしておくと実験が快適になります。


2.mkinitrdのインストール
 なぜかデフォルトで入っていないので,mkinitrdをインストールします。 これがないとRTAIを入れられません。以下を入力。
yum -y install mkinitrd
問題がなければ次に行きます。


3.kernel と RTAI のダウンロード
 LinuxのkernelとRTAIのパッチを入手します。必要なのは以下のファイルです。
linux-2.6.32.2.tar.bz2
rtai-3.8.tar.bz2
これをそれぞれの本家から落としてきます。


4.リアルタイムカーネルイメージの作成
 さて早速RTAIのパッチを当てます。 まず落としたファイルを/usr/srcで解凍。
tar jxf linux-2.6.32.2.tar.bz2
tar jxf rtai-3.8.tar.bz2
次に,パッチ当てます。
cd /usr/src/linux-2.6.32.2
patch -p1 < ../rtai-3.8/base/arch/x86/patches/hal-linux-2.6.32.2-x86-2.5-00.patch
「/rtai-3.8/base/arch/x86_64/」ではないことに注意。 x86_64だとよく分かりませんが駄目でした。 「/rtai-3.8/base/arch/x86/」の場合でもちゃんと64bitになってるようです。 コンパイルの設定します。
make menuconfig
設定画面が出てきますが,大体いつも通りです。 違いはCPUの設定をx86にすることぐらいです。 そして,コンパイル。
make all
・・・・と・・?コンパイルエラー。。。。メッセージは,
CONFIG_NR_CPUS is too large
だそうです。 ということで,「/usr/src/linux-2.6.32.2/.config」ファイルを開いて書き換えます。
vi .config
CONFIG_NR_CPUS=256 の行を探して,CONFIG_NR_CPUS=16 に書き換え。
しかしどうもこれだけでは駄目なようです。 さらに書き換え。
CONFIG_SPARSE_IRQ=y の行を探して,CONFIG_SPARSE_IRQ=n に書き換え。
もう一度コンパイルします。
make all
次は問題ないようです。 続いてインストール。
make modules_install
make install
これでイメージはおkです。


5.GRUBの設定
ブートローダの設定をします。 おそらく自動でRTAI+Fedoraのための設定がされているはずですが,一部書き換えます。
vi /boot/grub/grub.conf
default=1 を default=0 に変更(デフォルトでRTAIが起動するように各自で設定)
timeout=0 を timeout=10 に変更
hiddenmenu をコメントアウト
これでおk。 ここで再起動します。


6.RTAIのインストール
再起動が完了したら,
uname -r
と打ってみます。これで,2.6.32.2 になってるはずです。 RTAIをコンパイルしてぶち込みます。
cd /usr/src/
ln -s /usr/src/linux-2.6.32.2 linux
cd rtai-3.8
make menuconfig
設定画面が出てきます。 いつも通り特に何もせず保存して終了。 そしてコンパイル&インストール。
make all
make install
ここまでは問題なし。 そして最後の関門を実施。
insmod /usr/realtime/modules/rtai_hal.ko
・・・・と・・?エラー。。。。メッセージは,
insmod: error inserting 'rtai_hal.ko': -1 Operation not permitted
?なんのこっちゃ。こっちはroot様ですが何か。 そこで,
dmesg
を入れてdmesgでログを見てみると,
RTAI[hal]: RTAI CONFIGURED WITH LESS THAN NUM ONLINE CPUS.
なーるほど。なので,「make menuconfig」まで遡ってやり直し。
make menuconfig
設定画面が出るので,メニューから,
Machine (x86_64) → Number of CPUs → 16
として,CPUの数を増加。 再びコンパイル&インストール。
make all
make install
そしてもう一度最後の関門の突破を試みる。
insmod /usr/realtime/modules/rtai_hal.ko
insmod /usr/realtime/modules/rtai_lxrt.ko
お,問題ないようだ。 以下を入力して動作確認を実施。
cd /usr/realtime/testsuite/user/latency
./run
overrunsは零。すばらしい。完璧である。 これで制御性能大幅に向上。


番外編 キーボードが効かない!
 リアルタイムカーネル上でFedoraを起動すると,なぜかPS/2キーボードが効かない。 それも初めのうちは使えるのだが,数文字~数十文字入力すると突然反応しなくなる。 Num Lockさえも反応しない。 RT-Linux時代のころもキーボードが効かなくなる事態があったので,その教訓から,
chkconfig --level 2345 gpm off
としてgpmを止めてみたが変わらず。 dmesgでログを見てみると,
PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp
なる一文が。 そこで,「/boot/grub/grub.conf」に「i8042.nopnp」を追加すればdmesgのそのログは消えるのだが,結局ダメだった。
 ということで,PS/2キーボードを使うことを諦め,USBキーボードを使います。 USBキーボードならなんら問題ないようです。






- 97661 -

研究室の横の倉庫 - Side Warehouse of Laboratory
Copyright(C), Side Warehouse, All rights reserved.