C H A P T E R 3 |
Setting Configuration Variables |
This chapter describes how to access and modify nonvolatile RAM (NVRAM) configuration variables. Its sections include:
The procedures described in this chapter assume that the user interface is active. See Chapter 1 for information about starting the user interface.
System configuration variables are stored in the system NVRAM . These variables determine the start-up system configuration and related communication characteristics. You can modify the values of the configuration variables, and any changes you make remain in effect even after a power cycle. Configuration variables should be adjusted cautiously.
TABLE 3-1 lists a typical set of NVRAM configuration variables defined by IEEE Standard 1275-1994 .
Note Note - Different OpenBoot implementations may use different defaults and/or different configuration variables. |
NVRAM configuration variables can be viewed and changed using the commands listed in TABLE 3-2 .
The following pages show how these commands can be used.
Note Note - Solaris provides the eeprom utility for modifying OpenBoot configuration variables. |
To display a list of the current variable settings on your system, type:
In the displayed, formatted list of the current settings, numeric variables are often shown in the decimal format.
To change a variable setting, type:
variable-name is the name of the variable. value is a numeric value or text string appropriate to the named variable. A numeric value is interpreted as a decimal number, unless preceded by 0x , which is the qualifier for a hexadecimal number.
For example, to set the auto-boot? variable to false , type:
Note Note - Many variable changes do not affect the operation of the firmware until the next power cycle or system reset, at which time the firmware uses the variable's new value. |
You can reset one or most of the variables to the original defaults using the set-default variable and set-defaults commands.
For example, to reset the auto-boot? variable to its default setting (true), type:
To reset most variables to their default settings, type:
On many SPARC systems, you can reset the NVRAM variables to their default settings by holding down Stop-N while the system is powering up. When issuing this command, hold down Stop-N immediately after turning on the power to the SPARC system, and keep it pressed for a few seconds or until you see the banner (if the display is available). This is a good technique to force a SPARC compatible system's NVRAM variables to a known condition. See also Appendix C .
The NVRAM system security variables are:
security-mode can restrict the set of operations that users are allowed to perform from the user interface. The three security modes, and their available commands, are listed in the following table in the order of most to least secure.
With security-mode set to command :
A password is not required if you type the boot command by itself. However, if you use the boot command with an argument, a password is required.
Examples are shown in the following screen.
To set the security password and command security mode, type the following at the ok prompt:
ok password ok New password (only first 8 chars are used): ok Retype new password: ok setenv security-mode command ok |
The security 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; the security feature takes effect as soon as you type the command.
If you enter an incorrect security password, there will be a delay of about 10 seconds before the next boot prompt appears. The number of times that an incorrect security password is typed is stored in the security-#badlogins variable.
The full security mode is the most restrictive. With security-mode set to full :
To set the security password and full security mode, type the following at the ok prompt:
ok password ok New password (only first 8 chars are used): ok Retype new password: ok setenv security-mode full ok |
The banner configuration variables are:
To view the power-on banner, type:
ok banner Sun Ultra 1 SBus (UltraSPARC 167 MHz),Keyboard Present PROM Rev. 3.0, 64MB memory installed, Serial # 289 Ethernet address 8:0:20:d:e2:7b, Host ID: 80000121 ok |
The banner for your system will be different.
The banner consists of two parts: the text field and the logo (over serial ports, only the text field is displayed). You can replace the existing text field with a custom text message using the oem-banner and oem-banner? configuration variables.
To insert a custom text field in the power-on banner, type:
The system displays the banner with your new message, as shown in the preceding screen.
The graphic logo is handled differently. oem-logo is a 512-byte array, containing a total of 4096 bits arranged in a 64 x 64 array. Each bit controls one pixel. The most significant bit (MSB) of the first byte controls the upper-left corner pixel. The next bit controls the pixel to the right of it, and so on.
To create a new logo, first create a Forth array containing the correct data; then copy this array into oem-logo . The array is then installed in oem-logo with $setenv . The example below fills the top half of oem-logo with an ascending pattern.
ok create logoarray d# 512 allot ok logoarray d# 256 0 do i over i + c! loop drop ok logoarray d# 256 " oem-logo" $setenv ok setenv oem-logo? true ok banner |
To restore the system's original power-on banner, set the oem-logo? and oem-banner? variables to false .
Because the oem-logo array is so large, printenv displays approximately the first 8 bytes (in hexadecimal). To display the entire array, type oem-logo dump . The oem-logo array is not erased by set-defaults , since it might be difficult to restore the data. However, oem-logo? is set to false when set-defaults executes, so the custom logo is no longer displayed.
Note Note - Some systems do not support the oem-logo feature. |
The console is used as the primary means of communication between OpenBoot and the user. The console consists of an input device, used for receiving information supplied by the user, and an output device, used for sending information to the user. Typically, the console is either the combination of a text/graphics display device and a keyboard or an ASCII terminal connected to a serial port.
The configuration variables related to the control of the console are:
You can use these variables to assign the power-on defaults for the console. These values do not take effect until after the next power cycle or system reset.
The input-device and output-device variables control the firmware's selection of input and output devices after a power-on reset. The default input-device value is keyboard and the default output-device value is screen . The values of input-device and output-device must be device specifiers. The aliases keyboard and screen are often used as the values of these variables.
When the system is reset, the named device becomes the initial firmware console input or output device. (If you want to temporarily change the input or output device, use the input or output commands described in Chapter 4 ).
To set ttya as the initial console input device, type:
If you select keyboard for input-device , and the device is not plugged in, input is accepted from a fallback device (typically ttya ) after the next power cycle or system reset. If you select screen for output-device , but no frame buffer is available, output is sent to the fall-back device after the next power cycle or system reset.
To specify an SBus frame buffer as the default output device (especially if there are multiple frame buffers in the system), type:
The following values represent the typical range of communications characteristics for serial ports:
You can use the auto-boot? configuration variable to determine whether or not the system boots automatically after a power cycle or system reset.
If auto-boot? is true and if OpenBoot is not in diagnostic mode, the system boots automatically after a power-cycle or system reset using the boot-device and boot-file values.
If auto-boot? is true and if OpenBoot is in diagnostic mode, the system boots automatically after a power-cycle or system reset using the diag-device and diag-file values.
These variables can also be used during manual booting to select the boot device and the program to be booted. For example, to specify default booting from the network server, type:
Changes to boot-file, boot-device , diag-file, and diag-device take effect the next time that boot is executed.
The Power-on Testing variables are:
Setting diag-switch? to true causes the function diagnostic-mode? to return true . When diagnostic-mode? returns true , the system:
Performs more thorough self tests during any subsequent power-on or system reset process. The coverage of self tests executed depends on the value of diag-level. For maximum coverage, set the diag-level value to max .
Uses different configuration variables for booting. For more details on the effects on the boot process, see Chapter 2 .
Most systems have a factory default of false for the diag-switch? variable. To set diag-switch? to true , type:
Note Note - Some implementations enable you to force diag-switch? to true by using an implementation-dependent key sequence during power-on. Check your system's documentation for details, or see Appendix C. |
To set diag-switch? to false , type:
When not in diagnostic mode, the system does not announce the diagnostic tests as they are performed (unless a test fails) and may perform fewer tests.
You can use the nvramrc configuration variable store user-defined commands executed during start-up. The contents of the variable are called the script.
Typically, nvramrc is used by a device driver to save start-up configuration variables, to patch device driver code, or to define installation-specific device configuration and device aliases. It can also be used for bug patches or for user-installed extensions. Commands are stored in ASCII, just as the user would type them at the console.
If the use-nvramrc? configuration variable is true , the script is evaluated during the OpenBoot start-up sequence as shown:
Perform power-on self-test (POST)
Perform system initialization
Evaluate the script (if use-nvramrc? is true )
Execute secondary diagnostics
Perform default boot (if auto-boot? is true )
It is sometimes desirable to modify the sequence probe-all install-console banner . For example, commands that modify the characteristics of plug-in display devices may need to be executed after the plug-in devices have been probed, but before the console device has been selected. Such commands would need to be executed between probe-all and install-console . Commands that display output on the console would need to be placed after install-console or banner .
This is accomplished by creating a custom script which contains either banner or suppress-banner since the sequence probe-all install-console banner is not executed if either banner or suppress-banner is executed from the script. This allows the use of probe-all , install-console, and banner inside the script, possibly interspersed with other commands, without having those commands re-executed after the script finishes.
Most user interface commands can be used in the script. The following cannot:
The script editor, nvedit , lets you create and modify the script using the commands listed in TABLE 3-4 .
Use the editing commands shown in TABLE 3-5 in the script editor.
Use the following steps to create and activate the script:
1. At the ok prompt, type nvedit.
Edit the script using editor commands.
2. Press Control-C to get out of the editor and back to the ok prompt.
If you have not yet typed nvstore to save your changes, you may type nvrun to execute the contents of the temporary edit buffer.
3. Type nvstore to save your changes.
4. Enable the interpretation of the script by typing:
5. Type reset-all to reset the system and execute the script, or execute the contents directly by typing:
The following example shows you how to create a simple colon definition in the script.
ok nvedit 0: : hello ( -- ) 1: ." Hello, world. " cr 2: ; 3: ^C ok nvstore ok setenv use-nvramrc? true ok reset-all ... ok hello Hello, world. ok |
Notice the nvedit line number prompts ( 0: , 1: , 2: , 3: ) in the above example. These prompts are system-dependent.
Copyright © 2002, Sun Microsystems, Inc. All rights reserved.