この章では、Solaris が動作するシステム上で USB デバイスを管理する手順について説明します。
この章で説明する手順は、次のとおりです。
Solaris 8 10/00 リリースから、USB の Zip、Jaz、Clik!、SmartMedia、CompactFlash、および ORB などのリムーバブル大容量ストレージデバイスがサポートされるようになりました。Solaris 環境でサポートされるデバイスについては、scsa2usb(7D) のマニュアルページを参照してください。
これらのデバイスは、ボリューム管理を実行している場合でも実行していない場合でも管理することができます。ボリューム管理を実行している場合のデバイス管理については、 vold(1M) を参照してください。
次の節では、Solaris 環境で 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) のマニュアルページを参照してください。
次の手順は、ボリューム管理を使用して USB 大容量ストレージデバイスを管理する方法を示しています。デバイスノードは /vol/dev ディレクトリの下に作成されます。詳細は、scsa2usb(7D) のマニュアルページを参照してください。次の手順では、ホットプラグ可能な USB 大容量ストレージデバイスを追加したり取り外したりする方法についても説明しています。デバイスのホットプラグとは、オペレーティングシステムをシャットダウンしたりシステムの電源を切ったりしないで、デバイスを追加したり取り外したりすることを指します。
すべてのリムーバブル大容量ストレージデバイス (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) |
上記のようにリストされたデバイス別名を使用して、USB 大容量ストレージデバイスをマウントします。
$ volrmmount -i device-alias |
次の例では、USB Jaz ドライブを /rmdisk/jaz0 の下にマウントします。
$ volrmmount -i jaz0 |
USB 大容量ストレージデバイスをマウント解除します。
$ volrmmount -e device-alias |
次の例では、USB Zip ドライブを /rmdisk/zip0 からマウント解除します。
$ volrmmount -e zip0 |
USB デバイスを、汎用 USB ドライブから取り出します。
$ eject device-alias |
たとえば、次のように入力します。
$ eject rmdisk0 |
デバイスのマウントが解除されていない場合、eject コマンドは、そのデバイスのマウント解除も行います。また、そのデバイスにアクセスするアプリケーションが実行されている場合は、そのアプリケーションを終了させます。
次の手順では、vold を使用してホットプラグ可能な USB デバイスを取り外す例として、Zip ドライブを使用しています。
デバイスをマウント解除します。
$ volrmmount -e zip0 |
そのデバイスを使用しているアプリケーションが実行中の場合は、そのアプリケーションを停止します。
デバイスを取り出します。
$ eject zip0 |
スーパーユーザーになり、vold を停止します。
# /etc/init.d/volmgt stop |
USB 大容量ストレージデバイスを取り外します。
vold を開始します。
# /etc/init.d/volmgt start |
次の手順は、vold を使用してホットプラグ可能な USB デバイスを追加する方法を示します。
USB 大容量ストレージデバイスは、ボリュームマネージャ (vold) を使用しないで管理することもできます。ボリュームマネージャを使用しないようにする方法は、次の 2 とおりあります。
次のコマンド実行して、vold を停止します。
# /etc/init.d/volmgt stop |
vold は実行したまま、USB 大容量ストレージデバイスを vold に登録しないようにします。/etc/vold.conf ファイル内の次に示す行に # マークを挿入してコメントにし、USB 大容量ストレージデバイスのボリュームマネージャの登録を外します。次に例を示します。
# use rmdisk drive /dev/rdsk/c*s2 dev_rmdisk.so rmdisk%d |
上記のようにコメントにした後、vold を再起動します。
# /etc/init.d/volmgt start |
この行をコメントにすると、そのシステム内に他の SCSI、ATAPI Zip、または Jaz リムーバブルデバイスがある場合、それらのデバイスの vold の登録も無効になります。
詳細は、 vold.conf(4) のマニュアルページを参照してください。
次の手順は、vold(1M) を使用しないで USB 大容量ストレージデバイスを管理する方法を示しています。デバイスノードは、文字型デバイスについては /dev/rdsk ディレクトリ、ブロック型デバイスについては /dev/dsk ディレクトリの下に作成されます。詳細は、scsa2usb(7D) のマニュアルページを参照してください。
スーパーユーザーになります。
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 |
USB 大容量ストレージデバイスをマウント解除します。
# umount /mount-point |
デバイスを取り出します。
# eject /dev/[r]dsk/cntndnsn |
次の手順は、vold を使用しないでホットプラグ可能な USB デバイスを取り外す方法を示しています。
次の手順は、 vold を使用しないでホットプラグ可能な USB デバイスを追加する方法を示しています。
cdrw コマンドを使用して、オーディオ CD 上にデータを作成したりオーディオ CD からデータを抽出したりすることができます。cdrw コマンドは、Software Supplement for the Solaris 8 Operating Environment 10/01 CD に含まれています。
SCSI、ATAPI、USB の CD デバイスがサポートされます。現在のところ、Sun がサポートする CD-RW デバイスは、Sony Spress USB CD-RW のみです。
CD-R や CD-RW ドライブは、MMC 準拠であることが必要です。
このコマンドの使用法についての詳細は、『Solaris on Sun Hardware Reference Manual Supplement』の cdrw マニュアルページを参照してください。
cdrw コマンドは、 vold が実行されている状態でも実行されていない状態でも機能します。詳細は、cdrw(1) および mkisofs(1M) のマニュアルページを参照してください。
CD を CD-RW デバイスに挿入します。
CD は、デバイスが読み取ることができるものであれば、どんな種類の CD でもかまいません。
デバイスのリストを表示して、その CD-RW ドライブが正しく接続されていることを確認します。
# cdrw -l Node | Connected Device | Device type ----------------------+--------------------------------+----------------- /dev/rdsk/c0t0d0s2 | SONY CD-RW CRX120E 1.0k | CD Reader/Writer |
(省略可能) そのドライブがリスト中にない場合、システムがそのデバイスを認識するように再構成ブートを行う必要があることがあります。
# touch /reconfigure # init 6 |
USB カメラを差し込み、電源をオンにします。
USB サブシステムおよび SCSA サブシステムは、カメラ用に論理デバイスを作成します。カメラが差し込まれると、コンソールウィンドウと /var/adm/messages ファイルにメッセージが出力されます。
コンソールウィンドウの出力を確認します。
出力表示を確認すると、どの論理デバイスが作成されたかを確認でき、そのデバイスを使用してイメージにアクセスできます。出力表示は次のようになります。
Jul 15 09:53:35 buffy usba:[ID 349649 kern.info] OLYMPUS, C-3040ZOOM, 000153719068 Jul 15 09:53:35 buffy genunix:[ID 936769 kern.info] scsa2usb1 is /pci@0,0/pci925,1234@7,2/storage@2 Jul 15 09:53:36 buffy scsi:[ID 193665 kern.info] sd3 at scsa2usb1: target 0 lun 0 |
USB カメラファイルシステムをマウントします。
ほとんどの場合、カメラのファイルシステムは PCFS ファイルシステムです。作成されたデバイス上にファイルシステムをマウントするために、ディスクを表すスライスを指定する必要があります。スライスは通常、SPARC システムでは s0、Intel システムでは p0 です。
たとえば、Intel システムにファイルシステムをマウントするには、次のコマンドを実行します。
% mount -F pcfs /dev/dsk/c3t0d0p0:c /mnt |
SPARC システムにファイルシステムをマウントするには、次のコマンドを実行します。
% mount -F pcfs /dev/dsk/c3t0d0s0:c /mnt |
ファイルシステムのマウントについての詳細は、『Solaris のシステム管理 (第 1 巻)』の「ファイルシステムのマウントとマウント解除 (手順)」を参照してください。
イメージが使用可能であることを確認します。
たとえば、次のように入力します。
% ls /mnt/DCIM/100OLYMP/ P7220001.JPG* P7220003.JPG* P7220005.JPG* P7220002.JPG* P7220004.JPG* P7220006.JPG* |
USB カメラが作成したイメージファイルを表示します。
% /usr/dt/bin/sdtimage & |
カメラを切り離す前に、ファイルシステムをマウント解除します。
次のコマンドを実行して、ファイルシステムをマウント解除します。
% umount /mnt |
カメラの電源をオフにし、切り離します。
この Solaris リリースでは、2 つの連携するドライバ、usb_ac および usb_as の実装によって、USB オーディオサポートを提供しています。オーディオコントロールドライバである usb_ac は USBA (Solaris USB Architecture) 準拠のクライアントドライバで、ユーザーアプリケーションのインタフェースを制御します。オーディオストリーミングドライバである usb_as は、再生中および録音中にオーディオデータメッセージを処理し、サンプル周波数と精度を設定し、usb_ac ドライブからのエンコーディング要求を処理します。
どちらのドライバも、USB オーディオクラス 1.0 仕様に準拠しています。
Solaris では、再生専用または録音専用の外部 USB オーディオデバイスをサポートします。オンボードの USB オーディオデバイスはサポートされません。サポートされるオーディオデータ形式については、usb_ac のマニュアルページを参照してください。
音量コントロール、低音コントロール、高音コントロールが 1 つである USB オーディオデバイスだけがサポートされます。USB オーディオクラス仕様についての詳細は、http://www.usb.org を参照してください。
USB オーディオデバイスは、USB コネクタのある SPARC Ultra および Intel プラットフォームでサポートされます。
ホットプラグ可能な USB オーディオデバイスがサポートされます。
主オーディオデバイスは、/dev/audio です。次のコマンドを使用して、/dev/audio が USB オーディオを指しているかを確認できます。
% mixerctl Device /dev/audioctl: Name = USB Audio Version = 1.0 Config = external Audio mixer for /dev/audioctl is enabled |
使用する USB オーディオデバイスを接続した後、 audioplay コマンドおよび audiorecord コマンドを使用して、次のファイルにアクセスします。
/dev/sound/N |
AUDIODEV 環境変数を設定するか、audioplay コマンドおよび audiorecord コマンドで -d オプションを指定して、特定のオーディオデバイスを選択できます。ただし、/dev/audio をオーディオファイルとしてハードコードしているアプリケーションでは AUDIODEV は動作しません。
USB オーディオデバイスを差し込むと、/dev/audio が使用中でない限り、自動的にそれが主オーディオデバイス /dev/audio になります。オンボードのオーディオから USB オーディオへ、および USB オーディオからオンボードのオーディオへ /dev/audio を変更する方法については、主 USB オーディオデバイスを変更するには および usb_ac(7D) のマニュアルページを参照してください。
USB オーディオデバイスがシステムに差し込まれると、それが主オーディオデバイス /dev/audio になります。そのデバイスは、システムをリブートした後でも、主オーディオデバイスのままです。USB オーディオデバイスが追加で差し込まれた場合、最後に差し込まれたデバイスが主オーディオデバイスになります。
USB オーディオデバイスに関するトラブルシューティングについての詳細は、usb_ac(7D) のマニュアルページを参照してください。
次の手順で、ホットプラグ可能な USB オーディオデバイスを追加します。
USB スピーカとマイクを差し込みます。
主オーディオデバイス /dev/audio は通常、オンボードのオーディオを指します。USB オーディオデバイスを接続した後、/dev/audio は /dev/sound ディレクトリで認識される USB オーディオデバイスを指します。
作成されたオーディオデバイスファイルを確認します。
% ls /dev/sound 0 0ctl 1 1ctl 2 2ctl |
左右の USB スピーカをテストします。
% cd /usr/demo/SOUND/sounds % audioplay -d /dev/sound/1 -b 100 spacemusic.au % audioplay -d /dev/sound/1 -b -100 spacemusic.au |
USB マイクをテストします。
% cd $HOME/au % audiorecord -d /dev/sound/2 -p mic -t 30 test.au |
この節では、USB オーディオデバイスに関する問題に対処する方法を説明します。
オーディオデバイスを操作するときは、オーディオデバイスの所有権に関する、次に挙げる点に注意してください。
USB オーディオデバイスを差し込む時にコンソールからログインしていると、コンソールが /dev/* エントリの所有者になります。つまり、コンソールでログインしている限り、オーディオデバイスを使用できることになります。
USB オーディオデバイスを差し込む時にコンソールにログインしていない場合、root がそのデバイスの所有者になります。ただし、その後にコンソールにログインして USB オーディオデバイスにアクセスしようとすると、デバイスの所有権はコンソールに変更されます。詳細は、logindevperm(4) のマニュアルページを参照してください。
リモートから rlogin コマンドでログインして USB オーディオデバイスにアクセスしようとした場合は、所有権は変更されません。たとえば、権限のないユーザーが、他の人の所有するマイクを通して行われる会話を聞くことはできません。
この手順は、すでに USB オーディオデバイスが接続されていることを前提としています。
現在のオーディオデバイスのリンク状態を識別します。
たとえば、次のように入力します。
% ls -lt /dev/audio* lrwxrwxrwx 1 root root 7 Jul 23 15:41 /dev/audio -> sound/0 lrwxrwxrwx 1 root root 10 Jul 23 15:41 /dev/audioctl -> sound/0ctl % ls -lt /dev/sound/* lrwxrwxrwx 1 root other 66 Jul 23 14:21 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root other 69 Jul 23 14:21 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl % |
主オーディオデバイス /dev/audio は、現在オンボードのオーディオ、/dev/sound/0 を指しています。
(省略可能) 新しい USB オーディオデバイスを追加します。
システムの新しいオーディオリンクを調べます。
たとえば、次のように入力します。
% ls -lt /dev/audio* lrwxrwxrwx 1 root root 7 Jul 23 15:46 /dev/audio -> sound/1 lrwxrwxrwx 1 root root 10 Jul 23 15:46 /dev/audioctl -> sound/1ctl % ls -lt /dev/sound/* lrwxrwxrwx 1 root root 74 Jul 23 15:46 /dev/sound/1 -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,audio lrwxrwxrwx 1 root root 77 Jul 23 15:46 /dev/sound/1ctl -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud... lrwxrwxrwx 1 root other 66 Jul 23 14:21 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root other 69 Jul 23 14:21 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl % |
主オーディオデバイス /dev/audio が、新しく差し込まれた USB オーディオデバイスの /dev/sound/1 を指していることがわかります。
ここで USB オーディオデバイスを取り外しても、主オーディオデバイス /dev/audio はオンボードのオーディオには戻りません。主オーディオデバイスをシステムにオンボードのオーディオへ戻す方法については、次の手順を参照してください。
prtconf コマンドを使用して USB デバイス情報を参照して、システム上の USB オーディオデバイスを調べることもできます。
% prtconf . . . usb, instance #0 hub, instance #0 mouse, instance #0 keyboard, instance #1 device, instance #0 sound-control, instance #0 sound, instance #0 input (driver not attached). . . . |
USB オーディオデバイスを取り外すかまたは変更して、特定のオーディオデバイス 1 つを主オーディオデバイスにしたい場合は、次の手順を実行してください。この手順では、例として主オーディオデバイスをオンボードのオーディオデバイスに変更します。
スーパーユーザーになります。
オーディオアプリケーションをすべて閉じます。
オーディオドライバおよび USB ドライバが読み込まれているかを調べます。
# modinfo | grep -i audio 124 780e6a69 bb6e - 1 audiosup (Audio Device Support 1.12) # modinfo | grep -i usb 48 13dba67 18636 199 1 ohci (USB OpenHCI Driver 1.31) 49 78020000 1dece - 1 usba (USBA:USB Architecture 1.37) 50 12e5f1f 35f 195 1 hubd (USB Hub Driver 1.4) 51 13ef53d 5e26 194 1 hid (USB HID Client Driver 1.16) 54 13f67f2 1b42 10 1 usbms (USB mouse streams 1.6) 56 127bbf0 2c74 11 1 usbkbm (USB keyboard streams 1.17) # |
オンボードのオーディオドライバを読み込んで再接続します。
# devfsadm -i audiocs |
主オーディオデバイスのリンクがオンボードのオーディオを指していることを確認します。
# ls -lt /dev/audio* lrwxrwxrwx 1 root other 7 Jul 23 15:49 /dev/audio -> sound/0 lrwxrwxrwx 1 root other 10 Jul 23 15:49 /dev/audioctl -> sound/0ctl # ls -lt /dev/sound/* lrwxrwxrwx 1 root other 66 Jul 23 14:21 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root other 69 Jul 23 14:21 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audioctl # |
オンボードのオーディオが主オーディオデバイスになっていることを確認します。
% audioplay /usr/demo/SOUND/sounds/bark.au |
audioplay コマンドは、デフォルトのオンボードのオーディオデバイスを返します。
(省略可能) 別の USB オーディオデバイスを差し込む前に、読み込み解除できるオーディオドライバをすべて読み込み解除します。
すべてのオーディオアプリケーションを閉じます。
オーディオドライバ情報を表示して、オーディオドライバが読み込まれていないことを確認します。
# modinfo | grep -i audio 60 78048000 bb6e - 1 audiosup (Audio Device Support 1.12) 61 78152000 39a97 - 1 mixer (Audio Mixer 1.49) 62 78118000 bf9f - 1 amsrc1 (Audio Sample Rate Conv.#1 1.3) 128 7805e000 14968 54 1 audiocs (CS4231 mixer audio driver 1.21) # |
オーディオドライバを読み込み解除します。
# modunload -i 0 # modinfo | grep -i audio 60 78048000 bb6e - 1 audiosup (Audio Device Support 1.12) 61 78152000 39a97 - 1 mixer (Audio Mixer 1.49) # |
この時点で、オンボードのオーディオドライバ audiocs は読み込み解除され、オープンすることはできません。ただし、主オーディオデバイスの /dev/audio は、アプリケーションによって開かれている場合は何も変化しません。
(省略可能) USB オーディオデバイスを差し込みます。
(省略可能) 新しいオーディオリンクを調べます。
% ls -lt /dev/audio* lrwxrwxrwx 1 root root 7 Jul 23 16:12 /dev/audio -> sound/1 lrwxrwxrwx 1 root root 10 Jul 23 16:12 /dev/audioctl -> sound/1ctl % ls -lt /dev/sound/* lrwxrwxrwx 1 root root 77 Jul 23 16:12 /dev/sound/1ctl -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud... lrwxrwxrwx 1 root root 74 Jul 23 16:12 /dev/sound/1 -> ../../devices/pci@1f,4000/usb@5/hub@1/device@3/sound-control@0:sound,aud... lrwxrwxrwx 1 root root 66 Jul 23 15:59 /dev/sound/0 -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,audio lrwxrwxrwx 1 root root 69 Jul 23 15:59 /dev/sound/0ctl -> ../../devices/pci@1f,4000/ebus@1/SUNW,CS4231@14,200000:sound,aud... % |
システムの電源がオフのときに USB オーディオデバイスを取り外した場合には、次の手順を実行します。システムの電源がオフのときに USB オーディオデバイスを取り外した場合、 /dev/audio デバイスが、存在しない /dev/sound/* デバイスを指したままになることがあります。