Solaris 7: Is this OS for you?
What 64-bit computing can offer your system
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)
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 sun4u # uname -a SunOS alice.cptech.com 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 64 # isainfo -kv 64-bit sparcv9 kernel modules
-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 (
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
sparcv9/ to the filename,
causing the appropriate binary in the
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
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
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
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): ------------------------------ AMBIENT 19 CPU 3 40 ================================= Front Status Panel: ------------------- Keyswitch position is in Secure mode. System LED Status: POWER GENERAL ERROR ACTIVITY [ ON] [OFF] [OFF] DISK ERROR THERMAL ERROR POWER SUPPLY ERROR [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] ================================= Fans: ----- 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 docs.sun.com.
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
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
pkill commands are
faster than the similar
ps | grep pipe because they use the
Also worthy of note are new options to
truss -d and
options, which add timestamp information to the output of
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
-xarch=v9 option, as in:
cc -xarch=v9 hello.c.
Recent versions of GNU C already support the SPARC v9 architecture.
About the author
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.
If you have technical problems with this magazine, contact firstname.lastname@example.org