デバイスクリーン (device-clean) スクリプトは、使用可能なすべてのデータを再使用する前に物理デバイスからパージするというセキュリティ要件に対応するものです。デフォルトでは、カートリッジテープドライブ、フロッピーディスクドライブ、CD-ROM デバイス、オーディオデバイスには、必要なデバイスクリーンスクリプトが用意されています。この節では、デバイスクリーンスクリプトによって実行される処理について説明します。
デバイス割り当てによって、オブジェクト再使用の要件の一部が満たされます。デバイスクリーンスクリプトによって、あるユーザがデバイス上に残したデータは、そのデバイスが別のユーザによって割り当て可能にされる前に確実にクリアされます。
表 4-2 は、サポートされる 3 つのテープデバイスと、それぞれに使用するデバイスクリーンスクリプトを示しています。
表 4-2 サポートされる 3 つのテープデバイスのデバイスクリーンスクリプト
テープデバイスのタイプ |
デバイスクリーンスクリプト |
---|---|
SCSI 1/4 インチテープ | |
アーカイブ 1/4 インチテープ |
st_clean |
オープンリール 1/2 インチテープ |
st_clean |
スクリプトは、mt の rewoffl オプションを使用して、デバイスのクリーンアップに影響を与えます。mt(1) マニュアルページを参照してください。スクリプトは、システムブート中に実行されると、デバイスを照会し、そのデバイスがオンラインになっていてメディアが挿入されているかどうかを調べます。
メディアが残っている 1/4 インチのテープデバイスは強制的に割り当てエラー状態になるので、管理者はそのデバイスを手作業でクリーンアップすることになります。
通常のシステム処理中に、allocate または deallocate を対話型モードで実行すると、割り当てを解除しようとしているデバイスからメディアを取り出すように求めるプロンプトが表示されます。スクリプトは、メディアがデバイスから取り出されるまで一時停止します。
表 4-3 は、フロッピーディスクと CD-ROM 用のデバイスクリーンスクリプトを示します。
表 4-3 フロッピーディスクと CD-ROM 用のデバイスクリーンスクリプト
テープデバイスのタイプ |
デバイスクリーンスクリプト |
---|---|
フロッピーディスク | |
CD-ROM |
スクリプトは、eject コマンドを使用してドライブからメディアを取り出します。eject(1) のマニュアルページを参照してください。eject が失敗すると、デバイスは割り当てエラー状態になります。
オーディオデバイスは、オーディオクリーンスクリプトによってクリーンアップされます。スクリプトは、AUDIO_DRAIN ioctl システムコールを実行してデバイスをフラッシュさせてから、AUDIO_SETINFO ioctl システムコールを実行してデバイス構成をデフォルトにリセットします。また、スクリプトは AUDIOGETREG ioctl システムコールを使用して、オーディオチップレジスタを検出します。デフォルト以外の値を持つレジスタは、AUDIOSETREG ioctl システムコールを使用してリセットされます。
システムに新しい割り当て可能デバイスを追加する場合は、独自のデバイスクリーンスクリプトを作成する必要があります。deallocate コマンドは、デバイスクリーンスクリプトにパラメータを渡します。次のように、パラメータはデバイス名が入った文字列です (device_allocate(4) のマニュアルページを参照)。
st_clean -[I|F|S] device-name |
デバイスクリーンスクリプトは、成功した場合は 0 を、失敗した場合は 0 より大きい値を返さなければなりません。オプション -I、-F、-S を使用すると、スクリプトに実行モードを判別させることができます。
-I は、システムブート中にのみ必要です。すべての出力は、システムコンソールに送らなければなりません。失敗した場合や、メディアを強制的に取り出せない場合は、デバイスを割り当てエラー状態にしなければなりません。
-F は強制クリーンアップ用です。このオプションは対話型で、ユーザがプロンプトに応答するものと見なします。このオプションが付いたスクリプトは、クリーンアップの一部に失敗した場合に、クリーンアップ全体を完了しようとしなければなりません。