Solaris 8 のシステム管理 (追補)

第 18 章 USB デバイスの管理

Solaris 8 4/01 ソフトウェアリリースで、USB デバイスの管理についての章が更新されました。詳細は、次の節を参照してください。

Solaris のデバイス管理についての全般的な情報については、『Solaris のシステム管理 (第 1 巻)』の「デバイスの管理 (概要)」を参照してください。


注 –

最新のマニュアルページを参照するには、man コマンドを使用してください。Solaris 8 Update リリースのマニュアルページには、「Solaris 8 Reference Manual Collection」には記載されていない新しい情報も提供されています。


USB デバイスの概要

Universal Serial Bus (USB) は PC 業界で開発された、周辺機器 (キーボード、マウス、プリンタなど) をシステムに接続するための低コストのソリューションです。

USB コネクタは 1 方向 1 種類のケーブルだけに適合するように設計されています。デバイスはハブデバイスに接続できます。ハブデバイスとは、複数のデバイス (他のハブデバイスも含む) を接続するためのものです。USB が設計された主な目的は、デバイスごとに異なる何種類ものコネクタを減らすことです。つまり、システムの背面パネルの混雑を軽減することです。他にも、USB デバイスを使用すると、次のような利点があります。

Sun Microsystems は次のようなシステムで USB デバイスをサポートします。

次の表に、Solaris 環境でサポートされる USB デバイスを示します。

USB デバイス 

サポートされるシステム 

キーボードとマウス 

ohci(7D) コントローラに基づいた、Sun の USB がサポートされている SPARC システム

uhci(7D) コントローラに基づいた、USB バスを持つ IA システム

オンボードの USB コントローラだけがサポートされます。プラグイン式のホストコントローラ PCI カードはサポートされません。 

大容量ストレージ 

SPARC と IA 

プリンタ 

SPARC と IA 

ハブ 

SPARC と IA 

よく使用される USB 関連の略語

次の表に、Solaris 環境で使用される USB の略語について説明します。USB の構成要素と略語についての詳細は、http://www.usb.org を参照してください。

略語 

説明 

USB 

Universal Serial Bus 

USBA 

Universal Serial Bus Architecture (Solaris) 

USBAI 

USBA Client Driver Interface (Solaris) 

HCD 

USB ホストコントローラドライバ 

USB バスの説明

USB 仕様は、ライセンス料無しで誰でも入手できます。USB 仕様は、バスとコネクタの電気的および機械的なインタフェースを定義します。

図 18–1 USB 物理デバイスの階層

Graphic

USB が採用するトポロジでは、ハブが USB デバイスに接続点を提供します。ホストコントローラには、システム内のすべての USB ポートの原点となるルートハブが含まれます。ハブについての詳細は、USB ホストコントローラとルートハブを参照してください。

上記の例では、1 つのシステムが 3 つのアクティブな USB ポートを持っています。1 番目の USB ポートは Zip ドライブに接続されています。この Zip ドライブにはハブが埋め込まれていないため、他のデバイスは接続できません。2 番目の USB ポートはハブに接続されており、このハブには Jaz ドライブと合成デバイス (キーボードとマウス) が接続されています。このキーボードにはハブが埋め込まれており、そのハブにマウスが接続されています。

次の表に、上記の例におけるデバイスのデバイスツリーパス名を示します。

Zip ドライブ 

/pci@1f,4000/usb@5/storage@1

キーボード 

/pci@1f,4000/usb@5/hub@2/keyboard@1

マウス 

/pci@1f,4000/usb@5/hub@2/mouse@2

Jaz ドライブ 

/pci@1f,4000/usb@5/hub@2/storage@3

プリンタ 

/pci@1f,4000/usb@5/hub@3/printer@1

USB デバイスとドライバ

USB デバイスはいくつかのデバイスクラスに分類されます。各デバイスクラスは対応するドライバを持っています。1 つのクラス内のデバイスは同じデバイスドライバで管理されます。しかし USB 仕様では、特定のクラスに属さない、ベンダー固有のデバイスも許可しています。同じような属性とサービスを持つデバイスはグループ化されます。

