Managing Devices in the Solaris OS
The following sections provide overview information about features that manage devices in the
Solaris OS. For information about accessing devices, see Accessing Devices.
Power Management of Devices
The United States Environmental Protection Agency created the Energy Star®
guidelines for
computer products to encourage the use of energy-efficient computer systems and to reduce
air pollution associated with energy generation. To meet these guidelines, Sun hardware
is designed to use power efficiently. In addition, power management software is provided to
configure the power management settings.
For more information about power managing your system, see your specific hardware documentation
or power.conf(4).
Power Management of Fibre Channel Devices
Power management of Sun systems has been provided in many previous Solaris releases.
For example, the internal drives on the following systems are power managed by
default:
SunBlade 1000 or 2000
SunBlade 100 or 150
SunBlade 2500 or 1500
The default settings in the /etc/power.conf file ensure Energy Star compliance and fully
support power management of these systems.
The following adapters connect external Fibre Channel storage devices:
If a combination of the above adapters and Sun systems are used
to attach external Fibre Channel storage devices, the external storage devices will also be
power managed by default.
Under the following conditions, power management should be disabled:
If the system has Fibre Channel attached disks that are connected to a storage area network (SAN)
If the system has Fibre Channel attached disks that are used in a multi-initiator configuration, such as with the SunCluster software
If the system is using IP over a Fibre Channel interface (see fcip(7D))
Power management should not be enabled when more than one Solaris system might
share the same devices, as in the above conditions.
You can disable power management for the system by changing the autopm
keyword in the /etc/power.conf file as follows:
autopm disable
Then, reconfigure power management by running the pmconfig command or by rebooting the
system.
For more information, see power.conf(4) and pmconfig(1M).
About Device Drivers
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:
CD-ROM drives
Printers and plotters
Light pens
Touch-sensitive screens
Digitizers
Tablet-and-stylus pairs
The 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.
Automatic Configuration of Devices
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 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
Location |
Directory Contents |
/platform/`uname -m`/kernel |
Platform-specific
kernel components |
/kernel |
Kernel components common to all platforms that are needed for booting the
system |
/usr/kernel |
Kernel components common to all platforms within a particular instruction set |
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).
Features and Benefits of Autoconfiguration
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 Solaris releases, it was necessary to perform a reconfiguration boot
if you added a device to a system that is shutdown. Starting in
the Solaris Express 10/06 release, 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 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).
What You Need for Unsupported Devices
Device drivers needed to support a wide range of standard devices are included
in the 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
Solaris utilities.
For more information about what you need for unsupported devices, contact your device
manufacturer.
Displaying Device Configuration Information
Three commands are used to display system and device configuration information.
Command |
Description |
Man
Page |
prtconf |
Displays system configuration information, including the total amount of memory and the device
configuration as described by the system's device hierarchy. The output displayed by this
command depends upon the type of system. |
prtconf(1M) |
sysdef |
Displays device configuration information, including system
hardware, pseudo devices, loadable modules, and selected kernel parameters. |
sysdef(1M) |
dmesg |
Displays system diagnostic messages
as well as a list of devices attached to the system since the
last reboot. |
dmesg(1M) |
For information on the device names that are used to identify devices on
the system, see Device Naming Conventions.
driver not attached Message
The following driver-related message might be displayed by the prtconf and sysdef
commands:
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.
How to Display System Configuration Information
Use the output of the prtconf and sysdef commands to identify which disk,
tape, and CD-ROM 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.
Use the sysdef command to display system configuration information that include pseudo devices,
loadable modules, and selected kernel parameters.
- Display system and device configuration information.
Display all the devices connected to a system.
For example, the following prtconf -v output on a SunBlade 1000 identifies the disk devices connected to the system. The detailed disk information is described in the Device Minor Nodes section within the ssd/fp driver section.
$ /usr/sbin/prtconf -v | more
.
.
.
Device Minor Nodes:
dev=(118,8)
dev_path=/pci@8,600000/SUNW,qlc@4/fp@0,0/ssd@w210000
2037bde864,0:a
spectype=blk type=minor
dev_link=/dev/dsk/c0t1d0s0
dev_path=/pci@8,600000/SUNW,qlc@4/fp@0,0/ssd@w210000
2037bde864,0:a,raw
spectype=chr type=minor
dev_link=/dev/rdsk/c0t1d0s0
dev=(118,9)
dev_path=/pci@8,600000/SUNW,qlc@4/fp@0,0/ssd@w210000
2037bde864,0:b
spectype=blk type=minor
dev_link=/dev/dsk/c0t1d0s1
dev_path=/pci@8,600000/SUNW,qlc@4/fp@0,0/ssd@w210000
2037bde864,0:b,raw
.
.
.
Display information about one specific device connected to the system.
For example, the following prtconf output on a SunBlade 1000 displays the ssd instance number for /dev/dsk/c0t1d0s0.
# prtconf -v /dev/dsk/c0t1d0s0
ssd, instance #1
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: 346o 323o
#
Example 5-1 Displaying System Configuration Information
The following prtconf output is displayed on a SPARC based system.
# prtconf
System Configuration: Sun Microsystems sun4u
Memory size: 512 Megabytes
System Peripherals (Software Nodes):
SUNW,Sun-Blade-1000
scsi_vhci, instance #0
packages (driver not attached)
SUNW,builtin-drivers (driver not attached)
deblocker (driver not attached)
disk-label (driver not attached)
terminal-emulator (driver not attached)
obp-tftp (driver not attached)
dropins (driver not attached)
kbd-translator (driver not attached)
ufs-file-system (driver not attached)
chosen (driver not attached)
openprom (driver not attached)
client-services (driver not attached)
options, instance #0
aliases (driver not attached)
memory (driver not attached)
virtual-memory (driver not attached)
SUNW,UltraSPARC-III, instance #0
memory-controller, instance #0
SUNW,UltraSPARC-III, instance #1
memory-controller, instance #1
pci, instance #0
ebus, instance #0
flashprom (driver not attached)
bbc (driver not attached)
ppm, instance #0
i2c, instance #0
dimm-fru, instance #0
dimm-fru, instance #1
dimm-fru, instance #2
dimm-fru, instance #3
nvram, instance #4
idprom (driver not attached)
i2c, instance #1
cpu-fru, instance #5
temperature, instance #0
cpu-fru, instance #6
temperature, instance #1
fan-control, instance #0
motherboard-fru, instance #7
i2c-bridge (driver not attached)
beep, instance #0
rtc, instance #0
gpio (driver not attached)
pmc (driver not attached)
floppy (driver not attached)
parallel (driver not attached)
serial, instance #0
network, instance #0
firewire, instance #0
usb, instance #0
scsi (driver not attached)
disk (driver not attached)
tape (driver not attached)
scsi (driver not attached)
disk (driver not attached)
tape (driver not attached)
pci, instance #1
SUNW,qlc, instance #0
fp (driver not attached)
disk (driver not attached)
fp, instance #1
ssd, instance #1
ssd, instance #0 (driver not attached)
ssd, instance #2 (driver not attached)
ssd, instance #3 (driver not attached)
ssd, instance #4 (driver not attached)
ssd, instance #5 (driver not attached)
ssd, instance #6 (driver not attached)
upa, instance #0
SUNW,ffb, instance #0 (driver not attached)
ppm, instance #0
pseudo, instance #0
The following sysdef output is displayed from an x86 based system.
# 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)
.
.
.