
			     SYSINFO 2.0

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

CHANGES

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.

See the file "ChangeLog" for a complete list of changes.

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 on system devices
such as disk drives, frame buffers, tape drives, and many others.  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.

SUPPORTTED PLATFORMS

Sysinfo has been tested on the platforms listed below.  Porting to
other BSD based Unix's is fairly straight-forward.

	Sun-3			SunOS 4.1.1
	Sun-386			SunOS 4.0.1
	Sun-4/SPARC		SunOS 4.1.3, 5.2
	SPARCbook-1		Solaris 1.0.1 SPARCbook Version A.3, B
	Solbourne Series5E	OS/MP 4.1A
	DEC MIPS		Ultrix 4.2A
	NeXT MC680x0		NeXTStep 2.2, 3.1
	IBM RS/6000		AIX 3.2
	Alliant 		*Concentrix 5.X, *Concentrix-2800 2.0

		* - No device information support


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 SunOS 5.x.

3) Run "make install" to install the sysinfo binary and "make
   install.man" to install the man page.

BUG FIXES

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

WHERE TO GET IT

The latest/greatest version of sysinfo is available via anonymous ftp
on usc.edu in "/pub/sysinfo".

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

	Sun386i device support is shakey, at best.  No SCSI disk info
	is found.  The kernel device init table doesn't seem to have
	any of the disk info in it.  I haven't had time to track this
	down.

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

	Under SunOS 5.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 SunOS 5.2 ER2 and FCS.

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.

OTHER KNOWN PROBLEMS

SPARCbook "id" DISKS
	The label on "id" disks on the SPARCbook-1 cannot be read.  This
	appears to be because the definition of IDE_READ in 
	<taddev/ide_drvr_def.h> is incorrect.  This bug is present in
	Solaris 1.0.1 Rev A.