Human Interface Device (HID) クラスには、ユーザーが制御するデバイス (キーボード、マウス、ジョイスティックなど) が含まれます。Communication Device クラスには、電話に接続するデバイス (モデムや ISDN インタフェースなど) が含まれます。その他にも、Audio、Monitor、Printer、Storage Device などのデバイスクラスがあります。各 USB デバイスはデバイスのクラスを表す記述子を持っています。デバイスクラスは、そのメンバーが構成とデータ転送に関してどのように動作するべきかを指定します。クラス情報についての詳細は、http://www.usb.org サイトを参照してください。

Solaris USB Architecture (USBA)

USB デバイスは 2 つのレベルのデバイスツリーノードとして表現されます。1 つのデバイスノードが USB デバイス全体を表し、1 つまたは複数の子インタフェースノードがデバイス上にある個々の USB インタフェースを表します。特殊なケースとして、デバイスノードとインタフェースノードが 1 つのノードに結合される場合もあります。

ドライバのバインドは互換性のある名前属性の使用によって実現されます。詳細は、『IEEE 1275 USB binding』の 3.2.2.1 項と『Writing Device Drivers』を参照してください。ドライバは、デバイス全体にバインドしてすべてのインタフェースを制御することも、1 つのインタフェース (キーボードやマウスなど) だけにバインドすることも可能です。デバイス全体にバインドするドライバがベンダーにもクラスにも存在しない場合、汎用 USB マルチインタフェースドライバがデバイスレベルのノードにバインドされます。このドライバは、互換性のある名前属性 (『IEEE 1275 USB binding』の 3.2.2.1 項で定義されている) を使用して、各インタフェースにドライバをバインドしようとします。

図 18–1 には、複合デバイス (ハブとプリンタ) の例が示されています。ハブとプリンタは両方とも同じプラスチック製のケースに入っていますが、異なる USB バスアドレスを持ちます。また、図 18–1 には、合成デバイスの例も示されています。キーボードとコントローラは同じプラスチック製のケースに入っていますが、同じ USB バスアドレスを持ちます。この例では、1 本のケーブルが USB マウスを合成デバイス (キーボードとコントローラ) に接続しています。

Solaris USB Architecture (USBA) は、USB 1.0 および 1.1 の仕様に加え、Solaris ドライバ条件に準拠しています。USBA モデルは Sun Common SCSI Architecture (SCSA) に似ています。USBA とは、汎用 USB トランスポート層という概念をクライアントドライバに提供する薄い層のことです。

SCSA と USBA の違いは、SCSA がバスを検査するときに .conf ファイルを使用するのに対して、USB ハブドライバは自己検査 nexus ドライバであることです。

Solaris 環境における USB について

次の節では、Solaris 環境における USB について知っておく必要のある情報を説明します。

USB キーボードとマウス

Solaris 環境では複数の USB キーボードとマウスをサポートしていないため、USB キーボードとマウスは常に 1 つだけシステムに接続するようにしてください。次の項目の説明も参照してください。

USB ホストコントローラとルートハブ

USB ハブは次のことを行います。

USB ホストコントローラはルートハブという埋め込みハブを持っています。背面パネルに見えるポートはルートハブのポートです。USB ホストコントローラは次のことを行います。

USB ハブデバイス

USB ストレージデバイス

Solaris 8 10/00 リリースから、USB の Zip、Jaz、Clik!、SmartMedia、CompactFlash、および ORB などのリムーバブル大容量ストレージデバイスがサポートされるようになりました。Solaris 環境でサポートされるデバイスの完全なリストについては、scsa2usb(7D) のマニュアルページを参照してください。

これらのデバイスは、ボリューム管理を使用しても使用しなくても管理することができます。ボリューム管理を実行している状態でのデバイス管理についての情報は、vold(1M) のマニュアルページを参照してください。

vold を実行している状態で USB 大容量ストレージデバイスを管理する

Solaris 共通デスクトップ環境 (CDE) が実行されている場合は、USB リムーバブル大容量ストレージデバイスは、CDE ファイルマネージャのコンポーネントであるリムーバブルメディア・マネージャによって管理されます。CDE ファイルマネージャについての詳細は、dtfile(1) のマニュアルページを参照してください。


注 –

