Solaris のシステム管理 (第 1 巻)

第 24 章 デバイスの管理 (概要)

この章では、Solaris 環境の周辺デバイスを管理する方法の概要を示します。

この章の概要は次のとおりです。

デバイスへのアクセスについては、第 26 章「デバイスへのアクセス (概要)」を参照してください。

Solaris 環境のデバイス管理には、通常、システムでの周辺デバイスの追加と削除、デバイスをサポートするためのサードパーティデバイスドライバの追加、システム構成情報の表示が含まれます。

デバイス管理における新機能

この節では、Solaris 8 のデバイス管理における新機能について説明します。

SCSI と PCI のホットプラグ機能

cfgadm コマンドは今回のリリースで更新され、SPARC システムと IA システムの両方において、サポートされる SCSI と PCI のコントローラに SCSI と PCI のホットプラグ機能を提供するようになりました。

ホットプラグ機能とは、システムの動作中に、システム構成要素を物理的に取り付け、取り外し、または交換できる機能のことです。動的再構成 (特定の SPARC サーバー上で利用可能) を使用すると、システムが動作しているときでも、サービスプロバイダはホットプラグ可能なシステム入出力ボードを取り外したり交換したりできます。したがって、システムをリブートする手間が省けます。また、交換するボードがすぐに入手できない場合、システム処理を継続したまま、システム管理者は動的再構成を使用して障害の発生したボードをシャットダウンできます。

動的再構成が自分のシステムでサポートされているかどうかについては、SPARC ハードウェアメーカーのマニュアルを参照してください。PCI コントローラがホットプラグ機能をサポートしているかどうかを確認するには、『Solaris 8 ハードウェア互換リスト (Intel 版)』を参照してください。

第 25 章「デバイスの構成」では、cfgadm コマンドで SCSI または PCI のコントローラをホットプラグする方法について説明しています。

改良されたデバイス構成 (devfsadm)

devfsadm コマンドによって、ディレクトリ /dev/devices 内にある特殊デバイスファイルを管理します。デフォルトでは、devfsadm はすべてのドライバをシステムに読み込み、可能な限りのデバイスに接続しようとします。そして、デバイスファイルを /devices ディレクトリに作成し、論理リンクを /dev ディレクトリに作成します。/dev/devices のディレクトリの管理に加えて、devfsadmpath_to_inst(4) インスタンスデータベースも保守します。

以前の Solaris リリースでは、デバイス構成は drvconfig と 5 つのリンクジェネレータが処理していました。つまり、drvconfig/devices ディレクトリ内にある物理デバイスエントリを管理し、5 つのリンクジェネレータ (devlinksdiskstapesportsaudlinks) は /dev ディレクトリ内にある論理デバイスエントリを管理していました。

これらのユーティリティはホットプラグ可能なデバイスを認識せず、複数のインスタンスを持つデバイスにも十分に対応できません。互換性を保つために、drvconfig と 5 つのリンクジェネレータは devfsadm ユーティリティへのシンボリックリンクになっています。ホットプラグ可能なデバイスについては、第 25 章「デバイスの構成」を参照してください。

動的再構成イベントに応答する、再構成ブート処理とディレクトリ /dev および /devices の更新は、両方とも devfsadmd (devfsadm コマンドのデーモン版) によって処理されます。このデーモンはシステムブート時に /etc/rc* スクリプトから実行されます。

devfsadmd は再構成イベントによるデバイス構成の変化を自動的に検出するため、このコマンドを対話的に実行する必要はありません。

詳細は、devfsadm(1M) のマニュアルページを参照してください。

デバイス管理作業についての参照先

表 24-1 に、プリンタやモデムなどのシリアルデバイスと、ディスク、CD-ROM、テープドライブなどの周辺デバイスをシステムに追加するための手順を説明している参照先を示します。

表 24-1 デバイスを追加する場合の参照先

作業内容 

参照先 

ディスクの追加 

第 30 章「SPARC: ディスクの追加 (手順)」または第 31 章「IA: ディスクの追加 (手順)」

CD-ROM またはテープデバイスの追加 

「周辺デバイスを追加する方法」

モデムの追加 

Solaris のシステム管理 (第 2 巻)』の「端末とモデム管理の概要」

プリンタの追加 

Solaris のシステム管理 (第 2 巻)』の「印刷管理の概要」

デバイスドライバについて

コンピュータは通常、広範囲の周辺デバイスと大量記憶デバイスを使用します。たとえば、各システムには、SCSI ディスクドライブ、キーボードとマウス、磁気バックアップ媒体があるはずです。これ以外に一般に使用されるデバイスには、CD-ROM ドライブ、プリンタとプロッタ、ライトペン、タッチセンサー式画面、デジタイザー、タブレットとスタイラスのペアがあります。

Solaris ソフトウェアは、これらのデバイスと直接には通信を行いません。各タイプのデバイスに異なるデータ形式、プロトコル、および転送速度が必要になります。

