2001年3月15日

REX‑PCI31/L,PCI33のLinuxでの動作について
ラトックシステム株式会社

はじめに
本ドキュメントでは、Linux 上で REX‑PCI31, REX‑PCI33 を動作させるための情報を提供しています。
REX‑PCI31, REX‑PCI33 は、SCSIコントローラとして米国Initio社製（URL
http://initio.com）のINIC‑850を搭載しています。このINIC‑850用のLinuxドライバは、現在のLinuxパッケージには含まれておりません。
次のように提供されています。
製品型番
REX‑PCI31L

提供状態
REX‑PCI31L添付のCDのLinuxフォルダに含まれています。
製品に添付されていないため、インターネットよりダウREX‑PCI31/33
ンロードして頂く必要があります。
REX‑PCI31Lを使用する場合も、ラトックシステムのホームページから
REX‑PCI31/L, PCI33の最新のLinux用ドライバをダウンロードすることをお勧めします。
Linux上でREX‑PCI31/33を動作させるには、以下の４つの作業を行います。
1. ファイルのダウンロード
2. ダウンロードしたファイルの解凍
3. ドライバモジュールおよびカーネルの作成
4. REX‑PCI31/33用ドライバの確認
ここでの説明では、TurboLinux 4.5 (kernel 2.2.13)での Setup手順とRedHat7.0 を Kernel 2.4.1 にアップグレードした環境での Setup手順を例に説明していきます。
makeによるmoduleの再コンパイルやカーネルの構築を行う場合は、Linuxでのモジュールの開発環境がセットアップされている必要があります。セットアップ方法については、ディストリビューションの販売元（ディストリビュータ）にお問い合わせください。
また、rootユーザでログインしてすべての作業を行ってください。

１．ファイルのダウンロード
最初に、本製品に添付のディスクにLinux用のドライバが同梱されていますが、弊社ホームページ（www.rexpccard.co.jp）よりREX‑PCI31/33のLinux用ドライバの最新のものを入手することお勧めします。
任意のディレクトリにダウンロードしたファイルは、pci31̲33.tar.gz という名前になります。
APH_PCI31_LINUX_000706 (1/8)

２．ファイルの解凍
ファイルがダウンロードできたら、rootユーザでログインして以下の手順でファイルを解凍します。
# gunzip pci31̲33.tar.gz# tar xvf pci31̲33.tar
解凍が終わると、[ pci31̲33 ] というディレクトリの下に[ src ] [ samples] [ modules ] というディレクトリができます。
[ src ] にはドライバモジュールのソースファイルが格納されています。
このなかの [ 2.2.x ] には Kernel 2.2.x 用が、[ 2.4.1 ] にはKernel 2.4.1用の記述サンプルが格納されています。
[ samples ] にはドライバモジュールを作成するために編集する各種ファイルの記述サンプルが格納されています。
[ modules ] には、ディストリビューション別に作成されたドライバモジュールが格納されています。

３．TurboLinux 4.5 での REX-PCI31 用ドライバモジュールおよびカーネルの作成(1) ドライバソースファイルのコピー
ドライバソースファイルを SCSI用ドライバモジュールのソースが入ったディレクトリへコピーします。
# cd /usr/src/linux‑2.2.13/drivers/scsi# cp /root/pci31̲33/src/* .
inic850.c, inic850.h, i850scsi.c, i850scsi.h の４つのファイルがコピーされます。
(2) hosts.c の編集
各ホストアダプタ用にヘッダファイルをインクルードしている箇所へ以下の３行を挿入します。
#ifdef CONFIG̲SCSI̲INIC850#include "inic850.h"#endifstatic Scsi̲Host̲Template builtin̲scsi̲hosts[] の中へ以下の３行を挿入します。
#ifdef CONFIG̲SCSI̲INIC850
INIC850,#endif
Samples/2.2.x の hosts.c を参照してください。
APH_PCI31_LINUX_000706 (2/8)

(3) Makefile の編集
以下の7行を挿入します。
ifeq ($(CONFIG̲SCSI̲INIC850), y)
L̲OBJS += inic850w.oelse
ifeq ($(CONFIG̲SCSI̲INIC850), m)
M̲OBJS += inic850w.o
endif
endif
ドライバモジュールをコンパイルするための以下の5行を追加します。
inic850w.o: inic850.c i850scsi.c inic850.h i850scsi.h$(CC) $(CFLAGS) ‑c inic850.c ‑o inic850.o$(CC) $(CFLAGS) ‑c i850scsi.c ‑o i850scsi.o$(LD) ‑r ‑o inic850w.o inic850.o i850scsi.orm ‑f inic850.o i850scsi.o
Samples/2.2.x の Makefile を参照してください。