この節に記載されているマニュアルページを表示するには、MANPATH 変数に /usr/dt/man を含める必要があります。これらのコマンドを使用するには、パスに /usr/dt/bin を含め、さらに CDE を実行している必要があります。また、これらのコマンドをリモートで使用する場合は、DISPLAY 変数を設定する必要があります。


次の表に、リムーバブルメディア・マネージャが CDE 環境からストレージデバイスを管理する際に使用するコマンドを示します。

コマンド 

タスク 

sdtmedia_format(1)

USB デバイスのフォーマットおよびラベル付けを行う 

sdtmedia_prop(1)

デバイスのプロパティを表示する  

sdtmedia_prot(1)

デバイスのアクセス権を変更する 

sdtmedia_slice(1)

デバイス上のスライスを作成または変更する 

USB デバイスのフォーマットが終了すると、通常は /rmdisk/label ディレクトリの下にマウントされます。リムーバブルストレージデバイスの構成についての詳細は、rmmount.conf(4) または vold.conf(4) のマニュアルページを参照してください。

以下の手順は、ボリューム管理を実行している状態で USB 大容量ストレージデバイスを管理する方法を示しています。デバイスノードは /vol/dev ディレクトリの下に作成されます。詳細は、scsa2usb(7D) のマニュアルページを参照してください。以下の手順では、ホットプラグ可能な USB 大容量ストレージデバイスを追加および取り外す方法についても記載しています。デバイスのホットプラグとは、オペレーティングシステムをシャットダウンすることなくあるいはシステムの電源を切ることなく、デバイスを追加したり取り外したりすることを指します。

vold を実行している状態で USB 大容量ストレージデバイスをマウントまたはマウント解除するには

  1. すべてのリムーバブル大容量ストレージデバイス (USB 大容量ストレージデバイスを含む) について、デバイスの別名を表示します。


    $ eject -n
    .
    .
    .
    rmdisk0 -> /vol/dev/rdsk/c4t0d0/clik40    (Generic USB storage)
    cdrom0 -> /vol/dev/rdsk/c0t6d0/audio_cd   (Generic CD device)
    zip1 -> /vol/dev/rdsk/c2t0d0/fat32        (USB Zip device)
    zip0 -> /vol/dev/rdsk/c1t0d0/zip100       (USB Zip device)
    jaz0 -> /vol/dev/rdsk/c3t0d0/jaz1gb       (USB Jaz device)
  2. 上記のようにリストされたデバイス別名を使用して、USB 大容量ストレージデバイスをマウントします。


    $ volrmmount -i device-alias
    

    次の例では、USB Jaz ドライブを /rmdisk/jaz0 の下にマウントします。


    $ volrmmount -i jaz0
    

  3. USB ストレージデバイスをマウント解除します。


    $ volrmmount -e device-alias
    

    次の例では、USB Zip ドライブを /rmdisk/zip0 からマウント解除します。


    $ volrmmount -e zip0
    
  4. USB デバイスを、汎用の USB ドライブから取り出します。


    $ eject device-alias
    

    次に例を示します。


    $ eject rmdisk0
    

    注 –

    eject コマンドは、デバイスがまだマウント解除されていない場合は、そのデバイスのマウント解除も行います。このコマンドはまた、そのデバイスにアクセスするアクティブなアプリケーションがある場合は、それらを終了させます。


vold の実行中にホットプラグ可能な USB 大容量ストレージデバイスを取り外すには

以下の手順では、vold の実行中にホットプラグ可能な USB デバイスを取り外す例として、Zip ドライブを使用しています。

  1. デバイスをマウント解除します。


    $ volrmmount -e zip0
    
  2. (オプション) そのデバイスを使用しているアクティブなアプリケーションがある場合は、それらを終了させます。

  3. デバイスを取り出します。


    $ eject zip0
    
  4. スーパーユーザーになり、vold を停止します。


    # /etc/init.d/volmgt stop
    
  5. USB 大容量ストレージデバイスを取り外します。

  6. vold を開始します。


    # /etc/init.d/volmgt start
    

vold の実行中にホットプラグ可能な USB 大容量ストレージデバイスを追加するには

