PROM Device Tree (Full Device Pathnames)

The terms device tree
and device pathname are often interchanged, and you’ll see both used. They
both mean the same thing.

OpenBoot deals directly with the hardware devices in the system. Each device
has a unique name that represents both the type of device and the location of
that device in the device tree. The OpenBoot firmware builds a device tree for
all devices from information gathered at the POST. Sun uses the device tree to
organize devices that are attached to the system. The device tree is loaded into
memory, to be used by the kernel during boot to identify all configured devices.
The paths built in the device tree by OpenBoot vary, depending on the type of
system and its device configuration. The following example shows a full device
pathname for an internal disk on a peripheral component interconnect (PCI) bus
system such as an Ultra 5:

/pci@1f,0/pci@1,1/ide@3/disk@0,0

Typically, the OBP uses disk and cdrom for the boot disk
and CD-ROM drive.

The following example shows the disk device on an Ultra system with a
PCI-SCSI bus and a SCSI target address of 3:

/pci@1f,0/pci@1/scsi@1,1/sd@3,0

A device tree is a series of node names separated by slashes
(/). The top of the device tree is the root device node. Following the
root device node, and separated by a leading slash /, is a list of bus
devices and controllers. Each device pathname has this form:

driver-name@unit-address:device-arguments

The components of the device pathname are described in Table 3.3.

Table
3.3
Device
Pathname
Parameters

Parameter

Description

driver-name

This
is the root device node, which
is a human-readable string that
consists of 1 to 31 letters,
digits, and the following punctuation
characters:

,
(comma)

.
(period)

_
(underscore)

+
(plus sign)

-
(minus sign)

Uppercase
and lowercase characters are
distinct from one another. In
some cases, the driver name
includes the name of the device's
manufacturer and the device's
model name, separated by a comma.
Typically, the manufacturer's
uppercase, publicly listed stock
symbol is used as the manufacturer's
name (for example, SUNW,hme0).
For built-in devices, the manufacturer's
name is usually omitted (for
example, scsi or pci).

@ must
precede the address parameter;
it serves as a separator between
the driver name and unit address.

unit-address

A
text string that represents
the physical address of the
device in its parent's
address space. The exact meaning
of a particular address depends
on the bus to which the device
is attached. In this example,

/sbus@3,0/SUNW,fas@3,0/sd@0,0

sbus@3,0 represents
the I/O board in slot 1, located
on the back of the system, and SUNW,fas@3,0 is
the onboard fast/wide SCSI controller
of the same board.

socalThe
Fibre Channel host bus adapter,
which is an SBus card that implements
two full-duplex Fibre Channel
interfaces. Each Fibre Channel
interface can connect to an
FC-AL.

iprbAn
Intel network interface found
on x86/x64 based systems. The
network interface driver will
change depending on which one
of many possible third party
network interfaces you have
installed on your x86/x64 platform.
Others are dnet (Sohoware), elxl (3COM), spwr (SMC),
and nei (Linksys).

sd@0,0 is
the SCSI disk (sd)
set to target id
0.
(In this case, it is an internal
disk because only internal disks
should be controlled by the
onboard SCSI controller of the
I/O board in slot 1.)

device-arguments

A
text string whose format depends
on the particular device. device-arguments can
be used to pass additional information
to the device's
software. In this example:

/pci@1f,0/pci@1,1/ide@3/atapicd@2,0:f

the
argument for the disk device
is f.
The software driver for this
device interprets its argument
as a disk partition, so the
device pathname refers to partition f on
a CD-ROM.

You use the OpenBoot command show-devs to obtain
information about the device tree and to display device pathnames. This command
displays all the devices known to the system directly beneath a given device in
the device hierarchy. show-devs used by itself shows the entire device
tree. The syntax is as follows:

OpenBoot Device Aliases

Objective: Create and remove custom device aliases.

Device pathnames can be long and complex. Device aliases, like Unix file
system aliases, allow you to substitute a short name for a long name. An alias
represents an entire device pathname, not a component of it. For example, the
alias disk0 might represent the following device pathname:

/pci@1f,0/pci@1,1/ide@3/disk@0,0

OpenBoot provides the predefined device aliases listed in Table 3.5 for
commonly used devices, so you rarely need to type a full device pathname. Be
aware, however, that device aliases and pathnames can vary on each platform. The
device aliases shown in Table 3.5 are from a Sun Ultra 5 system.

Table 3.5 Predefined Device Aliases

Alias

Device Pathname

disk

/pci@1f,0/pci@1,1/ide@3/disk@0,0

disk0

/pci@1f,0/pci@1,1/ide@3/disk@0,0

disk1

/pci@1f,0/pci@1,1/ide@3/disk@1,0

disk2

/pci@1f,0/pci@1,1/ide@3/disk@2,0

disk3

/pci@1f,0/pci@1,1/ide@3/disk@3,0

cdrom

/pci@1f,0/pci@1,1/ide@3/cdrom@2,0:f

net

/pci@1f,0/pci@1,1/network@1,1

If you add disk drives or change the target of the startup
drive, you might need to modify these device aliases. Table 3.6 describes the
devalias commands, which are used to examine, create, and change
OpenBoot aliases.

Table 3.6 The devalias Commands

Command

Description

devalias

Displays all current device aliases

devalias_<alias>

Displays the device pathname that corresponds to alias

devalias_<alias> <device-path>

Defines an alias that represents device-path

Don’t Use Existing devalias Names

If an alias with the
same name already exists, you’ll see two aliases defined: a
devalias with the old value and a devalias with the new value.
It gets confusing as to which devalias is the current
devalias. Therefore, it is recommended that you do not reuse the name
of an existing devalias, but choose a new name.

The following example creates a device alias named bootdisk, which
represents an Integrated Drive Electronics (IDE) disk with a target ID of 3 on
an Ultra 5 system:

You
can
also
view
device
aliases
from
a shell
prompt
by using
the prtconf
-vp command.

User-defined aliases are lost after a system reset or power cycle unless you
create a permanent alias. If you want to create permanent aliases, you can
either manually store the devalias command in a portion of NVRAM called
NVRAMRC or you can use the nvalias and nvunalias
commands. The following section describes how to configure permanent settings in
the NVRAM on a Sun system.