Archive-name: sunmanagers-oldmachine-faq Sun-Managers' Old System and Software Frequently Asked Questions $Id: faq-old,v 1.1 2000/12/05 00:37:22 jdd Exp $ This is collection of questions that were once common to the Sun Managers mailing list, but because they are related to old software (SunOS 4.x) and hardware, they are no longer common. Keeping with the style of a similar FAQ for comp.windows.x, questions marked with a '+' indicate questions new to this issue; those with significant changes of content since the last issue are marked by '*' The Information Files maintainer is John DiMarco . All corrections, submissions and FAQ administration-related messages should go to "sunmanagers-faq@sunmanagers.org". Do not send questions, subscription or unsubscription requests, or sunmanagers postings to this address; they will be quietly ignored. ----------------------------------------------------------------------------- Questions 1. Getting Help for Old Suns and Software 1.1) What forums are there for Older Suns and/or SunOS4.x? 1.2) How do I find SunOS 4.x patches? 2. NIS, NIS+, DNS, and NFS 2.1) How do I set up NIS/YP to use DNS in SunOS 4.x? 2.2) How do I use DNS instead of NIS for hostname resolution? 2.3) What does the "nres_gethostbyaddr !=" error mean? 2.4) How come yppasswdd does not automatically update the yp maps? 2.5) What does "NFS write error X" mean? 2.6) What does NFS getattr failed/RPC: Authentication error mean? 2.7) When I compile something, errors occur saying routines of the form _routine can't be found. Why? 2.8) Can I run both OpenWindows and MIT X11 on SunOS 4? 2.9) How can I turn my old Sun into an X-Terminal? 3. Disks, Tapes and SCSI 3.1) What is the format.dat entry for drive X? 3.2) How do I use 1GB+ drives on SPARCstations running SunOS 4.1.1 or earlier? 3.3) Why isn't my Fujitsu M2266SA/Seagate Wren 7 disk working? 3.4) How do I move disks from xy451 to xy753/7053 controllers? 3.5) Can I replace the internal drive in a desktop Sun with a higher capacity model? 3.6) How do I enable synchronous SCSI on an old SPARCstation? 3.7) Is it okay to disconnect or connect SCSI devices while powered on? 3.8) How do I configure a SunOS 4.x system to use its local disk(s) for swap but not for root? 3.9) My HP DAT drive is running very slowly on my sun running 4.1.x. How do I fix this? 3.10) How do I support Exabyte 4mm DAT tape drives on SunOS 4.x? 3.11) How do I support Exabyte 8505C 8mm tape drives on SunOS 4.x? 3.12) Why don't third-party CD-ROMS work on my sun? 3.13) What tape size and density parameters should I use for dump? 4. Resource Management and Performance Tuning 4.1) How do I tell what caused my machine to crash? 4.2) What can I do if my machine slows to a crawl or just hangs? 4.3) How do I find out how much physical memory a machine has? 4.4) How do I find out what my machine's memory is being used for? How can I tell if I need more memory? 4.5) How do I add more PTYs? 5. Networking 5.1) How do I set up anonymous ftp on my machine? 5.2) Where can I get a version of ftp that does logging? 5.3) My rpc.etherd keeps reporting "bad lnth" messages. Why? 5.4) My rdump is failing with a "Protocol botched" message. What do I do? 5.5) Various network daemons report "unknown service". Why? 6. Sun models and OS Versions 6.1) Which Sun models run which versions of SunOS 4? 6.2) How can my program tell what model Sun it is running on? 6.3) What MBUS CPU modules are available? How can I tell what module(s) is/are in what model of SS10/SS20/SS600? 6.4) Which versions of SunOS 4 are Y2000 compliant? Are there patches for older versions of SunOS? 7. Miscellaneous Hardware 7.1) How do I use the keyboard and display when the console is on ttya? 7.2) How come my mouse occasionally doesn't work? 7.3) How do I do hardware flow control on an ALM-2? 7.4) Is there a third-party source for SPARCprinter consumables? 7.5) How do I configure a non-postscript printer for postscript? 7.6) How do I disable/remap STOP-A/L1-A? Answers ----------------------------------------------------------------------------- Getting Help for Old Suns and Software ----------------------------------------------------------------------------- Subject: 1.1) What forums are there for Older Suns and/or SunOS4.x? Suns-at-home (Home use of Sun Workstations, mostly older ones) Suns-at-Home-Request@net-kitchen.com add/remove requests Suns-at-Home@net-kitchen.com submissions Suns-at-Home-Archives@net-kitchen.com archive requests Auspex: managers of Auspex NFS file servers. Many Auspex systems ran SunOS 4.x long after Sun moved to Solaris. auspex-request@princeton.edu add/remove requests auspex@princeton.edu submissions Solbourne: managers of Solbourne SPARC systems. Most Solbourne systems ran Solbourne's version of SunOS 4.x "info-solbourne" list majordomo@acsu.buffalo.edu add/remove requests info-solbourne@acsu.buffalo.edu submissions ftp://ftp.acsu.buffalo.edu/pub/misc/info-solbourne.tar.z archives ----------------------------------------------------------------------------- Subject: 1.2) How do I find SunOS 4.x patches? Sun still has recommended patches for Solaris 1.1.1 (SunOS 4.1.4) and later, SPARC only. Sun recommended patches can be obtained from sun via anonymous ftp to sunsolve1.sun.com. Many anonymous ftp sites have partial collections of patches. Try a web search engine. WARNING: if you get patches from an ftp or web site, you are trusting whomever put them there. To be absolutely safe, get your patches from a trusted source. There is a special patch tape (U1) available from sun for Sun3's running SunOS 4.1.1 which fixes many of the bugs that were fixed for Sparcs in later releases. Note that sun3's don't run anything later than 4.1.1. ----------------------------------------------------------------------------- 2. NIS, NIS+, DNS, NFS, and X11 ----------------------------------------------------------------------------- Subject: 2.1) How do I set up NIS/YP to use DNS in SunOS 4.x? Under SunOS 4.1.x, there is a "#B=" at the top of /var/yp/Makefile, uncomment and change this to "B=-b" and setup NIS in the usual fashion. Under 4.0.x, edit the Makefile or apply the following "diff": *** Makefile.orig Wed Jan 10 13:22:11 1990 --- Makefile Wed Jan 10 13:22:01 1990 *************** *** 63 **** ! | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byname; \ --- 63 ---- ! | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byname; \ *************** *** 66 **** ! | $(MAKEDBM) - $(YPDBDIR)/$(DOM)/hosts.byaddr; \ --- 66 ---- ! | $(MAKEDBM) -b - $(YPDBDIR)/$(DOM)/hosts.byaddr; \ ----------------------------------------------------------------------------- Subject: 2.2) How do I use DNS instead of NIS for hostname resolution? For SunOS 4.x, the "normal" behavior of a hostname lookup under NIS is to consult the NIS hosts map and then optionally DNS (if configured as per question 2.1 above). You can change this so all hostname lookups go directly to DNS. While you could do this by creating an empty NIS host map, or even removing the host map entirely from your NIS Makefile, the SunOS shared library mechanism allows you change the behavior of any command that is dynamically linked to the shared library. For more details, see http://asp.esam.nwu.edu/chris/bindon41.html In SunOS 4.1+, there is an optional package called "shlib custom" that contains a kit for rebuilding shared libraries. You can select this in suninstall or load it later. It will put the files in /usr/lib/shlib.etc. Note that machines that come with pre-installed SunOS don't include this. It contains both a "normal" and System V version of libc and some tools to build shared libraries. The Sun-supplied README file gives some help, but doesn't detail how to change the hostname lookup functions. The complete procedure for this is spelled out in "bindon41.shar" -- it goes one step further and replaces the Sun resolver routines with the latest BIND versions. Note that you can still use NIS for other things, such as passwd, group info, etc - the NIS hosts map is just ignored. There are several important statically linked binaries that will break if you replace the Sun routines. "/etc/mount" is probably where you will first notice that it doesn't know about any host that is not present in /etc/hosts. The same goes for "rcp". My solution was to recompile mount and rcp with the new resolver routines, but you need source code to do this. Sun apparently will give you a dynamically- linked version of mount if you have software maintenance. You can compile your own version of rcp from the Berkeley 4.3 source that is available on various ftp site. Otherwise, you might just have to have all hosts (and aliases) in /etc/hosts that you want to mount or use Internet addresses (yuck). Another "feature" of a DNS-only environment is that hostnames will sometimes be returned all in uppercase and these will not match the lower-case entries you typically have in /etc/exports, /etc/bootparams, etc. There are some patches to BIND called "resolv+" that allow you to specify hostname lookups to /etc/hosts only, DNS only or both. Resolv+ is available at: ftp://ftp.cc.utexas.edu/source/networking/services/tcp-ip The latest bind can be found at "ftp://ftp.isc.org/isc/bind". ----------------------------------------------------------------------------- Subject: 2.3) What does the "nres_gethostbyaddr !=" error mean? This message is from "ypserv" and has been determined to be "harmless" (bug #1039839). Get Sun patch 100482-02 or later (it's up to -08 for SunOS 4.1.3C or later) which fixes this and other, more important, bugs in NIS. ----------------------------------------------------------------------------- Subject: 2.4) How come yppasswdd does not automatically update the yp maps? There is a bug in 4.1 rpc.yppasswdd that causes it misinterpret the command line arguments. A work-around is to add the "-nosingle" flag (which is the default), this shifts the arguments over one, so "passwd" is read instead of "-m". For example: rpc.yppasswdd /var/yp/passwd -nosingle -m passwd DIR=/var/yp If you are running 4.1 or 4.1.1 and the C2 security package, you should apply patch 100201-06, as it fixes several problems with rpc.yppasswdd. SunOS 4.1.2 or later has these fixes integrated. ----------------------------------------------------------------------------- Subject: 2.5) What does "NFS write error X" mean? You can lookup the error codes in /usr/include/sys/errno.h. Two common ones are 13, which is "permission denied" and 70 "stale file handle". 13 is probably coming from an incorrect /etc/exports entry. 70 will occur when a fileserver goes down for some reason. You can usually get rid of the error by unmounting and remounting the filesystem in question. Under SunOS 4.1 or later, you can run "showfhd" to translate the NFS "file handle" given in the error message into a Unix pathname. Beware that showfhd does a "find" on your server to get the filename. "man 2 intro" will give you some more general information on what error codes could mean. ----------------------------------------------------------------------------- Subject: 2.6) What does NFS getattr failed/RPC: Authentication error mean? You are probably running a pre-4.0 version of NFS, or using another vendor's system, and your username is in more than 8 groups. There is a limit on the number of groups that could be represented in the rpc service (called NGRPS). On pre-4.0 systems this was 8, now it is 16. Since many vendors other than Sun are still running old versions of NFS, you might see this error even if your SunOS is recent. Authentication errors are also caused by having secure RPC enabled on the client but not on the server, or by having a misconfigured secure RPC configuration for the user name generating the errors. Beware of this problem when you are using the automounter, as programs (such as Sendmail) may silently fail when when they try to mount a directory and get this error. ----------------------------------------------------------------------------- Subject: 2.7) When I compile something, errors occur saying routines of the form _routine can't be found. Why? If your system is running SunOS 4.x, your System Administrator may have modified the C library (/usr/lib/libc.a), usually to add hooks for hostname resolution (DNS). This modification is usually made using packages like "bind 4.8.3" or "resolv+ 2.1". Unfortunately there is a bug in that process which is documented but frequently missed by the person doing the installation. There are two ways around this: (i) Specify -ldl when compiling any and all package that complains. (ii) Get the sys-admin to reinstall the libc properly, ensuring that the Makefile used in that process specifies -ldl, so that the dl routines are included. Thanks to markus@octavia.anu.edu.au (Markus Buchhorn) for this answer. Sometimes other routines are also noted as not being found. There are three .o files in the shared library (rpc_commondata.o, rpc_dtablesize.o, and xccs.multibyte.o) that have names longer than 14 characters. These are unpacked during the shared library customization procedure as files without the trailing 'o', and need to be renamed so that the trailing 'o' is present. Ask the sysadmin to fix this. ----------------------------------------------------------------------------- Subject: 2.8) Can I run both OpenWindows and MIT X11 on SunOS 4? The shared libraries for OpenWindows have different version numbers than the MIT versions. MIT executables will try to use the OpenWindows libraries and OpenWindows executables will complain about version mismatches. You can toggle between the two environments by setting your $path and LD_LIBRARY_PATH variables. Assuming you installed the MIT executables in /usr/bin/X11, the MIT libraries in /usr/lib and the OpenWindows libraries are in /usr/openwin/lib, set the following before you start the windowing system: MIT X11R4/R5 environment set path = (/usr/bin/X11 $path) setenv LD_LIBRARY_PATH /usr/lib (Actually, for libraries in /usr/lib, /usr/5lib, or /usr/local/lib, the LD_LIBRARY_PATH is not necessary.) Sun OpenWindows set path = (/usr/openwin/bin /usr/openwin/demo $path) setenv LD_LIBRARY_PATH /usr/openwin/lib (Actually, for most OpenWindows clients, it's sufficient to set OPENWINHOME to /usr/openwin instead of setting LD_LIBRARY_PATH. Setting LD_LIBRARY_PATH to /usr/openwin/lib may cause MIT clients to fail.) You can also run clients from one environment under a different server on a one command at a time basis. This example runs a OpenWindows client under the MIT server: (setenv LD_LIBRARY_PATH /usr/openwin/lib; x_soundtool) It is possible to run OpenWindows 3.0 and MIT X11 simultaneously without having to toggle LD_LIBRARY_PATH as above, by putting the X11 libraries before the openwindows libraries in LD_LIBRARY_PATH, and the X11 binaries before the openwindows binaries in PATH, as follows: setenv LD_LIBRARY_PATH /usr/lib/X11:$OPENWINHOME/lib setenv path (/usr/bin/X11 $OPENWINHOME/bin $path) Setting LD_LIBRARY_PATH can be avoided altogether if the superuser links all the openwin 3.0 and X11R4 libraries into /usr/local/lib as follows: ln -s $OPENWINHOME/lib/lib*.s[oa]* /usr/local/lib ln -s /usr/lib/X11/lib*.s[oa]* /usr/local/lib /etc/ldconfig Unfortunately, not all OpenWindows 3.0 applications will work with X11R5 libraries. To use the X11 xdm with the openwin 3.0 Xnews server, modify the Xservers file (eg. /usr/lib/X11/xdm/Xservers) to say something like the following: :0 local $OPENWINHOME/lib/xdm/StartOW -nosunview \ -fp /usr/lib/X11/fonts/misc,$OPENWINHOME/lib/fonts,/usr/lib/X11/fonts/75dpi Change the options or font path if necessary. Note that sun patch 100452-25 or later should be installed, to prevent the Xnews server from consuming more and more memory as time passes. (Thanks to Margarita Suarez for the last three suggestions) OpenWindows 3.x includes most of the MIT X11 libraries and header files. Most MIT X11 Applications can be compiled and run under OpenWindows 3.0 without change. The OpenWindows server has the ability to display PostScript that several of the OpenWindows applications require to run. Sun's AnswerBook is an example that requires PostScript. These clients will not run under the MIT server. You can get a limited PostScript preview capability under either server with GNU Ghostscript, a GNU "copyleft" package available from various ftp sites. Two enhanced versions of Ghostscript are also available, GSPreview and Ghostview, they both offer fancier preview capabilities. These programs are currently available via anonymous ftp: Ghostscript and Ghostview are on prep.ai.mit.edu (18.71.0.38) in /pub/gnu. GSPreview is on ftp.x.org (198.112.44.100) in /R5contrib ----------------------------------------------------------------------------- Subject: 2.9) How can I turn my old sun into an X-Terminal? You can simply replace the getty entry for the console in /etc/ttytab with a command that starts up an X server. Alternatively, you can use Seth Robertson's Xkernel package. This is available from http://www.uci.agh.edu.pl/pub/utils/x11/Xkernel-2.0-beta/ and other places. The package describes how to configure a minimal kernel that runs the X server and offloads all the clients onto another, hopefully more powerful host on the network. This is attractive to some sites that have a large investment in older sun platforms, as moving most of the processing off the sun cpu makes it tolerable to use. ----------------------------------------------------------------------------- 3. Disks, Tapes and SCSI ----------------------------------------------------------------------------- Subject: 3.1) What is the format.dat entry for drive X? A format.dat file containing entries submitted by various people is available for anonymous ftp at ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/format.dat It is currently maintained by John DiMarco (jdd@cs.toronto.edu). New entries are welcome; mail them to sunmanagers-format@sunmanagers.org For SCSI disks on SPARCs running SunOS 4.1.1 and later (except the sun4 kernel arch), a format.dat entry can be auto-generated using John DiMarco's scsiinfo program, available at ftp://ftp.cs.toronto.edu/pub/jdd/scsiinfo/. It will query the disk directly, and generate an appropriate entry. A format.dat entry can vary according to what OS you are running, the architecture of your machine or the type of SCSI/SMD/IPI controller you are using. Opinions also vary on how to format once you have all the information you need. If you are buying a Sun supported drive, you will likely find an entry for it in Sun's supplied /etc/format.dat. On third party drives, you should inquire with the vendor you bought it from. If you are on your own, contact the manufacturer, or try to get hold of the manufacturer's OEM manual for your drive model. You might be able to derive enough information from the manual to make up your own entry. Most drive manufacturers provide drive specifications from their web sites. Try these: http://www.seagate.com (Seagate, Connor, Imprimis, CDC) http://www.fujitsu.com/products/support.html (Fujitsu) http://www.maxtor.com (Maxtor, Quantum, Micropolis) http://www.samsungelectronics.com (Samsung) http://www.storage.ibm.com (IBM) http://www.westerndigital.com (Western Digital) It is also possible to contact drive manufacturers by telephone. Some numbers (possibly no longer valid): Fujitsu USA 800-626-4686 408-432-1300 Fujitsu FAXLINE 408-428-0456 Fujitsu Canada 416-602-5454 800-263-7091 Maxtor USA 800-2MA-XTOR Maxtor FAXBACK 303-678-2618 Seagate USA 800-468-3472 405-936-1200 Seagate FAX 408-438-8137 Seagate FAXBACK 408-438-2620 Note: do not post a format.dat request to the list or to the comp.sys.sun.admin newsgroup unless you have exhausted all these avenues. Tips for rolling your own format.dat: - For SCSI disks, any combination of cylinders, heads, and sectors that does not add up to more than the rated formatted capacity of the drive will normally work. A grossly different geometry may result in some slight performance degradation and performance miscomputations (e.g. iostat), but it should still work. The SCSI protocol hides most of the drive details from the host, and hence the host need not know much about the drive to format or use it. ----------------------------------------------------------------------------- Subject: 3.2) How do I use 1GB+ drives on SPARCstations running SunOS 4.1.1 or earlier? The SPARCstation SCSI drivers in SunOS 4.1.1 or earlier use SCSI group 0 commands. This command set only has 21 bits of storage for the block number. This means you can have 2^21-1 or 2097151 as the largest block number understood by the SCSI driver. The fix is to use SCSI group 1 commands, where you have 31 bits for block numbers. The newer Sun SCSI drivers (SCSA) use group 1 commands, but require a patch to work properly. The patch for a Sun4c running SunOS 4.1.1 is 100343-04 or later. You can use 1.2 gigabyte drives with the current driver, but you "waste" several megabytes (no big deal). The Fujitsu M2266SA, CDC/Imprimis/Seagate Wren 7, HP 97549T and Micropolis 1598 are proven. This patch is only required for Sun4c's (Sparcstations) running SunOS 4.1.1 or earlier. Sun3's, Sun4m's (600 series, SS10), and Sun4's (100,200,300,400 series) do not require it, and the patch is included in SunOS 4.1.2 and later. ----------------------------------------------------------------------------- Subject: 3.3) Why isn't my Fujitsu M2266SA/Seagate Wren 7 disk working? Older Fujitsu M2266SA drives have a firmware bug in the use of the on-drive read-ahead cache that causes random read errors. You can disable the cache by removing the jumper on pins 5-6 on CN9. Fujitsu recently has made new PROMs available that fix the cache problem. You should be able to obtain these from your drive vendor at no cost. The PROM is marked "81202" followed by a revision letter. Revision "C" and earlier should be replaced by a "D" or later version. Older Wren 7's may not boot on IPX's, ELC's and later machines, due to a bug in the Wren 7's firmware. Here is a patch to the NVRAM which must be made from the monitor. WARNING : It is important that you type this correctly. Check this several times! Remember all the question marks, dashes and spaces and yes, sstart should be with two "s"'s. Note: Syntax errors in your NVRAMRC can make your machine unbootable. In Prom version 2.x, hitting L1-N after the selftest at bootup will reset the NVRAM. If you have prom revision 2.0 to 2.5, inclusive: (from monitor level) > n ok nvedit 0: true to fcode-debug? 1: probe-all install-console banner 2: cd /sd [ or whatever drive you want to boot from ] 3: patch 0 1 sstart 4: device-end 5: [ press c to exit nvedit at this point ] ok nvstore ok setenv use-nvramrc? true ok reset For prom revision 2.6 or greater, use: (from monitor level) > n ok nvedit 0: probe-all install-console banner 1: cd /esp 2: ' 0 ' 1 ' timed-spin >body 7 /token * + token@ (patch 3: device-end 4: [ press c to exit nvedit at this point ] ok nvstore ok setenv use-nvramrc? true ok reset If you have a prom revision earlier than 2.0, or you don't wish to use the nvramrc, a Wren VII can be made to boot by making the "a" partition start at cylinder two, instead of cylinder zero. Thanks to Rick.Tilson@Corp.Sun.COM (Rick Tilson) and kuhn@math.harvard.edu (Robert M. Kuhn). ----------------------------------------------------------------------------- Subject: 3.4) How do I move disks from xy451 to xy753/7053 controllers? You have to reformat the drives for them to be recognized by the new controller. Save the bad block list on drives while they are still on the old controller and load this back on the disk when you are formatting the disk on the new controller. The "dump" command in "defect" menu of "format" will write out a defect list to a file, the "load" command in the same menu will read the defect list from a file. ----------------------------------------------------------------------------- Subject: 3.5) Can I replace the internal drive in a desktop Sun with a higher capacity model? Yes, so long as the drive does not pull more power and/or require more heat than the drive for which the machine was designed. For a SPARCstation 1, 1+, or 2, do not use a disk dissipating more than 10W. For a later SPARCstation, do not use a disk dissipating more than 11W. Most 5400rpm drives should be alright; 7200rpm drives or faster, particularly early 7200rpm drives, are likely to be too hot. For systems which support two drives, if only one drive is installed, it should be possible to relax this constraint somewhat. ----------------------------------------------------------------------------- Subject: 3.6) How do I enable synchronous SCSI on an old SPARCstation? It depends on the type of SCSI controller and the SunOS release. The SCSI device must be able to support it. Most modern SCSI drives do, check the drive manual to see if there is a jumper or switch to enable or disable it on the drive itself. If you have a VME-based system with the Sun SCSI controller on a separate card (a 4/470 for example), you are out of luck unless you go with a third-party SCSI controller (e.g. Ciprico 3500). The Sun VME SCSI "si" and "sc" controllers are old products that were developed for the Sun3 line and do not support anything but the most basic SCSI features. VME systems with the "sm" controller on the cpu board, (such as the 4/370) are capable of sync SCSI, along with desktop systems with the "esp" controller (SS-1, SS-1+, SS2, etc). You can see what type of controller you have by watching the boot process or running /etc/dmesg. There were some problems with sync SCSI on the SS-1 that prompted Sun to disable it by default in 4.0.3 and 4.1. You can enable it manually by tweaking the kernel: echo 'scsi_options?W 0x38' | adb -w /vmunix reboot system or a better method: uncomment the 'SCSI_OPTIONS_SYNC' line in /sys/scsi/conf/scsi_confdata.c Rebuild the kernel and reboot. Under 4.1.x, sync SCSI is negotiated at boot time by checking each device to see if it supports it. 4.1.x (except for 4.1.3 and later) will print a message if it is successful: esp0: Target 3 now Synchronous at 4.0 mb/s max transmit rate To turn on this message for SunOS 4.1.3 and later, you can modify the kernel or /sys/sun[4c|4m]/OBJ/esp.o using adb to set espdebug to 0x1 as above. This can cause problems with some SCSI peripherals, however (eg. some 8mm drives). Better still, grab John DiMarco (jdd@cs.toronto.edu)'s "scsiinfo" program which provides this information and more about SCSI peripherals attached to ESP SCSI host adapters. scsiinfo is available at ftp://ftp.cs.toronto.edu/pub/jdd/scsiinfo. Note: SCSI cable length can affect drive performance, especially for fast synchronous SCSI devices and controllers. Cable length should be kept at a minimum. ----------------------------------------------------------------------------- Subject: 3.7) Is it okay to disconnect or connect SCSI devices while powered on? On older machines (without onboard SCSI controllers), it is never a good idea to do this. You risk blowing a fuse on the CPU board, or part of the SCSI hardware. On newer machines (sparcstations and later), many people have done this regularly without problems. Halt the machine (sync;L1-A), remove or add the device, then continue. However, it is possible to blow the SCSI termination power fuse on the motherboard. If your machine hangs immediately on powerup unless the SCSI bus is externally terminated, this fuse (2A Littelfuse) may need to be replaced. Caveat Emptor. ----------------------------------------------------------------------------- Subject: 3.8) How do I configure a SunOS 4.x system to use its local disk(s) for swap but not for root? It's necessary to configure the kernel to use a designated swap partition. You can do this by replacing the line in the kernel config file (/sys/`arch -k`/conf/KERNEL-NAME) that says config vmunix swap generic with config vmunix root on type nfs swap on type spec Replace '' with the name of the disk block device you want to use, eg. 'sd0b'. Thanks to Nick Sayer . ----------------------------------------------------------------------------- Subject: 3.9) My HP DAT drive is running very slowly on my sun running 4.1.x. How do I fix this? You'll need to add some configuration data for the HP DAT drive to your Sun 4.1.x kernel as follows: In /sys/scsi/targets/stdef.h, add the line: #define ST_TYPE_HP1 0x2a /* HP C1533A DDS2 DAT drive */ In /sys/scsi/targets/st_conf.c, add the following: /* added DAPM 5-feb-94 * HP C1533A DDS2 DAT tape drive */ { "HP C1533A 4mm DDS DAT", 2, "HP", ST_TYPE_HP1, 10240, (ST_VARIABLE|ST_BSF|ST_BSR|ST_LONG_ERASE|ST_AUTODEN_OVERRIDE), 6000,6000, {0x00, 0x00, 0x00, 0x00}, {0,0,0,0} }, Recompile your kernel, and reboot with the new kernel. Thanks to Dave Mitchell and sjf@mod.dsto.gov.au (Stephen Fitzgerald). ----------------------------------------------------------------------------- Subject: 3.10) How do I support Exabyte 4mm DAT tape drives on SunOS 4.x? According to Exabyte's customer service center (913-492-6002), for SunOS 4.1.x, for an EXB-4200 and 4200c, add the following entries to /sys/scsi/targets/st_conf.c: /* Exabyte 4mm 2GB cartridge */ { "Exabyte EXB-4200 4mm Helical Scan", 16, "EXABYTE EXB-4200", ST_TYPE_DEFAULT, 1024, (ST_VARIABLE | ST_BSF | ST_BSR), 5000, 5000, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } }, /* Exabyte 4mm 4GB w/compression cartridge */ { "Exabyte EXB4200c 4mm Helical Scan", 17, "EXABYTE EXB-4200c", ST_TYPE_DEFAULT, 1024, (ST_VARIABLE | ST_BSF | ST_BSR), 5000, 5000, { 0x63, 0x43, 0x0c, 0x0c }, { 0, 0, 0, 0 } }, Exabyte also recommends that their 4mm tape drives have firmware revision levels of at least the following when used on suns: EXB-4200 No restriction, but revision 148 or higher is recommended EXB-4200c Level 149 minimum (mode select for compression) Thanks to Dave Hightower . ----------------------------------------------------------------------------- Subject: 3.11) How do I support Exabyte 8505C 8mm tape drives on SunOS 4.x? Modify /usr/sys/scsi/targets/st_conf.c to add the following entry: /* Exabyte 8mm 5GB 1/2-height cartridge, with compression */ { "Exabyte EXB-8505 8mm Helical Scan", 16, "EXABYTE EXB-8505", ST_TYPE_EXB8500, 1024, (ST_VARIABLE | ST_BSF | ST_BSR | ST_LONG_ERASE), 5000, 5000, { 0x14, 0x90, 0x15, 0x00 }, { 0, 0, 0, 0 } }, Create a new kernel and boot using it. The devices corresponding to the different modes supported by the drive are as follows: Device Capacity Emulation st0,st1 2.3GB Exabyte 8200 st8,st9 2.3GB with compression Exabyte 8200C st16,st17 5GB Exabyte 8500/8505 st24,st25 5GB with compression Exabyte 8505C Thanks to Paul Roland Note: Exabyte 8505C 8mm support is included in SunOS 5.x a.k.a. Solaris 2.x, so no special modifications are required for OS versions later than 4.x. ----------------------------------------------------------------------------- Subject: 3.12) Why don't third-party CD-ROMS work on my sun? When Sun first decided to add CD-ROM support, there were already a great number of systems in the field, all of which contained boot proms that expected to boot from disks with 512 byte sectors. Sun had to decide between replacing a whole lot of boot proms or finding a way to make a CDROM act like a disk with 512 byte sectors in order to support it as a boot device. They chose the latter approach. Many third party CD-ROM drives use 1024 or 2048-byte sectors, which causes the SCSI driver to see a "data overrun". When the driver asks for N "blocks" (which it thinks are 512 bytes each ) it gets more data back than it expected. Some CD-ROM drives can be told to use 512 byte sectors by setting a jumper, cutting a trace, or using a software command (mode select). Details vary widely, but if you are seeing a data overrun on a third party CD-ROM, then it is most likely doing 1K or 2K transfers and will need some work to be a boot device for a Sun. Thanks to Kevin Sheehan For more information about third-party CD-ROMS on Suns, consult the CD-ROM FAQ, maintained by Mike Frisch and Martin Hargreaves . It can be found at http://saturn.tlug.org/suncdfaq. A UK mirror is available at http://www.datamodl.demon.co.uk/suncd/. ----------------------------------------------------------------------------- Subject: 3.13) What tape size and density parameters should I use for dump? The only purpose of the dump size and density parameters is to let dump calculate the capacity of each tape and then decide for itself when it needs a new tape. If the filesystem you are dumping is larger than the tape, you will need to use more than one tape. In SunOS 4.x and earlier, dump uses the size and density parameters to decide when to stop writing to a particular tape and prompt for a new one. Since SunOS 4.x has a filesystem limit of 2GB, it is often the case that the filesystem will fit on one tape. If you are dumping multiple filesystems one after another to the non-rewinding tape device, each successive dump has no way of knowing how much of the tape has been already used, so there's no recourse except human intervention. In other words, you have to figure out manually how many of your filesystems will fit on one tape. All that the dump size and density parameters do is tell dump that it has lots of space left. Since it hardly matters what these parameters are, so long as they convince dump that the (remainder of the) tape is bigger than your filesystem so that it doesn't decide to ask you for a new tape part-way through, you can tell it the tape is big enough for a 2GB filesystem, by using 16000 for both the size and density parameters. This will be large enough for all standard SunOS 4.x filesystems. If you're using Online Disk Suite or something similar to overcome the 2GB SunOS filesystem size limit, these parameters will need adjusting. For example, if you need to dump a 4 Gbyte filesystem, simply double the tape size. Thanks to Niall O Broin ----------------------------------------------------------------------------- 4. Resource Management and Performance Tuning ----------------------------------------------------------------------------- Subject: 4.1) How do I tell what caused my machine to crash? The crash messages will usually be displayed on the console or kept around after reboot long enough for you to run /etc/dmesg. Syslog can sometimes record the crash message. If your system repeatedly crashes with similar looking errors, try searching through the patch list on the Sun patch database for a description that matches your machine. Read chapter 22 of the SunOS 4.1 system administration manual on how to gather more information for reporting a crash and making crash dumps. To report a crash dump, you need a symbolic traceback for it to be useful to the person looking at it. Type the following: cd /var/crash/`hostname` echo '$c' | adb -k vmunix.0 vmcore.0 ----------------------------------------------------------------------------- Subject: 4.2) What can I do if my machine slows to a crawl or just hangs? Try running "ps" to look for large numbers of the duplicate programs or processes with a huge size field. Some system daemons occasionally can get into a state where they fork repeatedly and eventually swamp the system. Killing off the child processes doesn't do any good, so you have to find the "master" process. It will usually have the lowest pid. Another useful approach is to run vmstat to pin down what resource(s) your machine is running out of. You can tell vmstat to give ongoing reports by specifying a report interval as its first argument. The programs "top" and "sps" are good for finding processes that are loading your system. "Top" will give you the processes that are consuming the most cpu time. "Sps" is a better version of "ps" that runs much faster and displays processes in an intuitive manner. Top is available at ftp://ftp.groupsys.com/pub/top Sometimes you run out of memory and you won't be able to run enough commands to even find out what is wrong. You will get messages of the type "out of memory" or "no more processes". Note that "out of memory" refers to virtual memory, not physical memory. On a 4.x system (or earlier), the size of a machine's virtual memory is equal to the amount of swap space it has. The commands "pstat -s" will tell you how much virtual memory is available. You can sync the disks to minimize filesystem corruption if you have to crash the system: Use the L1-A sequence (or hit the break key on an ascii terminal console) to halt the system. If you are on an older system, type "g0" and you will get the message "panic: ... syncing file systems". When you see the word "done", hit L1-A again and reboot. On systems with the "new" prom, type "n" to get into the new command mode and type "sync". Sometimes a system hang or similar slowdown can be caused by an OS bug. ----------------------------------------------------------------------------- Subject: 4.3) How do I find out how much physical memory a machine has? Try "/etc/dmesg | grep mem". This takes advantage of the fact that the kernel writes the amount of physical memory on the machine to the console on reboot. /etc/dmesg reports the most recent messages written to the console. If many messages have been written to the console since the machine was rebooted, the message reporting the amount of physical memory may no longer be in the buffer. If you save console messages to /var/adm/messages (usually true by default), you can try "grep mem /var/adm/messages*". If the message is no longer in the buffer, it still may be in the messages log file. "/usr/etc/devinfo -v" is informative on some machines. The banner message on reboot (or type "banner" in the monitor on machines with Openboot proms) will usually report the amount of physical memory. Alternatively, you can poke around in /dev/mem and /vmunix (or equivalent), or open up the case and count SIMMS and/or memory boards. Grab Michael Cooper's "sysinfo" program, which provides all sorts of information about a given system, including how much physical memory it has. sysinfo is available at http://www.magnicomp.com, although it is now a commercial product that is free only for educational and non-profit organizations. ----------------------------------------------------------------------------- Subject: 4.4) How do I find out what my machine's memory is being used for? How can I tell if I need more memory? To discover how much virtual memory (i.e. swap) is free, run "pstat -s". If you're using tmpfs for /tmp, "df /tmp" will also work. Discovering how physical memory is being used can be more difficult, however. For SunOS 3.x, vmstat will tell you how much physical memory is free. This doesn't work under SunOS 4.x, since the kernel's memory subsystem is completely different. Memory pages that are not being used by processes are used as a sort of extended cache, storing pages of memory-mapped files for possible later use. The kernel keeps only a small set of pages free for short-term use, and frees up more on demand. Hence the free memory reported by vmstat is not an accurate reflection, for example, of the amount of memory available for user processes. An easy way to determine whether or not your machine needs more memory is to run vmstat and examine the po (page out) column and the sr (scan rate) column. If these columns consistently show large numbers, this suggests that your machine does not have enough memory to support its current workload, and frequently needs to write pages belonging to active processes to disk in order to free up enough memory to run the current job. For SunOS 4.x, vmpage, a small C program is available which indicates how the system has allocated memory pages. Its output looks like the following: vmpage: all results in decimal pages physmem 16298, startup 839, maxmem 15459, pageable 14853 scanned 15469, locked 4, kept 612, cached 8124, free 6729 The source for vmpage is as follows: #include #include #include #include #include #include static kvm_t *kvm_des; #define KFETCH(index, description, variable) \ kvm_fetch(index, description, (char *)&variable, sizeof (variable)) static struct nlist nl[] = { #define X_PAGES 0 { "_pages" }, #define X_EPAGES 1 { "_epages" }, #define X_PHYSMEM 2 { "_physmem" }, #define X_MAXMEM 3 { "_maxmem" }, { "" }, }; char *rindex(); #define setbasename(target, source) \ do {char *s = source, *t = rindex(s,'/'); target = t ? t + 1 : s;} while (0) char *Usage="Usage: %s [namelist [corefile]]\n"; char *cmdname; /*ARGSUSED*/ /* since we don't use argc */ main(argc, argv) int argc; char **argv; { char *namelist = 0; char *corefile = 0; setbasename(cmdname, *argv++); if (*argv) namelist = *argv++; if (*argv) corefile = *argv++; if (*argv) usage(); kvm_des=kvm_open(namelist, corefile, (char *)NULL, O_RDONLY, cmdname); if (kvm_des == NULL) fail("kvm_open", -1); if (kvm_nlist(kvm_des, nl) < 0) fail("kvm_nlist", -1); uupage(); } usage() { (void)fprintf(stderr, Usage, cmdname); exit (1); } kvm_fetch(index, desc, target, size) int index; /* nlist index */ char *desc; /* pithy description */ caddr_t target; /* address of result */ u_int size; /* size of result */ { char *name = nl[index].n_name; int value = nl[index].n_value; if (value == 0) { (void)fprintf(stderr, "%s: missing symbol '%s' (%s) -- aborting\n", cmdname, name, desc); exit(2); } if (kvm_read(kvm_des, (u_long)value, target, size) < 0) { (void)fprintf(stderr, "%s: can't read %s (%s) at 0x%x -- aborting\n", cmdname, name, desc, value); exit(2); } } /* issue failure message, with optional address, and exit */ fail(routine, address) char *routine; int address; { (void)fprintf(stderr, "%s: %s failed ", cmdname, routine); if (address > -1) (void)fprintf(stderr, "at address 0x%x ", address); (void)fprintf(stderr, "-- exiting\n"); exit(2); } /* XXX: avoid multiple lseek/read system calls */ /* loop thru the page structs to classify pages */ uupage() { register struct page *pp; register int cached = 0; int locked = 0, kept = 0, free = 0, other = 0, int physmem, maxmem, startup; struct page *pages,*epages; struct page ps; register ok; KFETCH(X_PHYSMEM, "physical memory", physmem); KFETCH(X_MAXMEM, "maxmem (after startup)", maxmem); startup = physmem - maxmem; KFETCH(X_PAGES, "start of page structs", pages); KFETCH(X_EPAGES, "end of page structs", epages); for (pp = pages; pp < epages; pp++) { ok = kvm_read(kvm_des, (u_long)pp, (caddr_t)&ps, sizeof(ps)); if (ok < 0) fail("kvm_read", (int)pp); if (ps.p_free && (ps.p_lock || ps.p_keepcnt)) (void)printf("%s: %s at 0x%x\n", cmdname, "free page locked and/or kept", pp); if (ps.p_free) free++; else if (ps.p_lock == 0 && ps.p_keepcnt == 0) cached++; else if (ps.p_keepcnt) kept++; else if (ps.p_lock) locked++; else { /* this can't happen */ other++; (void)printf("%s: unexpected page usage at 0x%x\n", cmdname, pp); } } (void)printf("%s: all results in decimal pages\n", cmdname); (void)printf("\t%s %d, %s %d, %s %d, %s %d\n", "physmem", physmem, "startup", startup, "maxmem", maxmem, "pageable", cached+free, 0); (void)printf("\t%s %d, %s %d, %s %d, %s %d, %s %d\n", "scanned", locked+kept+cached+free+other, "locked", locked, "kept", kept, "cached", cached, "free", free, 0); } ----------------------------------------------------------------------------- Subject: 4.5) How do I add more PTYs? Edit /usr/sys//conf/ and change the line that says pseudo-device pty # pseudo-tty's, also needed for SunView to pseudo-device pty # pseudo-tty's, also needed for SunView where is the number of ptys you want. Then recompile and reinstall your kernel in the usual way. You will have to create more pty special devices in /dev. These are created by /dev/MAKEDEV in sets of 16, numbered 0-15. For example, to create 96 ptys (6 sets of 16), run: /dev/MAKEDEV pty0 pty1 pty2 pty3 pty4 pty5 SunOS 4.x is limited to a maximum of 256 ptys. The default is 48. ----------------------------------------------------------------------------- 5. Networking ----------------------------------------------------------------------------- Subject: 5.1) How do I set up anonymous ftp on my machine? Read the man page ftpd(8) in the SunOS 4.x documentation, as the procedure differs from vanilla BSD and most examples in system administration books. The "ls" binary is dynamically linked, requiring you to duplicate ld.so, libc.so.* and /dev/zero in the ftp area. The permissions and ownership of the files within the ftp area are critical to having a secure configuration. ----------------------------------------------------------------------------- Subject: 5.2) Where can I get a version of ftp that does logging? These are many versions that have enhanced logging or can be modified to enable logging: http://www.wu-ftpd.org ftp://ftp.adelaide.edu.au/pub/4.3/ftpd-sirius.tar.Z The stock Sun ftpd will log some information if you add the "-l" flag in /etc/inetd.conf: ftp stream tcp nowait root /usr/etc/in.ftpd in.ftpd -l Warning: it will log passwords of ordinary users. Also enable syslogd by adding: daemon.info /var/adm/syslog to "/etc/syslog.conf". ----------------------------------------------------------------------------- Subject: 5.3) My rpc.etherd keeps reporting "bad lnth" messages. Why? There is a bug in the ethernet driver for SunOS 4.x which causes short requests (eg arp, ICMP, loopback) sent by the host to be forwarded to rpc.etherd with incorrect padding. The message is harmless, and can be safely ignored. ----------------------------------------------------------------------------- Subject: 5.4) My rdump is failing with a "Protocol botched" message. What do I do? The problem produces output like the following: DUMP: Date of this level 0 dump: Wed Jan 6 08:50:01 1993 DUMP: Date of last level 0 dump: the epoch DUMP: Dumping /dev/rsd0a (/) to /dev/nrst8 on host foo DUMP: mapping (Pass I) [regular files] DUMP: mapping (Pass II) [directories] DUMP: estimated 8232 blocks (4.02MB) on 0.00 tape(s). DUMP: Protocol to remote tape server botched (in rmtgets). rdump: Lost connection to remote host. DUMP: Bad return code from dump: 1 This occurs when something in .cshrc on the remote machine prints something to stdout or stderr (eg. stty, echo). The rdump command doesn't expect this, and chokes. Other commands which use the rsh protocol (eg. rdist, rtar) may also be affected. The way to get around this is to add the following line near the beginning of .cshrc, before any command that might send something to stdout or stderr: if ( ! $?prompt ) exit This causes .cshrc to exit when prompt isn't set, which distinguishes between remote commands (eg. rdump, rsh) where these variables are not set, and interactive sessions (eg. rlogin) where they are. ----------------------------------------------------------------------------- Subject: 5.5) Various network daemons report "unknown service". Why? In SunOS 4.x, this is usually caused by a blank line in /etc/services or in the services map on the NIS server. Remove all blank lines from /etc/services, and the problem should be resolved. ----------------------------------------------------------------------------- 6. Sun models and OS Versions ----------------------------------------------------------------------------- Subject: 6.1) Which Sun models run which versions of SunOS 4? Sun2: SunOS 4.0.3 or earlier. Sun386i: SunOS 4.0, 4.0.1, 4.0.2 only. Sun3: SunOS 4.1.1 or earlier. 4/100, 4/200 series: SunOS 3.2, SunOS 4.0 or later 4/300 series: SunOS 4.0.3 or later 4/400 series: SunOS 4.1PSR_A or later 600 models 120, 140: SunOS 4.1.2 or later 600 model 41, 51: SunOS 4.1.3 or later SPARCstation 1, 1+, SLC, IPC: SunOS 4.0.3 or later. SPARCstation 2, ELC, IPX: SunOS 4.1.1 or later. SPARCstation 4: SunOS 4.1.4 or later. SPARCstation 5: SunOS 4.1.3_U1B or later. SPARCstation 10 models 20, 30, 40, 41, 51, 61, 71: SunOS 4.1.3 or later. SPARCstation 20 models 50, 51, 61, 71: SunOS 4.1.3_U1B or later. SPARCstation 20 model HS11, HS21, 151: SunOS 4.1.4 or later. SPARCclassic, SPARCstation LX: SunOS 4.1.3C or later. The SPARCstation Voyager, the SparcCenter 2000, and the SParcserver 1000 all do not run any version of SunOS 4. Neither does any UltraSPARC system. SunOS 4.1.3 and later has been reported to run on multiprocessor SuperSPARC configurations of the SS10, SS20, and 600, but this configuration is not supported by Sun. Anyone who tries this is on their own. The (unofficial) word from inside Sun about whether or not it actually works is as follows: Little testing of the SuperSPARC MP configurations under 4.1.3 have been done by Sun. What little was done showed that under heavy loads the system was prone to crash (What it really did was hang, so badly that even an L1-A would not work). ... We suspect, but do not know, that as the SuperSPARC chips get faster that the problems will manifest themselves more quickly. Caveat Emptor. However, multiprocessor HyperSPARC systems are supported by Fujitsu (was Ross) under SunOS 4.1.4. Explanatory note: In general, Solaris = SunOS + Open Windows. Solaris 1.0 = SunOS 4.1.1 + Open Windows 2.0 Solaris 1.0.1 = SunOS 4.1.2 + Open Windows 2.0 Solaris 1.1 = SunOS 4.1.3 + Open Windows 3.0 Solaris 1.1C = SunOS 4.1.3C + Open Windows 3.0 (Classic/LX only) Solaris 1.1.1 = SunOS 4.1.3_U1 + Open Windows 3.0_U1 Solaris 1.1.1revB = SunOS 4.1.3_U1revB + Open Windows 3.0_U1revB Solaris 1.1.2 = SunOS 4.1.4 + Open Windows 3.0_414 ----------------------------------------------------------------------------- Subject: 6.2) How can my program tell what model Sun it is running on? On older suns, the model type is encoded in the hostid. For suns with the "Openboot" prom (All sparcstations and the 600 series), /usr/etc/devinfo (SunOS 4.x) or /usr/sbin/prtconf (Solaris 2.x) will reveal the model type. "Suntype", written by John DiMarco (jdd@cs.toronto.edu) is a shell script which does the appropriate thing on all suns. It is available for anonymous ftp at ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/suntype Alternatively, grab Michael Cooper's "sysinfo" program, which provides all sorts of information about a given system, including the machine type. sysinfo is available on the web at http://www.magnicomp.com/, although it is now a commercial product that is free only for educational and non-profit organizations. ----------------------------------------------------------------------------- Subject: 6.3) What MBUS CPU modules are available? How can I tell what module(s) is/are in what model of SS10/SS20/SS600? Three sun models, the SS10, SS20 and the SparcServer 600 series, support Sun's MBUS. All these machines have two MBUS slots. Both modules must be of the same type. SuperSPARC/w cache modules of different speeds are said to work, as are three-processor systems (by combining a single and a dual module of the same type), but such configurations are not supported by Sun. Modules without external cache are not separately clocked, and run at the clock rate of the MBUS. Modules with external cache are separately clocked, and must run at a clock rate higher than that of the MBUS. The SS20 has a switchable 40/50MHz MBUS, the SS600 has a 40MHz mbus, and the SS10 has a switchable 33/36/40MHz MBUS. Ross sells an SS20 derivitive called the Hyperstation 30, which has a 66Mhz MBUS. Warning: different module revisions may or may not work in different systems. Check the Sun part number. Further, newer modules may require that the machine have a sufficiently recent PROM revision to work. Module #CPUS Processor Clck Ex.Cache Comments ------- ------ ---------- ---- -------- ------------------------------- SM100 2 RT605/CY605 40 64k Rev 8 required for SunOS 5.x SM20 1 SuperSPARC 33 - SS10 only SM21 1 SuperSPARC 33 1M Not sold by Sun SM30 1 SuperSPARC 36 - SS10 only SM40 1 SuperSPARC 40 - SS10 or SS600 only SM41 1 SuperSPARC 40.3 1M SS10 or SS600 only SM50 1 SuperSPARC 50 - SS20 only SM51 1 SuperSPARC 50 1M SM51-2 1 SuperSPARC 50 2M SC2000 only SM52 2 SuperSPARC 45 1M Announced, never sold. SM512(?) 2 SuperSPARC 50 1M Dbl-width: 1 SBUS + 1 MBUS slot SM61 1 SuperSPARC 60 1M SM61-2 1 SuperSPARC 60 2M SC2000 only SM71 1 SuperSPARC2 75 1M SM81 1 SuperSPARC2 85 1M SS1000 only SM81-2 1 SuperSPARC2 85 2M SC2000 only RTS55 1 HyperSPARC 55 256k Non-Sun, SS10 or SS600 only RTD55 2 HyperSPARC 55 256k Non-Sun, SS10 or SS600 only RTS66 1 HyperSPARC 66 256k Non-Sun RTD66 2 HyperSPARC 66 256k Non-Sun RTS72 1 HyperSPARC 72 256k Non-Sun RTD72 2 HyperSPARC 72 256k Non-Sun RTS90 1 HyperSPARC 90 256k Non-Sun RTD90 1 HyperSPARC 90 256k Non-Sun RTS100 1 HyperSPARC 100 256k Non-Sun RTD110 1 HyperSPARC 110 256k Non-Sun RTS110/1024 1 HyperSPARC 110 1M Non-Sun RTD110/1024 2 HyperSPARC 110 1M Non-Sun RTS125 1 HyperSPARC 125 256k Non-Sun RTD125 2 HyperSPARC 125 256k Non-Sun RTS125/512 1 HyperSPARC 125 512k Non-Sun RTD125/512 2 HyperSPARC 125 512k Non-Sun RTS125/1024 1 HyperSPARC 125 1M Non-Sun RTD125/1024 2 HyperSPARC 125 1M Non-Sun RTS133/512 1 HyperSPARC 133 512k Non-Sun RTD133/512 2 HyperSPARC 133 512k Non-Sun RTS142/1024 1 HyperSPARC 142 1M Non-Sun RTD142/1024 2 HyperSPARC 142 1M Non-Sun RTS150/512 1 HyperSPARC 150 512k RTS166/512 1 HyperSPARC 166 512k Non-Sun RTS180/512 1 HyperSPARC 180 512k Non-Sun RTS200/512 1 HyperSPARC 200 512k Non-Sun RTD200/512 2 HyperSPARC 200 512k Non-Sun SMHS11 1 HyperSPARC 100 256k SS20 only SMHS12 2 HyperSPARC 100 256k Double-width: SS20 only SMHS21 1 HyperSPARC 125 256k SS20 only SM151 1 HyperSPARC 150 512k SS20 only Key to SS600/SS10/SS20 model numbers: RT605 (40Mhz SS2-class Ross) systems: Model "1n0", n=number of CPUs (2 or 4) Examples: 120, 140 SuperSPARC systems: Uniprocessor: Model "sc", s=clock speed, c=MBs of external cache Examples: 20, 30, 40, 41, 50, 51, 61, 71 Multiprocessor: Model "scn", s=clock speed, c=MBs of external cache (0 or 1), n=number of CPUs Examples: 402, 412, 502, 512, 612, 712 Speeds: 2=33Mhz, 3=36MHz, 4=40MHz, 5=50MHz, 6=60Mhz, 7=75Mhz, 8=85Mhz HyperSPARC systems: Model "HSsn", s=clock speed, n=number of CPUs Speeds: 1=100Mhz, 2=125Mhz Examples: HS11, HS12, HS14, HS21, HS22 Exception: SparcStation 151 is 1x150Mhz HyperSPARC, 152 is 2x150Mhz ----------------------------------------------------------------------------- Subject: 6.4) Which versions of SunOS 4 are Y2000 compliant? Are there patches for older versions of SunOS? Sun's Y2000 efforts are documented on their web page, at http://www.sun.com/y2000 SunOS 4.1.3U1B (Solaris 1.1.1) and SunOS 4.1.4 (Solaris 1.1.2) are all Y2000 compliant after the appropriate Y2000 patch kit is installed. These are available to support contract customers only, from http://sunsolve.sun.com/sunsolve Sun made no effort to test previous versions of SunOS. ----------------------------------------------------------------------------- 11. Miscellaneous Hardware ----------------------------------------------------------------------------- Subject: 7.1) How do I use the keyboard and display when the console is on ttya? /dev/mouse and /dev/kbd are disabled when you use ttya or ttyb for a console. You need to make new ones, which you can use with xdm to support the keyboard and display while the console is on the serial port. Here's how: 1. Make new special files corresponding to the "raw" kbd and mouse: mknod /dev/zs2 c 12 2 # The keyboard mknod /dev/zs3 c 12 3 # The mouse These are just serial ports and will need some "special treatment" in order to behave as /dev/kbd and /dev/mouse. 2. Shutdown your machine and tell the monitor to use ttya (or ttyb) setenv input-device ttya setenv output-device ttya (or use the eeprom command to do this) 3. Reset and reboot. /dev/fb, /dev/kbd and /dev/mouse are now useless. /dev/bwtwo0 (or whatever your framebuffer device is) works as a substitute for /dev/fb. Also /dev/ttya (or ttyb) is useless - if you have an entry in ttytab for it, comment it out. 4. Modify the StartOW file in the xdm directory ($OPENWINHOME/lib/xdm) and add the following lines: KEYBOARD=/dev/zs2 MOUSE=/dev/zs3 FRAMEBUFFER=/dev/bwtwo0 # or whatever your framebuffer is export MOUSE KEYBOARD FRAMEBUFFER This file is only used by xdm to control the local display (see the Xservers file). So setting these variables will not affect xdm running on any other foreign display (i.e. xterminal). 5. Set the OPENWINHOME environment variable, then start xdm with the config option, for example in /etc/rc: OPENWINHOME=/usr/openwin; export OPENWINHOME if [ -f $OPENWINHOME/lib/xdm/xdm-config ]; then $OPENWINHOME/bin/xdm -config $OPENWINHOME/lib/xdm/xdm-config & echo "Starting XDM..." fi Thanks to "John D. Barlow" and David Moline for these instructions. ----------------------------------------------------------------------------- Subject: 7.2) How come my mouse occasionally doesn't work? If it is a mechanical mouse, it may need cleaning. Open up the bottom panel by rotating it, and remove the mouse ball. Clean the mouse ball. With a Q-tip, clean off any grime on the rotors inside the mouse. However, if it is an optical mouse, read on: Eugene Kramer points out that type 3 and type 4 optical mouse pads only work in one orientation (long side in the width); if the pad has been rotated, the mouse will only move in one axis, and will appear to be broken. It may not be; just rotate the pad 90 degrees. martin@gea.hsr.it (Martin Achilli) writes: Sun optical mice P/N 370-1170-01 have two LEDs on the underside. One is a normal red LED, the other is an infrared LED. Old mice (4+ years) can have trouble tracking horizontal motion. Cleaning the mouse pad with a solvent may improve things slightly but not completely. I have replaced the red LED on the mouse PCB for eight of my twelve optical mice and the problem has gone. All you need to do is purchase a red LED of the type than focus the beam, NOT the unfocused type that are normally found as indicator lights on equipment. Open the mouse and remove the PCB by unplugging the small black connector. Be careful with the two small spherical lenses which can fall out and easily be lost. Mark the PCB and one of the LED's leads to note the orientation, then desolder the LED marked L1. Pull out the leads from above and pull the LED out of the black plastic mounting. Be careful since the mounting is only glued to the PCB. Check for polarity before inserting the new LED, I noticed that for all the LEDs that I installed, the longer lead must go into the PCB hole close to the letters L1. First fold the LED leads like the ones of the one you are replacing, and then insert it into the mounting, solder the leads and close the mouse. After this, horizontal motion should be much smoother. Disclaimer: I will not take any responsibility for any failure or damage arising from the above procedure Thanks to Martin Achilli . Finally, the wire inside the mouse cable may be suffering from fatigue, usually where the cable is attached to the mouse. If you turn the mouse over, and wiggle the cable where it is attached to the mouse, and if you see the visibly lit LED flickering while you do this, this is your problem. ----------------------------------------------------------------------------- Subject: 7.3) How do I do hardware flow control on an ALM-2? The ALM-2 is a VME Serial card for VME-bus Suns. Hardware flow control is only supported on the first four ports (0-3) of the ALM-2. The other ports do not support hardware flow control. So just use one of ports 0-3. ----------------------------------------------------------------------------- Subject: 7.4) Is there a third-party source for SPARCprinter consumables? Yes, there is. The SPARCprinter is OEM'ed by Xerox, and uses the same consumables as the Xerox 4030 laserprinter. The appropriate part numbers are: Toner cartridge: 365-1124-01 Sun 6R281 Xerox Drum cartridge: 365-1125-01 Sun 13R32 Xerox Fuser Lubricant/oil: 370-1371-01 Sun 94E95090 Xerox Fuser wick: 811-1687 Sun (Sun Express) These parts are available from various resellers. ----------------------------------------------------------------------------- Subject: 7.5) How do I configure a non-postscript printer for postscript? If a ghostscript driver is available for that printer, you can use ghostscript to translate the postscript to something the printer can understand. To do this for SunOS, use the APSfilter package. APSfilter was posted to comp.sources.misc as part of volume 42, and is available from your favourite comp.sources.misc archive site (eg. ftp://ftp.uu.net/usenet/comp.sources.misc/volume42/apsfilter). ----------------------------------------------------------------------------- Subject: 7.6) How do I disable/remap STOP-A/L1-A? First, be sure you want to do this. If the problem is that users are halting and rebooting the machine, note that disabling STOP-A will merely prompt them to powercycle the machine (or remove and re-insert the keyboard plug) instead. This is actually worse. But if you're sure you want to do this, compile and run this little program. /* Enable or disable abort sequence. John DiMarco */ #include #include #include #include #include #include #define ERR -1 #define DISABLE 0 #define ENABLE 1 #define KEYBOARD "/dev/kbd" main(argc,argv) int argc; char *argv[]; { static struct kiockey k; int fd, mode=ERR; if(2==argc){ switch(*(argv[1])){ case 'e': mode=ENABLE; break; case 'd': mode=DISABLE; break; } } if(ERR==mode){ printf("Usage: %s [enable|disable]\n", argv[0]); exit(1); } if(0>(fd=open(KEYBOARD, O_RDWR))){ perror(KEYBOARD); exit(1); } k.kio_tablemask = KIOCABORT1; k.kio_station=mode; (void)ioctl(fd, KIOCSETKEY, &k); printf("Abort sequence is now %s.\n", mode?"enabled":"disabled"); }