May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

PROM Device Tree (Full Device Pathnames)

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:



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:


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:


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:


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  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:

fas—Fast/wide SCSI controller.

hme—Fast (10/100Mbps) Ethernet.

isp—Differential SCSI controllers and the SunSwift card.

glm—UltraSCSI controllers.

scsi—SCSI devices.

sf—SCSI-compliant nexus driver that supports the Fibre Channel Protocol for SCSI on Private Fibre Channel Arbitrated Loops (FC-ALs).

soc—Serial optical controller (SOC) device driver.

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.

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:


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:


Commands that are used to examine 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

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:


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.

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.


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.

OpenBoot NVRAM

System configuration variables are stored in system NVRAM. These OpenBoot variables determine the startup machine configuration and related communication characteristics. If you modify the values of the configuration variables, any changes you make remain in effect even after a power cycle. Configuration variables should be adjusted cautiously, however, because incorrect settings can prevent a system from booting.

Table 3.7 describes OpenBoot's NVRAM configuration variables, their default values, and their functions.

NVRAM Variables

Variable Default Description
auto-boot? true The system starts up automatically after power-on or reset if auto-boot?  is true. If it is set to false, the system stops at the OpenBoot prompt (ok) after power-on or reset.
boot-command boot The command that is executed if auto-boot?  is true.
boot-device disk  or net The device from which to start up.
boot-file Empty string Arguments passed to the started program.
diag-device net The diagnostic startup source device.
diag-file Empty string Arguments passed to the startup program in diagnostic mode.
diag-switch? false Whether to run in diagnostic mode.
fcode-debug? false Whether name fields are included for plug-in device FCodes.
input-device keyboard A console input device (usually keyboard, ttya, or ttyb).
nvramrc Empty The contents of NVRAMRC.
oem-banner Empty string A custom original equipment manufacturer (OEM) banner (enabled with oem-banner? true).
oem-banner? false If true, use custom OEM banner.
oem-logo No default A byte array custom OEM logo (enabled with oem-logo? true). Displayed in hexadecimal.
oem-logo? false If true, use custom OEM logo; otherwise, use the Sun logo.
output-device screen A console output device (usually screen, ttya, or ttyb).
sbus-probe-list 0123 Which SBus slots to probe and in what order.
screen-#columns 80 The number of onscreen columns (characters/line).
screen-#rows 34 The number of onscreen rows (lines).
security-#badlogins No default The number of incorrect security password attempts.
security-mode none The firmware security level (options: none, command, or full).
security-password No default The firmware security password (which is never displayed).
use-nvramrc? false If true, execute commands in NVRAMRC during system startup.



OpenBoot Versions Because older SPARC systems use older versions of OpenBoot, they might use different defaults or different configuration variables from those shown in Table 3.7. This text describes OpenBoot version 4.

You can view and change the NVRAM configuration variables by using the commands listed in Table 3.8.

Table 3.8 - Commands for Viewing and Modifying Configuration Variables

Command Description
password Sets the security password.
printenv Displays the current value and the default value for each variable. To show the current value of a named variable, you type the following: printenv <parameter-name>
setenv <variable> <value> Sets <variable>  to the given decimal or text <value>. Changes are permanent, but they often take effect only after a reset.
set-default <variable> Resets the value of <variable>  to the factory default.
set-defaults Resets variable values to the factory defaults.


The following examples illustrate the use of the commands described in Table 3.8. All commands are entered at the ok  OpenBoot prompt.

You use the printenv  command, with no argument, to display the current value and the default value for each variable:

ok printenv

The system responds with this:

