Solaris Devices

This is a very brief introduction into navigating the device paths in Solaris. I’m using a Solaris 10 installed on Sun v490 for all the commands shown below.

Device files in Solaris

Even though all the block and character special device files are traditionally found under /dev directory, if you look closer at your Solaris 10 setup you will notice that they’re not the device files themselves, but instead are just symbolic links to device files under /devices directory.

Solaris uses /devices directory for representing all the physical hierarchy of installed devices and buses found on your hardware system.

The directory tree under /devices copies the actual physical configuration of your hardware, and looks like this:

bash-3.00# ls /devices
iscsi                              [email protected],700000:reg
iscsi:devctl                       [email protected],600000
[email protected],400000         [email protected],600000:devctl
[email protected],400000:mc-us3  [email protected],600000:intr
[email protected],400000         [email protected],600000:reg
[email protected],400000:mc-us3  [email protected],700000
options                            [email protected],700000:devctl
[email protected],600000                       [email protected],700000:intr
[email protected],600000:devctl                [email protected],700000:reg
[email protected],600000:intr                  pseudo
[email protected],600000:reg                   pseudo:devctl
[email protected],700000                       scsi_vhci
[email protected],700000:devctl                scsi_vhci:devctl
[email protected],700000:intr

Most of these names are directories, so if you cd into /devices/pseudo directory, you will see all the software (hence pseudo) devices present in your system. Other directories will refer to various elements found on the system bus, for instance you can find a directory /devices/[email protected],600000/SUNW,[email protected]/ which will represent a built-in FC-AL Host Adapter which manages hard drives on my system.

Device instance numbers

As you know, it’s quite possible to have more than one device of the same kind in your system. Because of this, all the physical devices are mapped to instance numbers. Even if you have only one device of a particular kind, it will get an instance number. Numeration starts with 0.

For example, on Sun v490 there are 2 on-board gigabit network interfaces, and they’re referred to as ce0 and ce1. Similarly, all other devices are numbered and mapped.

All the physical device mappings to their instances are recorded in /etc/path_to_inst file. That’s the file used by Solaris to keep instance numbers persistent across reboots:

bash-3.00# more /etc/path_to_inst # #       Caution! This file contains critical kernel state
"/pseudo" 0 "pseudo"
"/scsi_vhci" 0 "scsi_vhci"
"/options" 0 "options"
"/[email protected],700000" 0 "pcisch"
"/[email protected],700000/[email protected]" 0 "uata"
"/[email protected],700000/[email protected]/[email protected],0" 1 "sd"
"/[email protected],600000" 1 "pcisch"