
			     SYSINFO 3.0

			  Michael A. Cooper
	       Research, Development, and Systems Group
		    University Computing Services
		  University of Southern California
			   mcooper@usc.edu


			 GENERAL INFORMATION

Sysinfo is a program which shows various pieces of information about a
system.  The original version was written to simply determine the
model name of a system for use in /etc/motd.  It also supported a few
other pieces of information that were simple to obtain, but the method
used to obtain the information on various different OS's varied.  The
current version shows many different "general" bits of system
information as well as fairly detailed information about system
hardware devices (disk drives, frame buffers, tape drives, etc.),
kernel variables, and system configuration information.  A lot of the
information Sysinfo displays is difficult, if not impossible, to
determine by normal OS commands and/or files after boot time on many
OS's.

Most of the OS specific information was determined by groveling
/usr/include/{sys,machine,*dev}/*.h files, section 4 man pages, and
reverse engineering the output from various commands like devinfo
(SunOS) and using the trace(2) facility.  Some of the network (netif)
code was inspired by the sources to the 4.3BSD netstat and ifconfig
commands.


			 RELEASE INFORMATION

The 3.0 release features a number of major changes in platform support
and in additional classes of information that are shown.  I would
really like to do device support for HPUX 9.x, but 9.x is such a mess
that device support is difficult and ugly.  I'm not sure whether I
will go ahead with device support for 9.x or wait for and hope that
10.x improves things.

The information shown for the Kernel class is not very complete and
may be inaccurate in some cases.  I'm open to input as to what kernel
variable info is important enough that Sysinfo should check for it.

This may be the last release that supports Ultrix and NeXTStep.  I
probably won't support those platforms after summer, 1995.


			 SUPPORTTED PLATFORMS

Sysinfo has been tested on the platforms listed below.  Sysinfo
may work under OS versions or platforms not listed below.

				 INFORMATION CLASSES SUPPORTED
PLATFORM			General	Device	Kernel	SysConf
==============================	=======	======	======	=======
Sun SPARC / SunOS 4.1.3		   X	   X	   X	   X
(SunOS 4.1.3 /usr/ucb/cc)
---------------------------------------------------------------
Sun SPARC / SunOS 5.3		   X	   X	   X	   X
(SunC 3.0)
---------------------------------------------------------------
IBM RS6000 / AIX 3.2.5		   X	   X		   X
(XLC ??)
---------------------------------------------------------------
DEC MIPS / Ultrix 4.2A		   X	   X	   X	   X
---------------------------------------------------------------
NeXT NeXTcube / NeXTStep 3.1	   X	   X	   X
---------------------------------------------------------------
HP 9000/700 / HP-UX 9.03	   X		   X	   X
(HP-UX C)
---------------------------------------------------------------
Convex SPP / SPP-UX 2.0.2	   X			   X
(Convex C 6.0.2)


			       CHANGES

A list of major changes from version to version is listed below.
For more details, please read the `ChangeLog' file.

CHANGES FROM 2.1.3 TO 3.0

A number of major changes have been made between 2.1.3 and 3.0:

 	Almost all configuration information is now read from externel 
	configuration files at runtime.  This allows easier modifications
	and greatly simplified end-user customization.

	Add support for showing simple arbitrary kernel information.

	Add support for showing system configuration information.

	Revamp -show option to work in conjuction with new -class option
	to specify specific classes (General, Kernel, Device).

	Add ability to show information about a specific list of items
	for each class of informatin (Device, Kernel, General, SysConf).

	Major cleanup of internel code and instructions.

	Add basic support for HP-UX 9.x and Convex SPP-UX 2.x.

	Update device information for Sun hardware.

	Modify device information on AIX hosts to show better hardware info.

	Miscellaneous bug fixes.

CHANGES FROM 2.0 to 2.1.3

The major changes between version 2.0 and 2.1 include showing the
number of CPU's on systems supporting sysconf(_SC_NPROCESSORS_CONF)
(currently Solaris 2.2 and later) and showing the type of keyboard
present for Sun systems.  Also, when running external programs,
sysinfo now sets the effective uid to the user running sysinfo and
uses execve() directly, instead of calling system().

Sysinfo should also be much more reliable on SunOS 4.1.x machines.  A
number of problems in SunOS 4.1.x exist that cause system crashes that
earlier versions of SYSINFO tweaked.  Mostly these problems have to do
with CDROM's and floppy disk drives.

The Alliant and Sun-386i platforms have also been dropped starting with
version 2.1.  This is due to those platforms being phased out here at USC.

CHANGES SINCE VERSION 1.x

The major changes since version 1.x include adding support for getting
device information from the Open Boot PROM (OBP) on Sun-like machines
and support for SunOS 5.x (Solaris 2.x).  The OBP interface provides
more information than ever.  The OBP interface also gives sysinfo the
ability to provide detailed information on what types of CPUs are
available.

SunOS 5.x comes with a number of features which makes SYSINFO much
more portable across different manufacturer's hardware running SunOS
5.x.  This includes the ability to determine the label on a disk drive
in a device driver independent fashion.  This ability alone should
eliminate most of the problems with SYSINFO causing certain systems
with certain system configurations to crash.  (Which I still maintain
is the fault of SunOS and not SYSINFO.)  The OBP kernel interface in
SunOS 5.x also adds the ability to associate nodes found by looking
through the kernel with those nodes found by querying the OBP
directly.  This means SYSINFO can extract and assign much more
information found by direct OBP queries than is possible with SunOS
4.x.


			   WHERE TO GET IT

The latest/greatest version of sysinfo is available via anonymous ftp
on `usc.edu' in `/pub/sysinfo'.  If you did not obtain sysinfo from there,
then it's always a good idea to check to see if there's a newer version 
available before proceeding.


			     INSTALLATION

1) Read the comments in `Makefile' and make any necessary changes.

2) Run `make'.  If you have multiple kernel architectures (kvm's) 
   for the same OS (like for SunOS 4.x), you must compile and install sysinfo
   for each kernel arch.  Currently, this is only required for SunOS 4.x.
   It is _NOT_ required for Solaris 2.x/SunOS 5.x.

3) STOP!  DO NOT run `make install' or `make installmeta' without _FIRST_
   running `make'.  The command `make' is the only way to compile Sysinfo
   for your platform.

4) To install the sysinfo program, you can either use `make installmeta' 
   (read the file `metasysinfo' for details) or you can run `make install'.

5) Run `make install.man' to install the man page.


			      BUG FIXES

Please send bug fixes, suggestions, and comments to mcooper@usc.edu.


		       PLATFORM SPECIFIC NOTES

The following are notes regarding specific platforms:

SunOS 4.x
	SYSINFO should be compiled for each kernel architecture machine
	you wish to run it on.  This is only needed for SunOS 4.x.  It
	is _NOT_ required for Solaris 2.x/SunOS 5.x.  (SYSINFO is
	normally installed into /usr/kvm and symlinked into something like 
	/usr/local/bin.)  This is necessary if you wish to be able to get 
	the PROM version information.  The SunOS 4.x interface to the PROM 
	information does not permit having one binary that can determine the 
	PROM information on all the different kernel architectures.  This 
	interface problem is fixed in Solaris 2.x/SunOS 5.x.

	Your kernel must have NIT (Network Interface Tap) compiled into it
	in order to determine the Ethernet MAC address under SunOS 4.x.

Solaris 2.x/SunOS 5.x
	Unlike SunOS 4.x, you only need one SYSINFO binary for each Solaris 
	2.x release.  You do not need one for each kernel architecture.  
	i.e. SYSINFO compiled under Solaris 2.2 on a SPARC machine will 
	run on any Solaris 2.2 SPARC machine of any kernel architecture.

	Under Solaris 2.2 FCS on sun4d hosts (like the SPARCcenter-2000), the
	kernel has an empty value for the system "root nexus".  This means
	that you will not see a proper device tree on such systems.
	Various nodes will not be attached where they should be.
	This bug cropped up between Solaris 2.2 ER2 and FCS and is
	fixed in Solaris 2.3.

Ultrix	Your kernel must have the PF (Packet Filter) compiled into it
	in order to determine the Ethernet MAC address.

	Determining the System Model on VAX and MIPS machines is very
	difficult.  You can get a pretty good idea on most, but not
	all VAX and MIPS machines by determining the number of CPUs
	in a machine.  You really need to know the clock speed of the
	CPUs to get a good idea.  Unfortuntely, I have neither the time
	nor the equipment to work on this.

NeXT	Network address info for network interfaces is not working.  There
	is currently no debugger that works with GCC 2.0 so I haven't spent
	time on this.

AIX	When looking up device information, SYSINFO uses the AIX "National 
	Language Catalogs".  This means that your $LANG environment 
	variable must be set correctly.  If it is not, SYSINFO may fail 
	to find most device information.

SPP-UX	In SPP-UX 2.0.2 you may see these errors at compile-time::

		cc: Warning on line 109 of /usr/include/sys/wait.h: a \
			bit field must have type int or unsigned int

	These errors are due to a bug in <sys/wait.h> and/or Convex C.
	Convex is aware of the problem and promises a fix at some point.
	The errors can safely be ignored.
