- Introduction
- Booting a System
- The OpenBoot Environment
- The OpenBoot Architecture
- The OpenBoot Interface
- Getting Help in OpenBoot
- PROM Device Tree (Full Device Pathnames)
- OpenBoot NVRAM
- OpenBoot Security
- OpenBoot Diagnostics
- OpenBoot PROM Versions
- Booting a System
- The Kernel
- System Run States
- System Shutdown
- Chapter Summary
- Apply Your Knowledge
PROM Device Tree (Full Device Pathnames)
Display devices connected to the bus.
Identify the system's boot device.
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 older Sun system with SBus architecture, such as a SPARCstation 20:
/sbus@1f,0/esp@0,40000/sd@3,0:a
NOTE
The Device Tree Versus Device Pathname The terms device tree and device pathname are often interchanged, and you'll see both used. They both mean the same thing.
The following example shows the device tree 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
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:
/pci@1f,0/pci@1/isptwo@4/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 bus nexus node. Connected to a bus nexus node is a leaf node, which is typically a controller for the attached device. 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, sbus 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. The following are common device driver names: fasFast/wide SCSI controller. hmeFast (10/100Mbps) Ethernet. ispDifferential SCSI controllers and the SunSwift card. glmUltraSCSI controllers. scsiSCSI devices. sfSCSI-compliant nexus driver that supports the Fibre Channel Protocol for SCSI on Private Fibre Channel Arbitrated Loops (FC-ALs). socSerial optical controller (SOC) device driver. socalThe 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. 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:
ok show-devs
The system outputs the entire device tree, as follows:
/SUNW,UltraSPARC-IIi@0,0 /pci@1f,0 /virtual-memory /memory@0,10000000 /aliases /options /openprom /chosen /packages /pci@1f,0/pci@1 /pci@1f,0/pci@1,1 /pci@1f,0/pci@1/pci@1 /pci@1f,0/pci@1/pci@1/SUNW,qfe@3,1 /pci@1f,0/pci@1/pci@1/pci108e,1000@3 /pci@1f,0/pci@1/pci@1/SUNW,qfe@2,1 /pci@1f,0/pci@1/pci@1/pci108e,1000@2 /pci@1f,0/pci@1/pci@1/SUNW,qfe@1,1 /pci@1f,0/pci@1/pci@1/pci108e,1000@1 /pci@1f,0/pci@1/pci@1/SUNW,qfe@0,1 /pci@1f,0/pci@1/pci@1/pci108e,1000@0 /pci@1f,0/pci@1,1/ide@3 /pci@1f,0/pci@1,1/SUNW,m64B@2
Commands that are used to examine the device tree are listed in Table 3.4.
Table 3.4 - Commands for Browsing the Device Tree
Command |
Description |
.properties |
Displays the names and values of the current node's properties. |
dev <device-path> |
Chooses the specified device node and makes it the current node. |
dev <node-name> |
Searches for a node with the specified name in the subtree below the current node and chooses the first such node found. |
dev .. |
Chooses the device node that is the parent of the current node. |
dev / |
Chooses the root machine node. |
device-end |
Leaves the device tree. |
<device-path> find-device |
Chooses the specified device node, similar to dev. |
ls |
Displays the names of the current node's children. |
pwd |
Displays the device pathname that names the current node. |
see <wordname> |
Decompiles the specified word. |
show-devs <device-path> |
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. |
words |
Displays the names of the current node's methods. |
<device-path>" select-dev |
Selects the specified device and makes it the active node. |
You can examine the device path from a Unix shell prompt by typing the following:
prtconf vp
OpenBoot Device Aliases
Create and remove custom device aliases.
Device pathnames can be long and complex. Device aliases, like Unix 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:
/sbus@1,f8000000/esp@0,40000/sd@3,0:a
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 |
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.
NOTE
New Names Overwrite Old Names If an alias with the same name already exists, the new value overwrites the old.
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 |
The following example creates a device alias named disk3, which represents an Integrated Drive Electronics (IDE) disk with a target ID of 3 on an Ultra 5 system:
devalias disk3 /pci@1f,0/pci@1,1/ide@3/disk@3,0
To confirm the alias, you type devalias, as follows:
ok devalias
The system responds by printing all the aliases, like this:
screen /pci@1f,0/pci@1,1/SUNW,m64B@2 net /pci@1f,0/pci@1,1/network@1,1 cdrom /pci@1f,0/pci@1,1/ide@3/cdrom@2,0:f disk /pci@1f,0/pci@1,1/ide@3/disk@0,0 disk3 /pci@1f,0/pci@1,1/ide@3/disk@3,0 disk2 /pci@1f,0/pci@1,1/ide@3/disk@2,0 disk1 /pci@1f,0/pci@1,1/ide@3/disk@1,0 disk0 /pci@1f,0/pci@1,1/ide@3/disk@0,0 ide /pci@1f,0/pci@1,1/ide@3 floppy /pci@1f,0/pci@1,1/ebus@1/fdthree ttyb /pci@1f,0/pci@1,1/ebus@1/se:b ttya /pci@1f,0/pci@1,1/ebus@1/se:a keyboard! /pci@1f,0/pci@1,1/ebus@1/su@14,3083f8:forcemode keyboard /pci@1f,0/pci@1,1/ebus@1/su@14,3083f8 mouse /pci@1f,0/pci@1,1/ebus@1/su@14,3062f8 name aliases
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.