pkg://SCSI-Programming-HOWTO.tar.gz:32672/SCSI-Programming-HOWTO-4.html
downloads
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
<TITLE>The Linux SCSI programming HOWTO: 使用にあたって必要なものは?</TITLE>
<LINK HREF="SCSI-Programming-HOWTO-5.html" REL=next>
<LINK HREF="SCSI-Programming-HOWTO-3.html" REL=previous>
<LINK HREF="SCSI-Programming-HOWTO.html#toc4" REL=contents>
</HEAD>
<BODY>
<A HREF="SCSI-Programming-HOWTO-5.html">次のページ</A>
<A HREF="SCSI-Programming-HOWTO-3.html">前のページ</A>
<A HREF="SCSI-Programming-HOWTO.html#toc4">目次へ</A>
<HR>
<H2><A NAME="s4">4. 使用にあたって必要なものは?</A></H2>
<P>
<H2><A NAME="ss4.1">4.1 カーネルのコンフィギュレーション</A>
</H2>
<P>
<P>あなたが Linux によってサポートされている SCSI コントローラを持ってい
なければならないのは明らかです。加えて、あなたのカーネルに汎用 SCSI サ
ポートだけでなくコントローラのサポートも組込まねばなりません。 Linux
カーネルの(/usr/src/linux での <CODE>make config</CODE> による)コンフィギュレー
ションは典型的には次のようになります。
<P>
<BLOCKQUOTE><CODE>
<PRE>
...
*
* SCSI support
*
SCSI support? (CONFIG_SCSI) [n] y
*
* SCSI support type (disk, tape, CDrom)
*
...
Scsi generic support (CONFIG_CHR_DEV_SG) [n] y
*
* SCSI low-level drivers
*
...
</PRE>
</CODE></BLOCKQUOTE>
<P>もし利用できるならば、代わりにモジュールを作成してもかまいません。
[訳注]
<PRE>
make menuconfig
</PRE>
を使用する方が普通は楽です。
<P>
<H2><A NAME="ss4.2">4.2 デバイスファイル</A>
</H2>
<P>
<P>汎用 SCSI ドライバは、他の SCSI デバイスドライバによって用いられるものとは別の、固有のデバイスファイルを使用します。
それらのデバイスファイルは、通常は <CODE>/dev</CODE>ディレクトリにある、<CODE>MAKEDEV</CODE> スクリプトによって生成することができます。<CODE>MAKEDEV sg</CODE>を走らせると以下のファイルが作成されます:
<P>
<BLOCKQUOTE><CODE>
<PRE>
crw------- 1 root system 21, 0 Aug 20 20:09 /dev/sga
crw------- 1 root system 21, 1 Aug 20 20:09 /dev/sgb
crw------- 1 root system 21, 2 Aug 20 20:09 /dev/sgc
crw------- 1 root system 21, 3 Aug 20 20:09 /dev/sgd
crw------- 1 root system 21, 4 Aug 20 20:09 /dev/sge
crw------- 1 root system 21, 5 Aug 20 20:09 /dev/sgf
crw------- 1 root system 21, 6 Aug 20 20:09 /dev/sgg
crw------- 1 root system 21, 7 Aug 20 20:09 /dev/sgh
| |
major, minor device numbers
メジャー, マイナー デバイス番号
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>これらは直にアクセスするためにキャラクタデバイスであることに注意してく
ださい。システムによってはこれらのデバイスは <CODE>/dev/{sg0,
sg1,...}</CODE> と呼ばれているかもしれませんが、インストールしたもの(訳
注:Slackware,RedHat,Debianなどのパッケージ)に依存しますので、以下の例
は適当に読み換えてください。
<P>
<H2><A NAME="ss4.3">4.3 デバイスの対応付け</A>
</H2>
<P>
<P>これらのデバイスファイルは SCSI バス上の SCSI ID/LUN に対して動的に対
応付けられます(LUN = ロジカルユニット)。この対応付けでは低位の LUN/ID/
バス から始まって、SCSI のスキャンの時点にみつけられた各 SCSI バス上の
各装置の各 LUN に対して連続的にデバイス(ファイルのマイナー番号)が
割当てられます。これは最初の SCSI コントローラから始まり、全ての以降の
コントローラによって中断されない限り継続します。これは現在のところ
SCSI ドライバの初期化においてなされます。
<P>
<P>例えば、三つの SCSI 装置が最初の SCSI バス上の ID 1,3,5 につながっていると
しましょう(それぞれが一つのLUNを持っています)。
すると、結果として以下のような対応付けがなされるでしょう:
<P>
<BLOCKQUOTE><CODE>
<PRE>
/dev/sga -> SCSI id 1
/dev/sgb -> SCSI id 3
/dev/sgc -> SCSI id 5
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>もし新しい装置を ID 4 で追加したならば、(次回の再スキャン後の)対応付けは:
<P>
<BLOCKQUOTE><CODE>
<PRE>
/dev/sga -> SCSI id 1
/dev/sgb -> SCSI id 3
/dev/sgc -> SCSI id 4
/dev/sgd -> SCSI id 5
</PRE>
</CODE></BLOCKQUOTE>
<P>となります。
<P>
<P>ID 5 に関する変化に注意しましょう。対応するデバイス(ファイル)はもはや
<CODE>/dev/sgc</CODE>ではなくて、今や<CODE>/dev/sgd</CODE>の下に対応させられて
います。
<P>
<P>幸いにも、新しいカーネルでは順番を変更することができます。
<P>
<H3>SCSI 装置の動的な挿入と削除</H3>
<P>
<P>新しいカーネルと<CODE>/proc</CODE>ファイルシステムが走っているならば、使用
されていない装置をシステム稼働中に取り外したり導入することができます。
<P>
<P>SCSI 装置を取り外すには:
<BLOCKQUOTE><CODE>
<PRE>
echo "scsi remove-single-device a b c d" > /proc/scsi/scsi
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>同様にして、SCSI 装置を追加するには、
<BLOCKQUOTE><CODE>
<PRE>
echo "scsi add-single-device a b c d" > /proc/scsi/scsi
</PRE>
</CODE></BLOCKQUOTE>
とします。
<P>
<P>ここで
<BLOCKQUOTE><CODE>
<PRE>
a == ホストアダプタの番号 (最初のものが 0)
b == ホストアダプタ上の SCSI チャネル (最初のものが 0)
c == ID
d == LUN (最初のものが 0)
</PRE>
</CODE></BLOCKQUOTE>
<P>
<P>ですから前述の例における <CODE>/dev/sgc</CODE> と <CODE>/dev/sgd</CODE> の対応付けを入れ替えるためには、次のようにすればできるでしょう。
[訳注:<CODE>cat /proc/scsi/scsi</CODE>を実行すれば、これらの4つの値になにを設定すればいいかがつかめると思います。]
<P>
<BLOCKQUOTE><CODE>
<PRE>
echo "scsi remove-single-device 0 0 4 0" > /proc/scsi/scsi
echo "scsi remove-single-device 0 0 5 0" > /proc/scsi/scsi
echo "scsi add-single-device 0 0 5 0" > /proc/scsi/scsi
echo "scsi add-single-device 0 0 4 0" > /proc/scsi/scsi
</PRE>
</CODE></BLOCKQUOTE>
<P>なぜなら、汎用デバイスはそれらが挿入された順番で対応付けられるからです。
<P>
<P>さらに装置を SCSI バスに追加するときは、新しい装置には登録できる予備が
限られていることを心に留めておきましょう。このメモリはブート時に割当て
られ、二つの装置を加えるための余地があります。
<P>[訳注]initrd機構と組み合わせることにより、この仕組みを用いて機器構成の変化に対し柔軟なシステムを構築することができるでしょう。
<P>
<P>
<HR>
<A HREF="SCSI-Programming-HOWTO-5.html">次のページ</A>
<A HREF="SCSI-Programming-HOWTO-3.html">前のページ</A>
<A HREF="SCSI-Programming-HOWTO.html#toc4">目次へ</A>
</BODY>
</HTML>