Variable Name     Value             Default Value
tpe-link-test?    true              true
scsi-initiator-id   7               7
keyboard-click?    false             false
ttyb-rts-dtr-off   false             false
ttyb-ignore-cd    true              true
ttya-rts-dtr-off   false             false
ttya-ignore-cd    true              true
ttyb-mode       9600,8,n,1,-          9600,8,n,1,-
ttya-mode       9600,8,n,1,-          9600,8,n,1,-
pcia-probe-list    1,2,3,4            1,2,3,4
pcib-probe-list    1,2,3             1,2,3
mfg-mode       off              off
diag-level      max              max
#power-cycles     89
fcode-debug?     false             false
output-device     screen             screen
input-device     keyboard            keyboard
load-base       16384             16384
boot-command     boot              boot
auto-boot?      false             true
watchdog-reboot?   false             false
diag-device      net              net
boot-device      disk:a disk net        disk net
local-mac-address?  false             false
ansi-terminal?    true              true
screen-#columns    80               80
screen-#rows     34               34
silent-mode?     false             false
use-nvramrc?     false             false
security-mode     none
security-#badlogins  0
oem-logo?       false             false
oem-banner?      false             false
diag-switch?     false             false


The printenv Command Depending on the version of OpenBoot that you have on your system, the printenv  command might show slightly different results. This example uses a system running OpenBoot version 3.15.

To set the auto-boot?  variable to false, you type the following:

ok setenv auto-boot? false

The system responds with this:

auto-boot? =  false

You can verify the setting by typing the following:

ok printenv auto-boot?

The system responds with this:

auto-boot? =   true

To reset the variable to its default setting, you type the following:

ok set-default auto-boot?

The system does not respond with a message—only another OpenBoot prompt. You can verify the setting by typing the following:

ok printenv auto-boot?

The system responds with this:

auto-boot? =   true

To reset all variables to their default settings, you type the following:

ok set-defaults

The system responds with this:

Setting NVRAM parameters to default values.

It's possible to set variables from the Unix command line by issuing the eeprom  command. You must be logged in as root to issue this command, and although anyone can view a parameter, only root can change the value of a parameter. For example, to set the auto-boot?  variable to true, you type the following at the Unix prompt:

eeprom auto-boot\?=true

Any nonroot user can view the OpenBoot configuration variables from a Unix prompt by typing the following:


For example, to change the OpenBoot parameter security-password  from the command line, you must be logged in as root and issue the following command:

example# eeprom security-password=
Changing PROM password:
New password:
Retype new password:


Setting the OpenBoot Security Mode Setting the security mode and password can be dangerous: If you forget the password, the system is unable to boot. It is nearly impossible to break in without sending the CPU to Sun to have the PROM reset. OpenBoot security is discussed more in the section "OpenBoot Security," later in this chapter.

The security mode password you assign must be between zero and eight characters. Any characters after the eighth are ignored. You do not have to reset the system after you set a password; the security feature takes effect as soon as you type the command.

With no parameters, the eeprom  command displays all the OpenBoot configuration settings, similar to the OpenBoot printenv  command.

To view OpenBoot parameters from the shell prompt, you type prtconf –vp.

You can use the NVRAM commands listed in Table 3.9 to modify device aliases so that they remain permanent, even after a restart.


Resetting NVRAM Variables If you change an NVRAM setting on a SPARC system and the system no longer starts up, you can reset the NVRAM variables to their default settings by holding down Stop+N while the machine is powering up. When you issue the Stop+N key sequence, you hold down Stop+N immediately after turning on the power to the SPARC system; you then keep these keys pressed for a few seconds or until you see the banner (if the display is available).

These are both good techniques for forcing a system's NVRAM variables to a known condition.

Table 3.9 - NVRAM Commands

Command Description
nvalias <alias> <device-path> Stores the command devalias <alias> <device-path>  in NVRAMRC. (The alias persists until the nvunalias  or set-defaults  command is executed.) This command turns on use-nvramrc?.
nvunalias <alias> Deletes the corresponding alias from NVRAMRC.


For example, to permanently create a device alias named disk3  that represents a SCSI disk with a target ID of 3 on a SPARCstation 10 system, you type the following:

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



Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy


War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes


Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law


Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D

Copyright © 1996-2021 by Softpanorama Society. was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site


The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: March 12, 2019