(4) make menuconfig 用定義ファイル (Config.in) の編集
driverse/scsi のディレクトリへ移動します。
#

cd /usr/src/linux‑2.2.13/drivers/scsi

inic850w.o が Kernel に組み込まれるように以下を追加します。
dep̲tristate 'Initio/RATOC INIC‑850 chip support'
CONFIG̲SCSI̲INIC850 $CONFIG̲SCSI
samples の Config.in を参照してください。

(5) proc̲fs.h の編集
include/linux のディレクトリへ移動します。
#

cd /usr/src/linux‑2.2.13/include/linux「 PROC̲SCSI̲INIA100 」の次の行に「 PROC̲SCSI̲INIC850, 」と記述した行を挿入します。
samples の proc̲fs.h を参照してください。
さらに、/usr/include/linux にも proc̲fs.h があるので同様の修正を行います。

APH_PCI31_LINUX_000706 (3/8)

(6) kernel の再構築 ( Step1 )カーネル作成のためのディレクトリへ移動します。
# cd /usr/src/linux‑2.2.13# make mrproper# make menuconfig[ Linux kernel v2.2.13 Configuration ...] という画面が起動します。
MainMenu から [ SCSI Support ‑> ] を選択します。
SCSI Support から [ SCSI low‑level drivers ] を選択します。
SCSI low‑level drivers で SCSI Host adapter名の一覧が表示されるので[ < > Initio/RATOC INIC‑850 chip support (NEW) ] へカーソルを移動させます。スペースバーを2回押して、先頭の < > を <*> へ変更してbuilt‑in に設定します。
[ Exit ] を押して画面を戻って行くと最後に[ Do you wish to save yournew kernel configuration ? ] というの確認画面が表示されるので、<Yes>を選択して menuconfig を終了します。

(7) kernel の再構築 ( Step2 )# make dep# make bzImage# make modules

modules̲install

以上で REX‑PCI31用ドライバモジュールおよびそれを組み込んだ Kernelが作成されます。

４．TurboLinux 4.5 での REX‑PCI31/33 用ドライバ起動の確認 ( module )作成されたモジュール inic850w.o をモジュール用ディレクトリへコピーします# cp drivers/scsi/inic850w.o/lib/modules/2.2.13/scsi

モジュールの起動を確認します。
# insmod/lib/modules/2.2.13/scsi/inic850w.o

正常に起動すると以下のメッセージが表示されます。
inic850: Total Adapters=1
scsi0: INIC‑850 chip SCSI device driver; Revision: 0.80
scsi: 1 hostscsi: detected total

APH_PCI31_LINUX_000706 (4/8)

５．TurboLinux 4.5 での REX‑PCI31/33 用ドライバ起動の確認 ( kernel )作成した kernel (bzImage) が正常に起動するか確認してください。
LILO へ作成した kernel を追加して、ブートで選択してください。
ブート中の画面でREX‑PCI31用のドライバが起動することを確認します。
inic850: Total Adapters=1
scsi0: INIC‑850 chip SCSI device driver; Revision: 0.80
scsi: 1 hostscsi: detected total
正常に起動していることが確認されたら、標準で起動する Kernel に設定してください。

6．RedHat 7.0 + kernel 2.4.1 での REX-PCI31 用ドライバモジュールおよびカーネルの作成(1) ドライバソースファイルのコピー
ドライバソースファイルを SCSI用ドライバモジュールのソースが入ったディレクトリへコピーします。
# cd /usr/src/linux‑2.4.1/drivers/scsi# cp /root/pci31̲33/src/* .
inic850.c, inic850.h, i850scsi.c, i850scsi.h の４つのファイルがコピーされます。
(2) Makefile の編集
以下の7行を挿入します。
list‑multi に inic850w.o を追加します。
list‑multi := scsi̲mod.o initio.o a100u2w.o inic850w.oターゲットの記述を追加。
Obj‑$(CONFIG̲SCSI̲INIC850) += inic850w.o
オブジェクトファイルの記述を追加。
inic850w‑objs := inic850.o i850scsi.o
inic859w.o : $(inic850w‑objs)$(LD) r o $@ $(inic850w‑objs)
Samples/2.4.1 の Makefile を参照してください。

APH_PCI31_LINUX_000706 (5/8)