以下の手順は、vold の実行中にホットプラグ可能な USB デバイスを追加する方法を示します。

  1. USB 大容量ストレージデバイスを追加します。

  2. vold を再起動します。


    # pkill -HUP vold
    
  3. デバイスが追加されたことを確認します。


    $ ls device-alias
    

vold を使用せずに USB 大容量ストレージデバイスを管理する

USB 大容量ストレージデバイスは、ボリュームマネージャ (vold) を使用せずに管理することもできます。ボリュームマネージャを使用しないようにする方法は、次の 2 とおりあります。

以下の手順は、vold(1M) を使用せずに USB 大容量ストレージデバイスを管理する方法を示しています。デバイスノードは、文字型デバイスについては /dev/rdsk ディレクトリ、ブロック型デバイスについては /dev/dsk ディレクトリの下に作成されます。詳細は、scsa2usb(7D) のマニュアルページを参照してください。

vold を使用せずに USB 大容量ストレージデバイスをマウントまたはマウント解除するには

  1. スーパーユーザーになります。

  2. USB 大容量ストレージデバイスをマウントします。


    # mount -F fs-type /dev/dsk/cntndnsn /mount-point
    

    デバイスが読み取り専用の場合は、このコマンドは失敗します。CD-ROM デバイスには次のコマンドを使用します。


    # mount -F fs-type -o ro /dev/dsk/cntndnsn /mount-point
    

    たとえば、次のようにします。


    # mount -F hsfs -o ro /dev/dsk/c0t6d0s2 /mnt
    
  3. USB 大容量ストレージデバイスをマウント解除します。


    # umount /mount-point
    
  4. デバイスを取り出します。


    # eject /dev/[r]dsk/cntndnsn
    

vold を使用せずにホットプラグ可能な USB 大容量ストレージデバイスを取り外すには

以下の手順は、vold を使用せずにホットプラグ可能な USB デバイスを取り外す方法を示しています。

  1. スーパーユーザーになります。

  2. ホットプラグ可能な USB デバイスを取り外します。

    1. デバイスをマウント解除します。


      # umount /mount-point
      
    2. (オプション) そのデバイスを使用しているアクティブなアプリケーションがある場合は、それらを停止します。

    3. デバイスを取り外します。

vold を使用せずにホットプラグ可能な USB 大容量ストレージデバイスを追加するには

以下の手順は、vold を使用せずにホットプラグ可能な USB デバイスを追加する方法を示しています。

  1. ホットプラグ可能な USB デバイスを USB ポートに追加します。

  2. USB デバイスが追加されたことを確認します。


    $ ls /dev/rdsk/cntndnsn
    

SPARC: USB CD 上にデータ作成するまたは USB CD からデータを取得するには

cdrw コマンドを使用して、オーディオ CD 上にデータを作成したりオーディオ CD からデータを取得したりできます。cdrw コマンドは、Software Supplement for the Solaris 8 1/01 Operating Environment CD (サプリメント CD) で入手できます。

このコマンドの使用については、『Solaris on Sun Hardware Reference Manual Supplement』の cdrw のマニュアルページを参照してください。

USB CD 上へデータを作成するまたは USB CD からデータを取得するための準備を行うには

cdrw コマンドは、vold が実行されている状態でも実行されていなくても機能することができます。詳細は、cdrw(1) および mkisofs(1M) のマニュアルページを参照してください。

  1. CD を CD-RW デバイスに挿入します。

    CD は、そのデバイスが読むことができるものであれば、どんな種類の CD でもかまいません。

  2. デバイスのリストを表示して、その CD-RW ドライブが正しく接続されていることを確認します。


    # cdrw -l
        Node              |    Connected Device            |  Device type
    ----------------------+--------------------------------+-----------------
     /dev/rdsk/c0t0d0s2   | SONY     CD-RW  CRX120E   1.0k | CD Reader/Writer
  3. (オプション) リスト内にそのドライブが表示されていない場合は、システムがそのデバイスを認識するよう再構成ブートを行う必要があることもあります。


    # touch /reconfigure
    # init 6
    

SPARC のみ: USB 電源管理

