|Skip Navigation Links|
|Exit Print View|
|Oracle Solaris Administration: Devices and File Systems Oracle Solaris 11 Information Library|
The following sections provide overview information about features that manage devices in the Oracle Solaris OS. For information about accessing devices, see Accessing Devices.
You can use the device detection tool to identify whether your x86 hardware is supported in this Oracle Solaris release. For more information, go to the following site:
A computer typically uses a wide range of peripheral devices and mass-storage devices. Your system, for example, probably has a disk drive, a keyboard and a mouse, and some kind of magnetic backup medium. Other commonly used devices include the following:
Printers and plotters
The Oracle Solaris software does not directly communicate with all these devices. Each type of device requires different data formats, protocols, and transmission rates.
A device driver is a low-level program that allows the operating system to communicate with a specific piece of hardware. The driver serves as the operating system's “interpreter” for that piece of hardware.
In the Oracle Solaris 11 release, driver customizations are made in the /etc/driver/drv directory rather than in the /kernel directory as in previous releases. This improvement means that your driver customizations are not overwritten when the system is upgraded. The files in the /etc/driver/drv directory are preserved during the upgrade.
Customizing a driver configuration usually means that a per-device parameter or global property that impacts all devices is added or modified.
# cp /kernel/drv/sd.conf /etc/driver/drv/sd.conf
For example, the sd.conf includes the following entry for sd device at target 0, lun 0:
name="sd" class="scsi" target=0 lun=0;
To add the retries parameter for this device, modify the existing entry as follows:
name="sd" class="scsi" target=0 lun=0 retries=4;
# prtconf -u sd, instance #1 Admin properties: name='retries' type=int items=1 value=00000004
The kernel consists of a small generic core with a platform-specific component and a set of modules. The kernel is configured automatically in the Oracle Solaris release.
A kernel module is a hardware or software component that is used to perform a specific task on the system. An example of a loadable kernel module is a device driver that is loaded when the device is accessed.
The platform-independent kernel is /kernel/genunix. The platform-specific component is /platform/`uname -m`/kernel/unix.
The kernel modules are described in the following table.
Table 5-2 Description of Solaris Kernel Modules
The system determines what devices are attached to it at boot time. Then, the kernel configures itself dynamically, loading needed modules into memory. At this time, device drivers are loaded when devices, such as disk devices and tape devices, are accessed. This process is called autoconfiguration because all kernel modules are loaded automatically when they are needed.
You can customize the way in which kernel modules are loaded by modifying the /etc/system file. For instructions on modifying this file, see system(4).
The benefits of autoconfiguration are as follows:
Main memory is used more efficiently because modules are loaded when needed.
There is no need to reconfigure the kernel when new devices are added to the system.
Drivers can be loaded and tested without having to rebuild the kernel and reboot the system.
Autoconfiguration is used when you add a new device (and driver) to the system. In previous releases, it was necessary to perform a reconfiguration boot if you added a device to a system that is shutdown. Device configuration enhancements make a reconfiguration boot unnecessary when a device is added to a system that is shutdown.
You can add, remove, or replace devices in the Oracle Solaris OS while the system is still running, if the system components support hot-plugging. For information about hot-plugging devices, see Chapter 6, Dynamically Configuring Devices (Tasks).
Device drivers needed to support a wide range of standard devices are included in the Oracle Solaris release. These drivers can be found in the /kernel/drv and /platform/`uname -m`/kernel/drv directories.
However, if you have purchased an unsupported device, the manufacturer should provide the software that is needed for the device to be properly installed, maintained, and administered.
At a minimum, this software includes a device driver and its associated configuration (.conf) file. The .conf files reside in the drv directories. This software might also include custom maintenance and administrative utilities because the device might be incompatible with Oracle Solaris utilities.
For more information about what you need for unsupported devices, contact your device manufacturer.
For information on the device names that are used to identify devices on the system, see Device Naming Conventions.
device, instance #number (driver not attached)
This message does not always mean that a driver is unavailable for this device. This message means that no driver is currently attached to the device instance because no device exists at this node or the device is not in use. Drivers are loaded automatically when the device is accessed. They are unloaded when the device is not in use.
The following utilities detect when a specified device is in use:
mkfs and newfs
These enhancements mean that the above utilities might detect some of the following usage scenarios:
Device is part of a ZFS storage pool
Device is a dump or swap device
Mounted file system or an entry for the device exists in the /etc/vfstab file
For example, if you attempt to use the format utility to access an active device, you will see a message similar to the following:
# format Searching for disks...done AVAILABLE DISK SELECTIONS: 0. c1t0d0 <FUJITSU-MAY2073RCSUN72G-0401 cyl 8921 alt 2 hd 255 sec 63> /pci@0,0/pci1022,7450@2/pci1000,3060@3/sd@0,0 /dev/chassis/SYS/HD0/disk 1. c1t1d0 <FUJITSU-MAY2073RCSUN72G-0401-68.37GB> /pci@0,0/pci1022,7450@2/pci1000,3060@3/sd@1,0 /dev/chassis/SYS/HD1/disk Specify disk (enter its number): 0 selecting c1t0d0 [disk formatted] /dev/dsk/c1t0d0s0 is part of active ZFS pool rpool. Please see zpool(1M). FORMAT MENU: . . .
Use the output of the prtconf and sysdef commands to identify which disk, tape, and DVD devices are connected to the system. The output of these commands displays the driver not attached messages next to the device instances. Because these devices are always being monitored by some system process, the driver not attached message is usually a good indication that no device exists at that device instance.
Display all the devices connected to a system.
For example, the following prtconf -v output on a SPARC system identifies the disk devices connected to the system. The detailed disk information is described in the Device Minor Nodes section.
$ /usr/sbin/prtconf -v | more Memory size: 32640 Megabytes System Peripherals (Software Nodes): SUNW,SPARC-Enterprise-T5220 . . . location: /dev/chassis/SUN-Storage-J4400.0918QAKA24/SCSI_Device__2/disk Device Minor Nodes: dev=(27,40) dev_path=/pci@0/pci@0/pci@8/pci@0/pci@a/LSILogic,sas@0/sd@2,0:a spectype=blk type=minor dev_link=/dev/dsk/c4t2d0s0 dev_path=/pci@0/pci@0/pci@8/pci@0/pci@a/LSILogic,sas@0/sd@2,0:a,raw spectype=chr type=minor dev_link=/dev/rdsk/c4t2d0s0 Device Minor Layered Under: mod=zfs accesstype=blk dev_path=/pseudo/zfs@0 Minor properties: name='Nblocks' type=int64 items=1 dev=(27,40) value=0000000074702c8f name='Size' type=int64 items=1 dev=(27,40) value=000000e8e0591e00 . . .
Display information about one specific device connected to the system.
For example, the following prtconf output on a SPARC system displays the sd instance number for /dev/dsk/c4t2d0s0.
# prtconf -v /dev/dsk/c4t2d0s0 | grep instance sd, instance #5
Display only the devices that are attached to the system.
# prtconf | grep -v not
Display device usage information.
For example, the following fuser command displays which processes are accessing the /dev/console device.
# fuser -d /dev/console /dev/console: 5742o 2269o 20322o 858o
Example 5-1 Displaying System Configuration Information
The following prtconf output is displayed on an x86 based system.
# prtconf System Configuration: Oracle Corporation i86pc Memory size: 8192 Megabytes System Peripherals (Software Nodes): i86pc scsi_vhci, instance #0 pci, instance #0 pci108e,4843, instance #0 pci8086,25e2, instance #0 pci8086,3500, instance #7 pci8086,3510, instance #9 pci8086,3518, instance #10 pci108e,4843, instance #0 pci108e,4843, instance #1 pci8086,350c, instance #8 pci8086,25e3 (driver not attached) pci8086,25f8, instance #2 pci108e,286, instance #0 disk, instance #0 disk, instance #2 disk, instance #3 disk, instance #1 pci8086,25e5 (driver not attached) pci8086,25f9 (driver not attached) pci8086,25e7 (driver not attached) pci108e,4843, instance #0 (driver not attached) pci108e,4843, instance #1 pci108e,4843, instance #2 (driver not attached) pci108e,4843 (driver not attached) pci108e,4843 (driver not attached) pci108e,4843 (driver not attached) pci108e,4843 (driver not attached) pci8086,2690, instance #6 pci108e,125e, instance #2 pci108e,125e, instance #3 pci108e,4843, instance #0 pci108e,4843, instance #1 device, instance #0 keyboard, instance #0 mouse, instance #1 pci108e,4843, instance #2 pci108e,4843, instance #3 pci108e,4843, instance #0 storage, instance #0 disk, instance #4 . . .
# sysdef * Hostid * 29f10b4d * * i86pc Configuration * * * Devices * +boot (driver not attached) memory (driver not attached) aliases (driver not attached) chosen (driver not attached) i86pc-memory (driver not attached) i86pc-mmu (driver not attached) openprom (driver not attached) options, instance #0 packages (driver not attached) delayed-writes (driver not attached) itu-props (driver not attached) isa, instance #0 motherboard (driver not attached) pnpADP,1542, instance #0 asy, instance #0 asy, instance #1 lp, instance #0 (driver not attached) fdc, instance #0 fd, instance #0 fd, instance #1 (driver not attached) kd (driver not attached) kdmouse (driver not attached) . . .
A device retirement mechanism isolates a device as faulty by the fault management framework (FMA). This feature allows faulty devices to be safely and automatically inactivated to avoid data loss, data corruption, or panics and system down time. The retirement process is done safely, taking into account the stability of the system after the device has been retired.
Critical devices are never retired. If you need to manually replace a retired device, use the fmadm repair command after the device replacement so that system knows that the device is replaced, in addition to the manual replacement steps.
For more information, see fmadm(1M).
A general message regarding device retirement is displayed on the console and written to the /var/adm/messages file so that you aware of a retired device. For example:
Aug 9 18:14 starbug genunix: [ID 751201 kern.notice] NOTICE: One or more I/O devices have been retired
You can use the prtconf command to identify specific retired devices. For example:
# prtconf . . . pci, instance #2 scsi, instance #0 disk (driver not attached) tape (driver not attached) sd, instance #3 sd, instance #0 (retired) scsi, instance #1 (retired) disk (retired) tape (retired) pci, instance #3 network, instance #2 (driver not attached) network, instance #3 (driver not attached) os-io (driver not attached) iscsi, instance #0 pseudo, instance #0 . . .
Use the steps below to resolve a faulty device or a device that has been retired.
You can also review ZFS device problem or failure information by using the zpool status or the fmdump command. For ZFS device problem or failure information, see Chapter 11, Oracle Solaris ZFS Troubleshooting and Pool Recovery, in Oracle Solaris Administration: ZFS File Systems.
# fmadm faulty --------------- ------------------------------------ -------------- --------- TIME EVENT-ID MSG-ID SEVERITY --------------- ------------------------------------ -------------- --------- May 06 03:38:06 0376b4b6-fce7-c0f0-ffd9-a0a685376284 ZFS-8000-D3 Major Host : neo-2 Platform : Sun-Fire-X4140 Chassis_id : 0904QAD02C Product_sn : Fault class : fault.fs.zfs.device Affects : zfs://pool=tank/vdev=c26c72a8ffcff889 faulted and taken out of service Problem in : zfs://pool=tank/vdev=c26c72a8ffcff889 faulted and taken out of service Description : A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. Response : No automated response will occur. Impact : Fault tolerance of the pool may be compromised. Action : Run 'zpool status -x' and replace the bad device.
After a faulty device is replaced in a ZFS storage pool, clear the device error. For example:
# zpool clear rpool c4t0d0s0
If an intermittent device error occurred but the device was not replaced, you can attempt to clear the error as shown above.
# fmadm repair 0376b4b6-fce7-c0f0-ffd9-a0a685376284
# fmadm faulty