33.5. 大容量ストレージデバイスの持続的な名前

SUSE Linuxには、初期化の順序に関係なく、ハードディスクと他のストレージデバイスに同じ指定を割り当てられるようにする定義済みのルールが装備されています。ハードウェアのシリアル番号、UUID、またはファイルシステムのラベルなどの一意なデバイス属性は、udevに付属する小さなヘルパープログラムで読み出すことができます。このヘルパープログラムは、udevのルール処理で利用可能な、固有のデバイス情報を作成します。次の簡単な例では、最初のルールは、udev環境内のSCSIデバイスから集められた値をインポートします。2番目のルールは、インポートした値を用いて、永続的なシンボリックリンクを作成します。

KERNEL="sd*[!0-9]", IMPORT="/sbin/scsi_id -g -x -s $p -d %N"
KERNEL="sd*[!0-9]", SYMLINK+="$env{ID_TYPE}/by-id/$env{ID_BUS}-$env{ID_SERIAL}"

大容量ストレージデバイス用のドライバは、ロードされた直後に、使用可能なハードディスクすべてをカーネルに登録します。各ハードディスクはホットプラグブロックイベントをトリガし、各イベントはudevを呼び出します。次にudevはルールを読み取って、symlink(シンボリックリンク)を作成する必要があるかどうかを判断します。

initrdをとおしてドライバをロードした場合、ホットプラグイベントは失われます。しかし、すべての情報はsysfs内に格納されます。udevstartユーティリティは、/sys/blockおよび/sys/classの下にあるすべてのデバイスファイルを見つけ、udevを起動します。

ブートプロセスの間にすべてのデバイスノードを再作成する開始スクリプトboot.udevも存在します。しかし、開始スクリプトは、YaSTのランレベルエディタ、またはinsserv boot.udevコマンドを使用してアクティブにする必要があります。