システムが電源管理を有効にしている場合、USB のフレームワークはすべてのデバイスを電源管理しようと最大限に努力します。USB デバイスの電源管理には、デバイスが接続されているポートのハブドライバによる中断も含まれます。リモートウェイクアップ (呼び起こし) をサポートするかしないかは、デバイスによって異なります。デバイスがリモートウェイクアップをサポートしている場合は、イベントの発生時 (たとえば、マウスが移動したときなど) に、接続されているハブをウェイクアップします。アプリケーションが入出力を送信した場合も、ホストシステムはデバイスをウェイクアップできます。

リモートウェイクアップ機能がサポートされている場合、すべての HID (キーボードやマウスなど)、ハブ、およびストレージデバイスは、デフォルトで電源管理されます。USB プリンタが電源管理されるのは、2 つの印刷ジョブ間だけです。

電源消費を削減するために電源管理を行う場合は、まず、USB リーフデバイスの電源が切断され、しばらくしてから、親ハブの電源が切断されます。当該ハブのポートに接続されているすべてのデバイスの電源が切断されると、しばらくしてから、ハブの電源が切断されます。最も効率的な電源管理は、あまり多くのハブを多段接続しないことです。

USB デバイスのホットプラグ

USB デバイスは、プラグインするとすぐにシステムのデバイス階層に表示されます(prtconf(1M) コマンドで確認)。また、デバイスが使用中でない限り、USB デバイスを取り外すとシステムのデバイス階層から消えます。

使用中の USB デバイスを取り外した場合、ホットプラグの動作は少しだけ異なります。使用中の USB デバイスを取り外した場合、デバイスノードは残り、このデバイスを制御しているドライバはデバイス上のすべての動作を停止します。それ以降、このデバイスに発行される新しい入出力動作はエラーで戻されます。

このような場合、システムは元のデバイスを接続するようにユーザーにプロンプトを表示します。間違って使用中の USB デバイスを取り外してしまった場合は、次のようにして回復します。

  1. 元のデバイスを同じポートに接続します。

  2. そのデバイスを使用しているアプリケーションを停止します。

  3. デバイスを取り外します。

元のデバイスが再びプラグインされるまで、USB ポートは使用できません。デバイスが使用できない場合は、USB ポートは次にリブートするまで使用できません。


注 –

アクティブな、つまり開いているデバイスを削除すると、データの整合性が損なわれる可能性があります。デバイスを取り外す前には、必ず、デバイスを閉じるようにしてください。ただし、コンソールキーボードとマウスは例外で、アクティブなときでも移動することができます。


USB ケーブル

市販されている USB ケーブルエクステンダは絶対に使用しないでください。デバイスを接続するときは、必ず、ハブと充分な長さのあるケーブルを使用してください。USB デバイスを接続するときは、必ず、フルレイト (12M ビット/秒) の 20/28 AWG ケーブルを使用してください。

USB プリンタのサポート

Solaris 8 10/00 リリースから、Solaris の印刷マネージャを使用して USB ポート付きの SPARC システムに接続されている USB プリンタをセットアップできるようになりました。Solaris 8 4/01 リリースからは、IA システムにも USB プリンタをセットアップできるようになりました。

USB プリンタ用の新しい論理デバイス名は次のとおりです。


/dev/printers/[0...N]*

したがって、USB プリンタをプリンタサーバーに追加するときは、「新しいローカルプリンタを設定」画面の「プリンタポート」で、上記デバイスの 1 つを USB プリンタ用に選択します。Solaris 印刷マネージャを使用してプリンタを設定する方法についての詳細は、『Solaris のシステム管理 (第 2 巻)』を参照してください。

新しい Solaris USB プリンタドライバは USB プリンタクラス準拠のプリンタをすべてサポートしますが、推奨される PostScriptTM プリンタについては、usbprn(7D) のマニュアルページを参照してください。

usbprn ドライバは PostScript 以外のプリンタ (つまり、GhostScript などの Sun 社製以外の PostScript 変換パッケージを使用するプリンタ) にも準拠しています。変換パッケージは Solaris 8 Software Companion CD から入手できます。Solaris 8 Software Companion CD の入手方法については、http://www.sun.com/software/solaris/binaries/package.html を参照してください。

USB プリンタのホットプラグに関する情報と注意については、usbprn(7D) のマニュアルページの「NOTES」と「DIAGNOSTICS」の節を参照してください。