「デバイスドライバ」は、オペレーティングシステムが特定のハードウェアと通信できるようにする低レベルのプログラムです。このドライバは、そのハードウェアに対するオペレーティングシステムの「インタプリタ」として機能します。

デバイスの自動構成

プラットフォーム固有の構成要素を備えた汎用コアと、一連のモジュールからなるカーネルは、Solaris 環境で自動的に構成されます。

カーネルモジュールとは、システムで固有の作業を実行するために使用されるハードウェアまたはソフトウェアの構成要素のことです。「ロード可能」なカーネルモジュールの例としては、デバイスのアクセス時にロードされるデバイスドライバがあげられます。

プラットフォームに依存しないカーネルは /kernel/genunix です。プラットフォーム固有の構成要素は、/platform/`uname -m`/kernel/unix です。

カーネルモジュールについては、次の表 24-2 で説明します。

表 24-2 カーネルモジュール

ディレクトリの位置 

内容 

/platform/`uname -m` /kernel

プラットフォーム固有のカーネル構成要素 

/kernel

システムのブートに必要なすべてのプラットフォームに共通のカーネル構成要素 

/usr/kernel

特定の命令セット内にあるすべてのプラットフォームに共通のカーネル構成要素 

システムは、ブート時にどのデバイスが接続されるかを判断します。さらに、カーネルは、それ自体を動的に構成して、必要なモジュールだけをメモリーにロードします。ディスクデバイスやテープデバイスなどのデバイスが初めてアクセスされると、対応するデバイスドライバがロードされます。このプロセスは、「自動構成」と呼ばれます。これは、すべてのカーネルモジュールが、必要に応じて自動的にロードされるためです。

/etc/system ファイルを修正することによって、カーネルモジュールがロードされる方法をカスタマイズできます。このファイルを修正する方法については、system(4) のマニュアルページを参照してください。

機能と利点

自動構成の利点は次のとおりです。

自動構成プロセスは、システム管理者が新しいデバイス (およびドライバ) をシステムに追加するときに使用されます。これは、再構成ブートを実行することによって行われるため、システムは新しいデバイスを認識することができます。

標準サポートされていないデバイスを使用する場合

Solaris 環境には、各種の標準デバイスをサポートするために必要なデバイスドライバが組み込まれています。これらのドライバは、/kernel/drv および /platform/`uname -m`/kernel/drv ディレクトリにあります。

ただし Solaris で標準にサポートされていないデバイスを購入した場合は、そのメーカーから、デバイスを正しくインストール、保守、管理するために必要なソフトウェアを提供してもらう必要があります。

そのようなデバイス用ソフトウェアには、少なくともデバイスドライバとその関連設定 (.conf) ファイルが含まれます。.conf ファイルは、drv ディレクトリにもあります。 また、サポートされていないデバイスは、Solaris で提供されるユーティリティと互換性を持たないので、保守および管理用のユーティリティが必要になる場合があります。

詳細は、デバイスのご購入先にお問い合わせください。

デバイス構成情報の表示

システムとデバイスの構成情報を表示するには、次の 3 つのコマンドを使用します。

prtconf(1M)

メモリーの総量、システムのデバイス階層によって記述されたデバイス構成を含む、システム構成情報を表示します。このコマンドによる出力は、システムのタイプによって異なります。 

sysdef(1M)

システムハードウェア、疑似デバイス、ロード可能なモジュール、および指定のカーネルパラメータを含む、デバイス構成情報を表示します。 

dmesg(1M)

最後のリブート以降にシステムに接続されたデバイスのリストと、システム診断情報を表示します。 

システム上のデバイスを識別するために使用されるデバイス名については、「デバイス名の命名規則」を参照してください。

driver not attached メッセージ

次のドライバ関連メッセージが、prtconf コマンドと sysdef コマンドによって表示されることがあります。

device, instance #number (driver not attached)

このメッセージは、ノードにデバイスがないか、あるいはデバイスが使用中ではないために、デバイスインスタンスに「現在」接続されているドライバがないことを示します。ドライバは、デバイスがアクセスされると自動的にロードされ、デバイスが使用されなくなると自動的にアンロードされます。

システムデバイスの識別

prtconf コマンドと sysdef コマンドを使用すると、デバイスインスタンスの次に示される「driver not attached」メッセージを確認することによって、システムに接続されたディスク、テープ、CD-ROM デバイスを識別できます。これらのデバイスは、何らかのシステムプロセスによって常に監視されているため、「driver not attached」メッセージは通常、そのデバイスインスタンスにデバイスがないことを示す良い標識になります。

たとえば、次の prtconf 出力は、instance #3instance #6 のデバイスを識別しています。これは、最初の SCSI ホストアダプタ (esp、instance #0) のターゲット 3 のディスクデバイスと、ターゲット 6 の CD-ROM デバイスを示しています。


$ /usr/sbin/prtconf
.
.
.
 
