Before a driver can be used, the system must be informed that it exists. The add_drv(1M) utility must be used to correctly install the device driver. After the driver is installed, it can be loaded and unloaded from memory without using add_drv(1M) again.
A device driver's module path (location) depends on the platform it runs on, the architecture it is compiled for, and whether it is needed at boot time. Platform-dependent device drivers reside in the following locations:
/platform/`uname -i`/kernel/drv – Contains 32–bit drivers that run only on a specific platform (/platform/`uname -i`/kernel/drv/sparcv9 for 64–bit drivers).
/platform/`uname -m`/kernel/drv – Contains 32–bit drivers that run on a family of platforms. This directory might not be present on some platforms (/platform/`uname -m`/kernel/drv/sparcv9 for 64–bit drivers).
Platform-independent drivers reside in either of these directories:
/usr/kernel/drv – Contains 32–bit drivers not required for system booting (/usr/kernel/drv/sparcv9 for 64–bit drivers).
/kernel/drv – Contains 32–bit drivers required for booting (/kernel/drv/sparcv9 for 64–bit drivers).
To install a 32–bit driver, the driver and its configuration file must be copied to a drv directory in the module path. For example, to copy a driver to /usr/kernel/drv, type:
$ su # cp xx /usr/kernel/drv # cp xx.conf /usr/kernel/drv
To install a 64-bit SPARC driver, copy the driver to a drv/sparcv9 directory in the module path. Copy the driver configuration file to the drv directory in the module path. For example, to copy a driver to /usr/kernel/drv, type:
$ su # cp xx /usr/kernel/drv/sparcv9# cp xx.conf /usr/kernel/drv
All driver configuration files (.conf files) must go in the drv directory in the module path. Even on 64–bit systems, the .conf file goes in the drv directory, not the drv/sparcv9 directory.
Run add_drv(1M) to install the driver in the system. If the driver installs successfully, add_drv(1M) will run devfsadm(1M) to create the logical names in /dev.
# add_drv xx
This is a simple case in which the device identifies itself as xx and the device special files will have default ownership and permissions (0600 root sys). add_drv(1M) also allows additional names for the device (aliases) to be specified. See add_drv(1M) to determine how to add aliases and set file permissions explicitly.
add_drv(1M) should not be run when installing a STREAMS module. See the STREAMS Programming Guide for details.
If the driver creates minor nodes that do not represent disks, tapes, or ports (terminal devices), /etc/devlink.tab can be modified to cause devfsadm(1M) to create logical device names in /dev.
Alternatively, logical names can be created by a program run at driver installation time.
Use the update_drv(1M) command to notify the system of any changes to an installed device driver. By default, the system re-reads the driver.conf(4) file and reloads the driver binary module.
To remove a driver from the system, use rem_drv(1M), then delete the driver module and configuration file from the module path. The driver cannot be used again until it is reinstalled with add_drv(1M). Removing a SCSI HBA driver will require a reboot to take effect.