The normal delivery vehicle for unbundled software is to create a package with all the components of the software bundled together. A package provides a controlled mechanism for installation and removal of all the components of a software product, including applications, configuration tools, drivers, man pages and other documentation.
Packages that include a driver must run add_drv(1M) to complete the installation of the driver, after installing the driver binary and other components, onto a system. Here is an example package postinstall script to run add_drv(1M) to complete the driver installation.
#!/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
When removing a package, a package that includes a driver must run rem_drv(1M) to complete the removal of the driver, after removing the driver binary and other components from a system. Here is an example package postremove script to run rem_drv(1M) to complete the driver removal.
#!/bin/sh # # @(#)postremove 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