Click on our Sponsors to help Support SunWorld
Pete's Super Systems by Peter Baer Galvin

Solaris 7: Is this OS for you?

What 64-bit computing can offer your system

May  1999
[Next story]
[Table of Contents]
Subscribe to SunWorld, it's free!

Solaris 7 promises to wring more out of your hardware. But how does it affect systems administration? And when is the right time to try it out? This month's column tries to provide some answers. (2,000 words)

Mail this
article to
a friend
First and foremost among Sun's goals in releasing Solaris 7, was the completion of the Solaris move to 64-bit computing. In previous releases, the filesystem and files themselves became 64-bit capable (or at least 40-bit, or 1-terabyte capable). Solaris 7 finishes the work by making the kernel itself, kernel memory space, and application memory space all 64-bit enabled. Other features of Solaris 7 include improved performance (in part due to the move to 64 bits), a great number of bug fixes, and improved support for hot-swapping hardware components. Sun is promising even more tasty features in future updates to Solaris 7.

The move to 64-bit isn't without complications, however. Administrators now have the choice of booting a system in 32-bit mode or 64-bit mode. This column explores the boot issue, as well as other changes in Solaris 7 that could have an effect on systems administration.

There is quite a bit of confusion about just what 64-bit computing means, and what the limits of 32-bit computing are. From the Solaris point of view, 32-bit computing means a limited address space (generally limited to 2 gigabytes (GB) per process and 2 GB for the kernel). Applications such as databases, and the kernel itself, need room to stretch and can take advantage of 64-bit computing. When Solaris boots in 32-bit mode, it allows development of 64-bit applications on sun4d sun4u, sun4m, and sundc architectures. The command uname -m displays the architecture type.

# uname -m
# uname -a
SunOS 5.7 Generic_106541-02 sun4u sparc SUNW,Ultra-5_10

When booted in 64-bit mode, Solaris allows development and execution of 64-bit applications, as well as development and execution of 32-bit applications. Solaris 7 only runs in 64-bit mode and executes 64-bit applications on the UltraSPARCprocessor (sun4u).

To determine if a Solaris 7 system is booted in 32- or 64-bit modes, use the new isainfo (instruction set architecture info) command:

# isainfo
sparcv9 sparc
# isainfo -v
64-bit sparcv9 applications
32-bit sparc applications
# isainfo -b
# isainfo -kv
64-bit sparcv9 kernel modules

The -b" option shows the number of bits supported by native applications on the running system. That is, it indicates the optimal bit size for applications running on the system. The last command, isainfo -kv, is the most sure way to determine if the kernel is running in 32-bit or 64-bit mode. It indicates which flavor of kernel modules is loaded.

32-bit mode is the only one possible for non-UltraSPARC systems. However, installation of Solaris 7 on non-UltraSPARC does allow for the selection of the 64-bit libraries for developers.

Installation of Solaris 7 on UltraSPARC defaults to 64-bit support. Both upgrade and installation options include the 64-bit choice. You can even select 64-bit support within jumpstart by setting the keyword isa_bits to either 32 or 64.


Who's-who: 32- and 64- bit applications
Applications that are either 32-bit or 64-bit run seamlessly on an UltraSPARC system booted in 64-bit mode. Some programs differ depending on the bit size. These include programs that interface with the kernel (ps, truss, and the like) and those that take advantage of the enlarged address space. For these programs, a wrapper (/usr/lib/isaexec) is invoked, and it, in turn, invokes the appropriate binary. The wrapper simply determines the mode of operation of the system, and then prepends the path sparcv7/ or sparcv9/ to the filename, causing the appropriate binary in the sparc? subdirectories to be executed.

To explore this area further, take a look in /usr/proc/bin. All the binaries are 5,536 bytes in length (they are hard links to the wrapper program), and are mirrored by the "real" binaries in the sparcv7/ and sparcv9/ subdirectories under that directory. There is also an isaexec libc routine for use by programs that wish to use this functionality. The boot man page has details on how to boot 32-bit or 64-bit Solaris.

All the applications that ship with Solaris 7 are 64-bit aware, and the appropriate ones have been recompiled in 64-bit mode. However, third-party programs that read kernel memory or use /proc (see last month's Pete's Super Systems, "The power of /proc") need to be recompiled for Solaris 7, as the Solaris kernel is now 64-bit. For third-party 64-bit programs, there is a new shell variable, LD_LIBRARY_PATH_64, which is used only by 64-bit applications to find their libraries.

