| ナビゲーションリンクをスキップ | |
| 印刷ビューの終了 | |
|   | デバイスドライバの記述 Oracle Solaris 10 1/13 Information Library (日本語) | 
パート I Oracle Solaris プラットフォーム用デバイスドライバの設計
2. Oracle Solaris カーネルとデバイスツリー
22. ドライバのコンパイル、ロード、パッケージ化、およびテスト
ソフトウェアの通常の提供手段は、すべてのソフトウェアコンポーネントを含むパッケージを作成することです。パッケージは、ソフトウェア製品のすべてのコンポーネントをインストールおよび削除するための制御されたメカニズムを提供します。パッケージには、製品を使用するためのファイルに加えて、アプリケーションのインストールとアンインストールを行うための制御ファイルが含まれています。インストール後と削除前の 2 つのインストールスクリプトは、そうした制御ファイルです。
ドライババイナリとともにパッケージがシステムにインストールされたあとは、add_drv(1M) コマンドを実行する必要があります。add_drv コマンドはドライバのインストールを完了します。通常、add_drv は次の例のように、インストール後スクリプトで実行されます。
#!/bin/sh
#
#       @(#)postinstall 1.1
PATH="/usr/bin:/usr/sbin:${PATH}"
export PATH
#
# Driver info
#
DRV=<driver-name>
DRVALIAS="<company-name>,<driver-name>"
DRVPERM='* 0666 root sys'
ADD_DRV=/usr/sbin/add_drv
#
# Select the correct add_drv options to execute.
# add_drv touches /reconfigure to cause the
# next boot to be a reconfigure boot.
#
if [ "${BASEDIR}" = "/" ]; then
    #
    # On a running system, modify the
    # system files and attach the driver
    #
    ADD_DRV_FLAGS=""
else     
    #
    # On a client, modify the system files
    # relative to BASEDIR
    #
    ADD_DRV_FLAGS="-b ${BASEDIR}"
fi       
 
#
# Make sure add_drv has not been previously executed
# before attempting to add the driver.
#
grep "^${DRV} " $BASEDIR/etc/name_to_major > /dev/null 2>&1
if [ $? -ne 0 ]; then
    ${ADD_DRV} ${ADD_DRV_FLAGS} -m "${DRVPERM}" -i "${DRVALIAS}" ${DRV}
    if [ $? -ne 0 ]; then
        echo "postinstall: add_drv $DRV failed\n" >&2
        exit 1
    fi
fi
exit 0
ドライバが含まれるパッケージを削除するときには、ドライバのバイナリとその他のコンポーネントを削除する前に、rem_drv(1M) コマンドを実行する必要があります。次の例では、ドライバの削除のために rem_drv コマンドを使用する削除前スクリプトを示します。
#!/bin/sh
#
#       @(#)preremove  1.1
 
PATH="/usr/bin:/usr/sbin:${PATH}"
export PATH
 
#
# Driver info
#
DRV=<driver-name>
REM_DRV=/usr/sbin/rem_drv
 
#
# Select the correct rem_drv options to execute.
# rem_drv touches /reconfigure to cause the
# next boot to be a reconfigure boot.
#
if [ "${BASEDIR}" = "/" ]; then
    #
    # On a running system, modify the
    # system files and remove the driver
    #
    REM_DRV_FLAGS=""
else     
    #
    # On a client, modify the system files
    # relative to BASEDIR
    #
    REM_DRV_FLAGS="-b ${BASEDIR}"
fi
 
${REM_DRV} ${REM_DRV_FLAGS} ${DRV}
 
exit 0