esp, instance #0
            sd (driver not attached)
            st (driver not attached)
            sd, instance #0 (driver not attached)
            sd, instance #1 (driver not attached)
            sd, instance #2 (driver not attached)
            sd, instance #3
            sd, instance #4 (driver not attached)
            sd, instance #5 (driver not attached)
            sd, instance #6
.
.
.

同じデバイス情報は、sysdef 出力からも得られます。

システム構成情報を表示する方法

システム構成情報を表示するには、prtconf コマンドを使用してください。


# /usr/sbin/prtconf

疑似デバイス、ロード可能なモジュール、および指定のカーネルパラメータを含むシステム構成情報を表示するには、sysdef コマンドを使用してください。


# /usr/sbin/sysdef

例 - システム構成情報を表示する

SPARC システムでは、次の prtconf 出力が表示されます。


# prtconf
System Configuration:  Sun Microsystems  sun4u
Memory size: 128 Megabytes
System Peripherals (Software Nodes):
SUNW,Ultra-5_10
    packages (driver not attached)
        terminal-emulator (driver not attached)
        deblocker (driver not attached)
        obp-tftp (driver not attached)
        disk-label (driver not attached)
        SUNW,builtin-drivers (driver not attached)
        sun-keyboard (driver not attached)
        ufs-file-system (driver not attached)
    chosen (driver not attached)
    openprom (driver not attached)
        client-services (driver not attached)
    options, instance #0
    aliases (driver not attached)
    memory (driver not attached)
    virtual-memory (driver not attached)
    pci, instance #0
        pci, instance #0
            ebus, instance #0
                auxio (driver not attached)
                power, instance #0
                SUNW,pll (driver not attached)
                se, instance #0
                su, instance #0
                su, instance #1
                ecpp (driver not attached)
                fdthree, instance #0
.
.
.

IA システムからは、次の sysdef 出力が表示されます。


# sysdef
* Hostid
*
  29f10b4d
*
* i86pc Configuration
*
*
* Devices
*
+boot (driver not attached)
	memory (driver not attached)
aliases (driver not attached)
chosen (driver not attached)
i86pc-memory (driver not attached)
i86pc-mmu (driver not attached)
openprom (driver not attached)
options, instance #0
packages (driver not attached)
delayed-writes (driver not attached)
itu-props (driver not attached)
isa, instance #0
	motherboard (driver not attached)
	pnpADP,1542, instance #0
	asy, instance #0
	asy, instance #1
	lp, instance #0 (driver not attached)
	fdc, instance #0
		fd, instance #0
		fd, instance #1 (driver not attached)
	kd (driver not attached)
	kdmouse (driver not attached)
.
.
.

デバイス情報を表示する方法

デバイス情報は、dmesg コマンドを使用して表示してください。


# /usr/sbin/dmesg

この dmesg 出力は、システムコンソール上のメッセージとして表示され、最後のリブート以降に接続されたデバイスを表示します。

例 - デバイス情報を表示する

SPARC システムからは、次の dmesg 出力が表示されます。


# dmesg
date starbug genunix: [ID 540533 kern.notice] SunOS Release 5.8 Generic 64-bit
date starbug genunix: [ID 223299 kern.notice] Copyright (c) 1983-2000 by S
un Microsystems, Inc.
date starbug genunix: [ID 678236 kern.info] Ethernet address = 8:0:20:a6:d
4:5b
date starbug genunix: [ID 897550 kern.info] Using default device instance 
data
date starbug unix: [ID 389951 kern.info] mem = 131072K (0x8000000)
date starbug unix: [ID 930857 kern.info] avail mem = 121724928
date starbug rootnex: [ID 466748 kern.info] root nexus = Sun Ultra 5/10 UP
A/PCI (UltraSPARC-IIi 333MHz)
.
.
.
# 

IA システムからは、次の dmesg 出力が表示されます。


# dmesg
date naboo genunix: [ID 540533 kern.notice] SunOS Release 5.8 Version Generic 32-bit
date naboo genunix: [ID 223299 kern.notice] Copyright (c) 1983-2000 by Sun Microsystems, Inc.
date naboo genunix: [ID 897550 kern.info] Using default device instance data
date naboo unix: [ID 168242 kern.info] mem = 32380K (0x1f9f000)
date naboo unix: [ID 930857 kern.info] avail mem = 19390464
date naboo rootnex: [ID 466748 kern.info] root nexus = i86pc
date naboo rootnex: [ID 349649 kern.info] pci0 at root: space 0 offset 0
date naboo genunix: [ID 936769 kern.info] pci0 is /pci@0,0
date naboo genunix: [ID 678236 kern.info] Ethernet address = 00:a0:24:89:b0:72
date naboo gld: [ID 944156 kern.info] elx0: 3COM EtherLink III: 
type "ether" mac address 00:a0:24:89:b0:72
date naboo pci: [ID 370704 kern.info] PCI-device: pci10b7,5950@c, elx0
date naboo genunix: [ID 936769 kern.info] elx0 is /pci@0,0/pci10b7,5950@c
.
.
.