Before attempting to install Solaris 7 or upgrade a machine to Solaris 7, consider reviewing the Supported Hardware List in the Solaris 7 Hardware Platform Guide. Most "modern" hardware is supported, but it can never hurt to check the documentation.

Booting up in 64-bit mode
In order for an UltraSPARC-based machine to boot in 64-bit mode, it may need an OpenBoot firmware upgrade. This EEPROM flash is done automatically, when possible and if needed, by the Solaris 7 install/upgrade facility. If an upgrade is needed, the installation software will alert you and ask if it should proceed. This flash upgrade depends on the hardware platform. Ultra 1 and Ultra 2 workstations have a jumper on the motherboard that disables firmware updates. This jumper needs to be removed for the flash to work. The Sun E-450 and Sun Enterprise servers (E3X00 through 6X00) control flashing via an EEPROM variable, and thus are flashed automatically via Solaris 7. For the EEPROM to be write-enabled, the front-panel key-switch on these servers needs to be in the "on" or "diag" mode. The "lock" mode makes the EEPROM write-protected. Therefore, set the key-switch before doing the Solaris 7 install or upgrade. Details about hardware issues are included in Solaris 7 Release Notes. This document lists the minimum firmware versions (as reported by prtconf -V). Note that /usr/platform/sun4u/prtdiag -v shows this information, and a whole lot more. (While it is true that prtdiag is not needed for this column on Solaris 7, I like it so much that I discuss it whenever possible to be sure that sysadmins know about it.)

First, here are the commands from an Ultra E450 running Solaris 2.6:

# prtconf -V | more
OBP 3.5.105 1997/07/25 15:20

# /usr/platform/sun4u/sbin/prtdiag -v
System Configuration:  Sun Microsystems  sun4u Sun Ultra Enterprise 450 (UltraSPARC-II 248MHz)
System clock frequency: 83 MHz
Memory size: 128 Megabytes

========================= CPUs =========================

                    Run   Ecache   CPU    CPU
Brd  CPU   Module   MHz     MB    Impl.   Mask
---  ---  -------  -----  ------  ------  ----
SYS     3     3      248     1.0   US-II    1.1

========================= Memory =========================

       Interlv.  Socket   Size
Bank    Group     Name    (MB)  Status
----    -----    ------   ----  ------
  0      none      1901    32      OK
  0      none      1902    32      OK
  0      none      1903    32      OK
  0      none      1904    32      OK

========================= IO Cards =========================

     Bus   Freq
Brd  Type  MHz   Slot  Name                              Model
---  ----  ----  ----  --------------------------------  ----------------------
SYS   PCI    33     1   pciclass,001000                   Symbios,53C875        
SYS   PCI    33    10   SUNW,m64B                         ATY,GT-B              

No failures found in System

========================= Environmental Status =========================

System Temperatures (Celsius):
CPU 3      40

Front Status Panel:
Keyswitch position is in Secure mode.

                      [ ON]         [OFF]           [OFF]
                      [OFF]         [OFF]           [OFF]

Disk LED Status:        OK = GREEN      ERROR = YELLOW
                DISK 10: [EMPTY]        DISK 11: [EMPTY]
                DISK  8: [EMPTY]        DISK  9: [EMPTY]
                DISK  6: [EMPTY]        DISK  7: [EMPTY]
                DISK  4: [EMPTY]        DISK  5: [EMPTY]
                DISK  2:    [OK]        DISK  3: [EMPTY]
                DISK  0:    [OK]        DISK  1:    [OK]

Fan Bank   Speed    Status
--------   -----    ------
CPU          31       OK  
PWR          31       OK  

Power Supplies:
Supply     Rating    Temp    Status
------     ------    ----    ------
  0         550 W     31       OK  
  1         550 W     31       OK  
  2         550 W     32       OK  

========================= HW Revisions =========================

ASIC Revisions:
STP2223BGA: Rev 4
STP2223BGA: Rev 4
STP2223BGA: Rev 4
STP2003QFP: Rev 1
STP2205BGA: Rev 1

System PROM revisions:
  OBP 3.5.105 1997/07/25 15:20   POST 4.0.6 1997/07/22 10:20