(3) make menuconfig 用定義ファイル (Config.in) の編集
driverse/scsi のディレクトリへ移動します。
# cd /usr/src/linux‑2.4.1/drivers/scsi
inic850w.o が Kernel に組み込まれるように以下を追加します。
dep̲tristate 'Initio/RATOC INIC‑850 chip support'CONFIG̲SCSI̲INIC850 $CONFIG̲SCSI $CONFIG̲PCISamples/2.4.1 の Config.in を参照してください。
(4) kernel の再構築 ( Step1 )カーネル作成のためのディレクトリへ移動します。
# cd /usr/src/linux‑2.4.1# make mrproper# make menuconfig[ Linux kernel v2.4.1 Configuration ...] という画面が起動します。
MainMenu から [ SCSI Support ‑> ] を選択します。
SCSI Support から [ SCSI low‑level drivers ] を選択します。
SCSI low‑level drivers で SCSI Host adapter名の一覧が表示されるので[ < > Initio/RATOC INIC‑850 chip support (NEW) ] へカーソルを移動させます。スペースバーを2回押して、先頭の < > を <M> へ変更してbuilt‑in に設定します。
[ Exit ] を押して画面を戻って行くと最後に[ Do you wish to save yournew kernel configuration ? ] というの確認画面が表示されるので、<Yes>を選択して menuconfig を終了します。
(5) kernel の再構築 ( Step2 )# make dep# make bzImage# make modules

modules̲install

以上で REX‑PCI31用ドライバモジュールおよびそれを組み込んだ Kernelが作成されます。
作成されたモジュール (inic850w.o) は、/lib/modules/2.4.1/build/scsiへコピーされます。
(6) REX‑PCI31用 kernel への変更
作成したKernel (bzImage) が正常に起動するか確認します。
LILO へここで作成した Kernel を追加して、ブートで選択してください。
Kernel 2.4.1 では、先に kernel を変更しないとモジュールのロード時に以下のエラーが表示されます。
unsolved symbol ̲̲global̲̲cli
unsolved symbol ̲̲global̲̲save̲flags
unsolved symbol ̲̲global̲̲restore̲flags
APH_PCI31_LINUX_000706 (6/8)

7．RedHat 7.0 + kernel 2.4.1 での REX‑PCI31/33 用ドライバ起動の確認( module )モジュールの起動を確認します。
# insmod/lib/modules/2.4.1/build/scsi/inic850w.o

正常に起動すると以下のメッセージが表示されます。
inic850: Total Adapters=1
scsi0: INIC‑850 chip SCSI device driver; Revision: 0.80
scsi: 1 hostscsi: detected total8．RedHat 7.0 + kernel 2.4.1 での REX‑PCI31/33 用ドライバ起動の確認( kernel )作成した kernel (bzImage) が正常に起動するか確認してください。
LILO へ作成した kernel を追加して、ブートで選択してください。
ブート中の画面でREX‑PCI31用のドライバが起動することを確認します。
inic850: Total Adapters=1
scsi0: INIC‑850 chip SCSI device driver; Revision: 0.80
scsi: 1 hostscsi: detected total
正常に起動していることが確認されたら、標準で起動する Kernel に設定してください。

9．kernel 2.4.2 の場合
基本的には、Kernel 2.4.1 の場合と同じですが、以下の２点が異なります。
・ 「6‑(6) REX‑PCI31用 kernel への変更」を行わなくても、「7. REX‑PCI31/33
用ドライバの確認 (module) は実行できます。
・ モジュールのディレクトリは、/lib/modules/2.4.2/build/dirver/scsi となります。

APH_PCI31_LINUX_000706 (7/8)

他の Linux ディストリビューションについて他の動作確認済みディストリビューションは以下のとおりです。
RedHat 6.1
Kondara MNU/Linux 1.0
VineLinux 2.0
Omoikane GNU/Linux 1.0● 日本語版 RefHat Linux 6.2 の場合、以下の制限があります。
日本語版がインストールされた環境では、本書で説明した手順で kernel を作成しても、正常に構築されません。英語版 RedHat Linux 6.2 環境で kernelを作成する必要があります。
そして、この kernel を退避した後に日本語版 RefHat Linux 6.2 をインストールし、退避した Kernel へ差し替えてください。
● 上記以外の Linux ディストリビューションの情報については、弊社ホームペー
ジでご確認ください。

サポートについて本紙および弊社ホームページに記載のインストール方法のみのサポートを行います。
SCSI 機器の動作方法については、サポートを行いません。
また、各種パソコンとの Linux における検証を行っておりませんので、パソコン環境に対する動作可否についてもお答えできません。
その他ご不明な点につきましては、弊社ホームページの Linux 情報のページからメールにてお問い合わせください。

以上

APH_PCI31_LINUX_000706 (8/8)