The instance name represents the kernel's abbreviated name for every possible device on the system. For example, on an Ultra system, dad0 represents the instance name of the IDE disk drive, sd0 represents a SCSI disk, and hme0 is the instance name for the network interface. Instance names are mapped to a physical device name in the /etc/path_to_inst file. The following shows the contents of a path_to_inst file:
more /etc/path_to_inst # # Caution! This file contains critical kernel state # "/pseudo" 0 "pseudo" "/scsi_vhci" 0 "scsi_vhci" "/options" 0 "options" "/pci@1f,0" 0 "pcipsy" "/pci@1f,0/pci@1,1" 0 "simba" "/pci@1f,0/pci@1,1/ide@3" 0 "uata" "/pci@1f,0/pci@1,1/ide@3/sd@2,0" 3 "sd" "/pci@1f,0/pci@1,1/ide@3/dad@0,0" 1 "dad" "/pci@1f,0/pci@1,1/ebus@1" 0 "ebus" "/pci@1f,0/pci@1,1/ebus@1/power@14,724000" 0 "power" "/pci@1f,0/pci@1,1/ebus@1/se@14,400000" 0 "se" "/pci@1f,0/pci@1,1/ebus@1/su@14,3083f8" 0 "su" "/pci@1f,0/pci@1,1/ebus@1/su@14,3062f8" 1 "su" "/pci@1f,0/pci@1,1/ebus@1/ecpp@14,3043bc" 0 "ecpp" "/pci@1f,0/pci@1,1/ebus@1/fdthree@14,3023f0" 0 "fd" "/pci@1f,0/pci@1,1/ebus@1/SUNW,CS4231@14,200000" 0 "audiocs" "/pci@1f,0/pci@1,1/network@1,1" 0 "hme" "/pci@1f,0/pci@1,1/SUNW,m64B@2" 0 "m64" "/pci@1f,0/pci@1" 1 "simba" "/pci@1f,0/pci@1/scsi@1" 0 "glm" "/pci@1f,0/pci@1/scsi@1,1" 1 "glm" "/pci@1f,0/pci@1/scsi@1,1/sd@1,0" 17 "sd" "/pci@1f,0/pci@1/scsi@1,1/sd@2,0" 18 "sd" "/pci@1f,0/pci@1/scsi@1,1/sd@3,0" 19 "sd" "/pci@1f,0/pci@1/scsi@1,1/sd@4,0" 20 "sd" #
Although instance names can be displayed using the commands dmesg, sysdef, and prtconf, the only command that shows the mapping of the instance name to the physical device name is the dmesg command. For example, you can determine the mapping of an instance name to a physical device name by looking at the dmesg output, as shown in the following example from an Ultra system:
sd19 is /pci@1f,0/pci@1/scsi@1,1/sd@3,0 dad1 is /pci@1f,0/pci@1,1/ide@3/dad@0,0
In the first example, sd19 is the instance name and /pci@1f,0/pci@1/scsi@1,1/sd@3,0 is the physical device name. In the second example, dad0 is the instance name and /pci@1f,0/pci@1,1/ide@3/dad@0,0 is the physical device name. After the instance name has been assigned to a device, it remains mapped to that device. To keep instance numbers consistent across restarts, the system records them in the /etc/path_to_inst file. This file is only read at startup, and it is updated by the devfsadmd daemon described later in this section.
Devices already existing on a system are not rearranged when new devices are added, even if new devices are added to pci slots that are numerically lower than those occupied by existing devices. In other words, the /etc/path_to_inst file is appended to, not rewritten, when new devices are added.
Do Not Remove! Do not remove the path_to_inst file; the system cannot start up without it. The system relies on information found in this file to find the root, usr, and swap devices. Make changes to this file only after careful consideration.
It is generally not necessary for the system administrator to change the path_to_inst file because the system maintains it. The system administrator can, however, change the assignment of instance numbers by editing this file and doing a reconfiguration startup. However, any changes made in this file are lost if the devfsadm command is run before the system is restarted.
Resolving Problems with /etc/path_to_inst If you can't start up from the startup disk because of a problem with the /etc/path_to_inst file, you should start up from the CD-ROM (boot cdrom -s) and remove the /etc/path_to_inst file from the startup disk. To do this, start up from the CD-ROM using boot cdrom -s at the OpenBoot prompt. Use the rm command to remove the file named /a/etc/path_to_inst. The path_to_inst file will automatically be created the next time the system boots.
You can add new devices to a system without requiring a reboot. It's all handled by the devfsadmd daemon that transparently builds the necessary configuration entries for those devices capable of notifying the kernel when the device is added (such as USB, FC-AL, disks, and so on). Before Solaris 7, you needed to run several devfs administration tools such as drvconfig, disks, tapes, ports, and devlinks to add in the new device and create the /dev and /devices entries necessary for the Solaris operating environment to access the new device. These tools are still available but only for compatibility purposes; drvconfig and the other link generators are symbolic links to the devfsadm utility. Furthermore, these older commands are not aware of hot-pluggable devices, nor are they flexible enough for devices with multiple instances. The devfsadm command should now be used in place of all these commands; however, devfsadmd, the devfsadm daemon, automatically detects device configuration changes, so there should be no need to run this command interactively unless the device is unable to notify the kernel that it has been added to the system.
An example of when to use the devfsadm command would be if the system had been started but the power to the CD-ROM or tape drive was not turned on. During startup, the system did not detect the device; therefore, its drivers were not installed. This can be verified by issuing the sysdef command and examining the output for sd6, the SCSI target ID normally used for the external CD-ROM:
sd, instance #6 (driver not attached)
To gain access to the CD-ROM, you could halt the system, turn on power to the CD-ROM, and start the system backup, or you could simply turn on power to the CD-ROM and issue the following command at the command prompt:
When used without any options, devfsadm will attempt to load every driver in the system and attach each driver to its respective device instances. You can restrict devfsadm to only look at specific devices using the -c option as follows:
devfsadm -c disk -c tape
This restricts the devfsadm command to devices of class disk and tape. As shown, the -c option can be used more than once to specify more than one device class.
Now, if you issue the sysdef command, you'll see the following output for the CD-ROM:
sd, instance #6
You can also use the devfsadm command to configure only the devices for a specific driver such as "st" by using the -i option as follows:
devfsadm -i st