Note that, according to the Sun table, this system would not need an EEPROM upgrade to run in 64-bit mode. A simple upgrade would do the trick.

This output is from an Ultra-5 workstation already upgraded to Solaris 7:

# prtconf -V
OBP 3.15.2 1998/11/10 10:35

If the system in question requires a firmware upgrade, consult the Solaris 7 Sun Hardware Platform Guide for details on the specifics of firmware upgrades.

As a cautionary aside, always check that the hardware is error-free before attempting to upgrade the firmware. The status light on each board in an Enterprise server, or on the front of an E450, should be green. Any boards showing errors (yellow light) are likely to fail hard, or cause the entire system to fail hard, if an upgrade is attempted. Likewise, check the status lights after an EEPROM upgrade to be sure that all boards are (in the words of Star Trek's Commander Data) "fully functional." Also note that EEPROM variables can be blown away by a firmware upgrade. Be sure to record the variable states (via the eeprom command) before doing the upgrade.

Sun Enterprise 10000 servers do not have firmware. Rather, their EEPROM images are loaded from the SSP workstations. Details on installing or upgrading Solaris 7 on an E10000 are included in the documents mentioned above.

Other machines, including the Ultra 5, 10, 60, and E250, have always shipped with 64-bit friendly firmware and do not need a firmware upgrade.

There is a lot of information available about upgrading to Solaris 7 available at

Noteworthy sysadmin commands
There are a couple of new and improved commands available for systems administration. Although they are based on the proc system, they live in /usr/bin because they're needed at system boot time. In fact, the system startup scripts have been rewritten to take advantage of these new commands.

/usr/bin/plimit gets and sets resource limits dynamically. No need to modify /etc/system or use adb to change kernel variables. /usr/bin/pgrep searches through the process list for a named process (finally!). /usr/bin/pkill searches for a process by name and sends it a specified signal.

Note that the pgrep and pkill commands are faster than the similar ps | grep pipe because they use the proc filesystem directly.

Also worthy of note are new options to truss -d and -D options, which add timestamp information to the output of truss.

Perhaps the most useful improvement to systems administration and system debugging is the truss -u option. This option traces the entry and exit into user-level function calls in a given program or process. Combined with the information about system calls, this information can help pinpoint the section of code that is calling the system call that is failing (for instance).

When to move to Solaris 7
A burning question on the minds of system administrators is when the time will be right to move to Solaris 7. Experience in the field suggests that Solaris 7 is currently being used in development and test environments, but not in production environments. Part of the problem is the lack of availability of applications that run in 64-bit mode to take advantage of the new features. For instance, even the Veritas tools aren't yet available for Solaris 7. Determine the state of the applications that run in your environment as a first planning step. The second step could be to run Solaris 7 on workstations and nonproduction servers. When applications are available and if Solaris 7 proves stable on your systems, it should be time to plan a Solaris 7 upgrade. The feedback from sites using Solaris 7 indicate that it is reliable, fast, and functional. All the signs are there for a successful mass-migration to Solaris 7 as the applications allow it.

One final note: Developers need release 5 or better of the Sun compilers to compile 64-bit applications. To do so, invoke cc with the -xarch=v9 option, as in: cc -xarch=v9 hello.c.

Recent versions of GNU C already support the SPARC v9 architecture.

Click on our Sponsors to help Support SunWorld


Related articles in SunWorld Additional SunWorld resources

About the author
[Peter Galvin's photo]Peter Baer Galvin is the chief technologist for Corporate Technologies, a systems integrator and VAR. Before that, Peter was the systems manager for Brown University's Computer Science Department. He has written articles for Byte and other magazines and previously wrote Pete's Wicked World, the security column for SunWorld. Peter is coauthor of the Operating Systems Concepts textbook. As a consultant and trainer, Peter has taught tutorials on security and system administration and given talks at many conferences and institutions.

What did you think of this article?
-Very worth reading
-Worth reading
-Not worth reading
-Too long
-Just right
-Too short
-Too technical
-Just right
-Not technical enough

[Table of Contents]
Subscribe to SunWorld, it's free!
[Next story]
Sun's Site

[(c) Copyright  Web Publishing Inc., and IDG Communication company]

If you have technical problems with this magazine, contact

Last modified: