Archive-name: sunmanagers-faq
$Id: faq.html,v 1.30 2011/02/28 15:08:12 jdd Exp $

SunManagers Frequently Asked Questions

This is collection of common questions posted to the sunmanagers mailing list twice a month. It is intended to benefit Sun System Managers and reduce traffic to the list by providing quick answers to common problems. 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 <jdd@cs.toronto.edu>. 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.

The List Server maintainer is Bill Bradford <mrbill at mrbill dot net>. Any problems with the mailing list server should be directed to Bill.


Questions

1. The Sun-Manager's Mailing list
1.1) How do I read, join, post to, or remove myself from the sunmanagers mailing list?
1.2) What is the Sun-Manager's Charter? What are the rules?
1.3) Are there any public archives for the sunmanagers list?
1.4) What should I keep in mind when posting to sunmanagers?
1.5) What other forums are there for Suns?
1.6) Where are the answers to questions about old Suns and old versions of Solaris?
1.7) What fields can I use to filter Sun Managers email?

2. Getting Help Over the Net
2.1) How do I find out what patches are available from Sun?
2.2) How do I get help migrating to Solaris?
2.3) How do I access Sun's documentation over the net?
2.4) To which web sites can I go for help?

3. Network Directory and File Services
3.1) How do I use DNS for hostname resolution?
3.2) How do I change NIS+ credentials for the root master server?
3.3) When I compile something, errors occur saying _dlopen and other _dl routines can't be found. Why?

4. Window Systems
4.1) What Window system GUIs are supported by Sun?

5. Disks, Tapes and SCSI
5.1) What sector/head/cylinders parameters should be used for a hard disk?
5.2) Can I replace an internal drive in a Sun with a higher capacity model?
5.3) Is it okay to disconnect or connect SCSI devices while powered on?
5.4) How do I configure my sun to use Exabyte 4mm DAT tape drives?
5.5) Why is tagged queueing a problem on my third-party disk?
5.6) Why don't third-party CD-ROMS work on my sun?
5.7) What size and density parameters should I use for ufsdump with a high-capacity tape drive?
5.8) My floppy/cdrom device says "device busy". What do I do?
5.9) What software is available for CD-R/CD-RW?
5.10) Where is my disk space? The "du" and "df" commands disagree.

6. Resource Management and Performance Tuning
6.1) How do I tell what caused my machine to crash?
6.2) What can I do if my machine slows to a crawl or just hangs?
6.3) How do I find out how much physical memory a machine has?
6.4) How do I find out what my machine's memory is being used for? How can I tell if I need more memory?
6.5) Why do some files take up more disk space after being copied? Why are the sizes reported by ls -l and du different?

7. HTTP and Anonymous FTP
7.1) How do I set up anonymous ftp on my machine?
7.2) Where can I get a Web server for Solaris?

8. Consoles, Keyboards and Key Remapping
8.1) How do I make the numeric keypad on a sun keyboard work with xterm?
8.2) How do I swap the CAPS LOCK and CONTROL keys on a sun keyboard?
8.3) * How do I use a Windows PC for a Sun serial console?

9. Sun models and OS Versions
9.1) Which Sun models run which version of SunOS?
9.2) How can my program tell what model Sun it is running on?
9.3) How do I find out a Sun's boot prom revision?
9.4) Which hardware/software is capable of 64-bit? Which is only 64-bit? How can I tell which is running?

10. Miscellaneous Software
10.1) My remote ufsdump is failing with a "Protocol botched" message. What do I do?
10.2) Where can I get a C compiler for Solaris?
10.3) How do I read Microsoft Word documents on my Sun?
10.4) How do I restore to a different location the contents of a tarfile created with absolute pathnames?

11. Miscellaneous Hardware
11.1) How come my mouse occasionally doesn't work?
11.2) How can I turn my old sun into an X-Terminal?
11.3) How can I use an SVGA monitor on my Sun?
11.4) Where can I find alternate pointing devices for my Sun?

12. Networking
12.1) Why do both my net interfaces have the same ethernet address?
12.2) How can I know the hardware vendor from an ethernet address?
12.3) How do I set my ethernet interface to e.g. 100Mb full duplex?
12.4) How do I find out what process is using a particular port?
12.5) I have a lot of ports in WAIT states. Why?

13. Electronic Mail
13.1) Where can I get a POP or IMAP server for my sun?

14. Printing
14.1) How do I get started with LP-style printing in Solaris?
14.2) How do I configure a non-postscript printer for postscript?

15. Misc System Administration
15.1) I've forgotten the root password; how can I recover?
15.2) How do I disable/remap STOP-A/L1-A?
15.3) How do I manage services in Solaris 10 and later? Do I still make links in /etc/rc*.d?

Answers


1. The Sun-Manager's Mailing list
1.1) How do I read, join, post to, or remove myself from the sunmanagers mailing list?

Point your web browser to http://www.sunmanagers.org

Persons without web access should send a mail message to "sunmanagers-request@sunmanagers.org" containing the single word "help".

Messages can be posted to the list by mailing them to the address "sunmanagers@sunmanagers.org". Do not do this until you have read the charter/policy (question 1.2) and the "how to post" document at http://www.sunmanagers.org.

The policy and the "how to post" document is sent to the entire list twice a month. It is also sent out to every new subscriber and is available at http://www.sunmanagers.org.

The latest version of the FAQ (this file) is available at http://www.sunmanagers.org


1.2) What is the Sun-Manager's Charter? What are the rules?

1: This list is NOT moderated! Every message that is sent to the list will be passed on to every member of the list.

2: Requests to have addresses added or removed from the list should NOT be sent to the entire list. Instead, addresses should be added or removed via the web page at http://www.sunmanagers.org Similarly, test messages of any sort should not be sent to the list.

3: This list is intended to be a quick-turnaround trouble shooting aid for those who administer and manage Sun systems. Its primary purpose is to provide the Sun manager with a quick source of information for system management problems that are of a time-critical nature.

4: All responses are to be mailed back to the questioner and are NOT to be sent to the entire list. Any response to a list message sent to the list, rather than to the person asking the question, will be deleted without notice. The person who originally asked the question has the responsibility of summarizing the answers and sending the entire summary back to the list. When a summary is sent back to the list, the word "SUMMARY" should be the first word of the "Subject" line.

5: Discussions on ANY topic are not allowed and will not be tolerated. If you want to discuss something, take it to the appropriate Sun newsgroup.

6: If it is not specifically related to Sun system management, then it does NOT belong on this list. Requests for vendor recommendations are tolerated, provided that the hardware in question is something that system managers normally purchase.

7: Commercial Advertising of any sort on the list is strictly prohibited.

8: Postings about employment, either employment sought or offered, are not permitted on this list. Please use a more appropriate forum, e.g. one of the newsgroups in the misc.jobs USENET hierarchy.

9: Requests for software (free or otherwise) should be limited to software that is directly related to Sun SYSTEM MANAGEMENT ONLY.

10: Read the appropriate manuals BEFORE posting, including the "Read This First" documents. Oftentimes the manuals contain answers for common problems.

11: When including a traceback from a system panic, make sure that it is a symbolic traceback. Numeric tracebacks (the ones included as part of the panic message) are not helpful; don't bother sending them to the list.

12: A posting to sunmanagers is not a general invitation to email the poster -- if you wish to send email to a sunmanagers poster, the email you send should be related to the posting, else it will be unsolicited email and may be treated like any other unsolicited email (e.g. spam). Sunmanagers is not to be used to collect email addresses of people who manage Sun systems. Those who do this not only violate the list's policy, but risk seriously offending the very people they are attempting to reach.

13: PLEASE PLEASE PLEASE...Think before you send a message! Ask yourself "is this really appropriate?" There are enough other newsgroups and mailing lists around to cover the marginal topics. Perhaps there is another forum that is more appropriate? Check the list of Sun specific newsgroups included in the FAQ. Perhaps your message would be more appropriate there? Remember that Sunmanagers is very public: we have thousands of subscribers, all postings are archived for posterity on various archive sites, and these sites are in turn searchable via various web engines. Submitting a posting is irreversible -- once it goes out, it cannot be taken back!

Failure to adhere to these guidelines may result in severe chastisement by the list participants. Not only will you succeed in looking like a careless fool, and in making Sun Systems Managers all over the world annoyed at your incompetence, you may end up damaging your professional reputation.


1.3) Are there any public archives for the sunmanagers list?

Sunmanagers' official archive is accessible at http://www.sunmanagers.org All postings are automatically archived. It is our policy not to accommodate requests to modify the archives, so if you are uncomfortable with your submissions in their entirety being public, do not submit them.

Also, various members also keep their own archives on their own initiative. Some of these are public. Here are some we know about:

http://aa11.cjb.net/sun_managers/index.htm

Hank Leininger <hlein at progressive-comp dot com> maintains a searchable archive site of messages (both questions and summaries) in Florida. It can be accessed at: http://marc.theaimsgroup.com/?l=sun-managers

Dataman Benelux in the Netherlands hosts a "fuzzy" full-text index of the Sun Managers mailing list at: http://www.dataman.nl/cgi-bin/sunmanagers

Manfred Liebchen <liebchen at rrz dot Uni-Koeln dot DE> maintains an archive site in Germany. It can be accessed at: http://www.uni-koeln.de/RRZK/Abt-Systeme/sun/infos/SUN-MANAGERS/sunman.html

Older summaries (up to mid-1999) are available at http://www.latech.edu/sunman.html


1.4) What should I keep in mind when posting to sunmanagers?


1.5) What other forums are there for Suns?

Other forums that relate to Suns: USENET Newsgroups (accessible via "rn", "readnews", "nn", netscape, etc.): There is an entire USENET hierarchy devoted to Sun equipment. Some of these groups include:

Other newsgroups that may also be of interest: Mailing lists:

Sun Flash (Sun Product Announcements/news releases)
sunflash-request@sunvice.East.Sun.COM - add/remove requests

SunHelp (Discussion/help/chat about Sun machines and Software)
http://www.sunhelp.org/mailman/listinfo/sunhelp

Rescue (Rescuing old Sun equipment from the dump)
http://www.sunhelp.org/mailman/listinfo/rescue

Sunergy (Sun Commercial Newsletter)
sunergy_information@Sun.COM - add/remove requests

Suns-at-home (Home use of Sun Workstations)
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

ssa-managers (Sun RAID software and hardware products)
majordomo@eng.auburn.edu - add/remove requests (e.g. send "subscribe ssa-managers" in message body)

veritas-users (Veritas products)
http://mailman.eng.auburn.edu/mailman/listinfo

CIAC notes (US. DOE Computer Incident Advisory Capability)
ciac-listproc@llnl.gov - add/remove requests
listmanager@cheetah.llnl.gov - human list manager

CERT Advisory mailing list (security notifications for Suns and others)
cert-advisory-request@cert.org - add/remove requests

Solaris on Intel-based (x86) machines
http://groups.yahoo.com/group/solarisx86/
Old list archives at: http://www.egroups.com/list/solarisonintel/

Auspex: managers of Auspex NFS file servers
auspex-request@princeton.edu - add/remove requests
auspex@princeton.edu - submissions

Solbourne: managers of Solbourne SPARC systems "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

disksuite-l: for users who use Sun's Solstice Disksuite software
majordomo@lists.veritel.com.br - add/remove requests
sysadm@veritel.com.br - list owner

Linuxmanagers: for users of Linux, including Sun Linux.
http://www.linuxmanagers.org

NOTE: if you wish to be added to one of the above mailing lists, send mail to the REQUEST address! Do not send add requests to the main address!

For Web pages, see the answer to question 2.4.


1.6) Where are the answers to questions about old Suns and old versions of Solaris?

Those questions and answers used to be in this FAQ, but since they're no longer frequently asked, they've been moved elsewhere.

The FAQ as of late 2005 contained information about pre-UltraSPARC suns and versions of Solaris before Solaris 8, and is available at ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq-2005.

The FAQ as of late 2000 contained information about pre-SPARC suns, early SPARCstations, and SunOS 4.x, and is available at ftp://ftp.cs.toronto.edu/pub/jdd/sunmanagers/faq-2000.


1.7) What fields can I use to filter Sun Managers email?

The following headers will exist in any mail to the list:

  To: sunmanagers@sunmanagers.org
  List-Help: <mailto:sunmanagers-request@sunmanagers.org?subject=help>
  List-Post: <mailto:sunmanagers@sunmanagers.org>
  List-Subscribe: 
  <http://www.sunmanagers.org/mailman/listinfo/sunmanagers>,
          <mailto:sunmanagers-request@sunmanagers.org?subject=subscribe>
  List-Id: The Sun Managers Mailing List <sunmanagers.sunmanagers.org>
  List-Unsubscribe: 
  <http://www.sunmanagers.org/mailman/listinfo/sunmanagers>,
          
  <mailto:sunmanagers-request@sunmanagers.org?subject=unsubscribe>
  List-Archive: <http://www.sunmanagers.org/pipermail/sunmanagers/>

2. Getting Help Over the Net
2.1) How do I find out what patches are available from Sun?

If you have a software service agreement with Sun, you can use Sun's "SunSolve ONLINE" service to obtain patches. Check your service agreement for details.

Many anonymous ftp sites have partial collections of patches.

WARNING: if you ftp patches from an ftp site, you are trusting whomever put them there. To be absolutely safe, get your patches from a trusted source.

Rik Harris <rik.harris at vifp dot monash dot edu dot au> maintains a WAIS archive (sun-fixes.src) of most available patch READMEs.

The Sun User Group (SUG) CD ROM also has a collection of Sun patches.


2.2) How do I get help migrating to Solaris?

Start by reading the Solaris FAQ, maintained and posted periodically to comp.unix.solaris by Casper Dik <Casper dot Dik at Holland dot Sun dot COM>. It can be obtained at http://www.science.uva.nl/pub/solaris/solaris2 Then go to the Solaris Security FAQ, maintained by John Pancharian and hosted by IT World at http://www.itworld.com/Comp/2377/security-faq/

Sun has a programme for developers/companies to migrate to Solaris. It's documented at http://advantage.sun.com/partners/10moves/.


2.3) How do I access Sun's documentation over the net?

Sun has a web site devoted to documentation, at http://docs.sun.com


2.4) To which web sites can I go for help?

This is not a complete list, but:

First, see the answer to question 2.2.

Sun's documentation is available at http://docs.sun.com You can search the Sun newsgroups at http://www.dejanews.com Sun-Managers Archives are described in the answer to question 1.3 above.

Some sites suggested by Jeffrey Meltzer <meltzer at villagenet dot com> are:

TechTarget has a search engine at http://searchenterpriselinux.techtarget.com that also covers Solaris.

Eric De Mund <ead at ixian dot com> suggests the BigAdmin site run by Sun, at http://www.sun.com/bigadmin

Alan Pae <alanpae at ilkda dot com> suggests Sun Country, at http://www.ilkda.com


3. Network Directory and Files Services
3.1) How do I use DNS for hostname resolution?

In Solaris 2.x, this is easy: simply edit /etc/nsswitch.conf and put "dns" before (or instead of) nis or nisplus on the line that begins with "hosts:". For example, to look up hostnames first in the host file and then in the DNS, use "hosts: files dns"


3.2) How do I change NIS+ credentials for the root master server?

If an NIS+ system is functioning correctly and only the root password and root private keys for the system need to be changed, follow these steps:

1) Login as root for the system and change the root password in the /etc/shadow file:

        {root}3% passwd
        passwd:  Changing password for root
        New password:
        Re-enter new password:
        {root}4%
2) Change the system's private key in the cred table:
        {root}4% chkey -p
        Updating nisplus publickey database.
        Reencrypting key for 'unix.ramayan@bharat.i n'.
        Please enter the Secure-RPC password for root:  <enter old passwd>
        Please enter the login password for root:       <enter new passwd>
        {root}5%
3) If running replica server(s) then wait until the changes to the credential object table has been propagated to its replicas. This could be up to 2 minutes.

4) Change the system's /etc/.rootkey:

        {root}5% keylogin -r
        Password:                               <enter new passwd>
        Wrote secret key into /etc/.rootkey
        {root}6%
The procedure above will work for any system -- root server, root replica, non-root servers, and all clients. The steps above change only the system's root password and private keys, not the public keys for the system.

Thanks to Ronald W. Henderson <rwh at atmos dot albany dot edu>.

However, if you want to change all the root credentials, including the public key, follow these steps:

Use the passwd command on the root master server to change the root password. But DO NOT follow this with a chkey -p to update the credentials for the root master server, because this will disable the entire NIS+ domain. The only way to recover from this is to rebuild the domain from scratch!

It is possible to change the credentials of the root master server, but it is not easy. The procedure follows:

To change the keys for the root master server do as follows:

  1. use these commands in this order:
  
         nisupdkeys -CH master.server.name. groups_dir.domain.name.
         nisupdkeys -CH master.server.name. org_dir.domain.name.
         nisupdkeys -CH master.server.name. domain.name.
  
         (This CLEARS the public key for the HOST "master.server.name" in this
  directory.)
  
  2. Kill rpc.nisd and restart it at security level O then run this command:
  
         nistbladm -R cname=master.server.name. cred.org_dir.domain.name.
         nisaddcred des
  
         <This deletes the old credential and creates a new one.>
  
  3. Shutdown and restart any replicas of org_dir.domain.name. at run level O
  
         nisping org_dir.domain.name.
  
  <This propogates the new key pair to the replicas.>
  
         nisdupdkeys domain.name.
         nisupddkeys org_dir.domain.name.
         nisupdkeys groups_dir.domain.name.
  
         <This puts the new credential in the effected directory objects.>
  
  4. Kill and restart all rpc.nisd servers at level O to security level 2.
Note that changing a server's key affects all directory objects containing the key.

Thanks to Rogerio Rocha <rogerio at bvl dot pt> and Sun INFODOC ID 2213 for this information.


3.3) When I compile something, errors occur saying _dlopen and other _dl routines can't be found. Why?

You are probably trying to compile something statically. You must either include stub routines for the _dl routines, or you must link the C library (or -ldl) dynamically. The source code below provides do-nothing stubs for the routines in question.

        /* libdl stubs -- John DiMarco <jdd@cs.toronto.edu> */
        char *dgettext(domainname, msgid)
        char *domainname;
        char *msgid;
        { return(msgid); }
         
        void *dlopen(pathname, mode)
        char *pathname;
        int mode;
        { return((void *)NULL); }
         
        void *dlsym(handle, name)
        void *handle;
        char *name;
        { return((void *)NULL); }
         
        char *dlerror()
        { return(NULL); }

        int dlclose(handle)
        void *handle;
        { return(0); }


4. Window Systems
4.1) What Window system GUIs are supported by Sun?

Sun's default window system for Solaris is CDE; Gnome is also supported. Sun's Java Desktop System and the Sunray software for Linux uses Gnome.


5. Disks, Tapes and SCSI
5.1) What sector/head/cylinders parameters should be used for a hard disk?

The format program can almost always figure this out on its own by querying the drive, but if you wish, you can specify your own in /etc/format.dat.

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 modern suns, 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 has an option to generate an appropriate format.dat entry.

Finally, you can compute your own entry. 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, 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.


5.2) Can I replace an internal drive in a Sun with a higher capacity model?

Yes, usually. If you purchase it from someone other than Sun, it is wisest to make sure that it is either a model of drive that is supported by Sun for that machine, or that it at least does not dissipate more heat than the hottest of the drives supported by Sun. The Sun Systems Handbook lists various drives supported on various models; you can query it on the web for modern Suns at http://sunsolve.sun.com/handbook_pub/Systems. For systems which are not maximally configured (e.g. there are empty internal drive bays), it might be safe to exceed this limit a bit, but caveat emptor.

Disk drive heat dissipation/power figures are available on the drive's datasheet, available on the drive vendor's web site. The most relevant figure is the wattage indicated for "Read/Write" or "Seek". Unfortunately, different vendors report this in different ways; read the vendor's documentation to see what this figure indicates. This figure is sometimes indicated in amps at 5V and 12V; convert to watts by multiplying the voltage by the amperage in each case, and adding the two together.


5.3) 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 may need to be replaced. Caveat Emptor.


5.4) How do I configure my sun to use Exabyte 4mm DAT tape drives?

Add the following to /kernel/drv/st.conf:

    tape-config-list = 
      "EXABYTE EXB-4200", "Exabyte 4mm EXB-4200", "EXBT-4200",
      "EXABYTE EXB-4200c", "Exabyte 4mm EXB-4200c", "EXBT-4200c"

    EXBT-4200 = 1,0x34,1024,0x0029,4,0x63,0,0,0,3; 
    EXBT-4200c = 1,0x34,1024,0x0029,4,0x63,0,0x13,0,3; 
Exabyte also recommends that their 4mm tape drives have firmware revision levels of at least the following when used on suns: Thanks to Dave Hightower <hightowr at afwc dot af dot mil>.


5.5) Why is tagged queueing a problem on my third-party disk?

Tagged Command Queueing (TCQ) is an optional part of the SCSI-2 specification. It permits a drive to accept multiple I/O requests for execution later. These requests are "tagged" by a reusable id so that the drive and the OS can keep track of them. The drive can reorder these requests to optimize seeks. For more details, see the SCSI-2 specifications. A draft version is available at ftp://ftp.cs.toronto.edu/pub/jdd/scsi-doc/scsi2.10b.gz

SunOS 4.x and earlier never uses tagged queueing. However, Solaris 2.x will make use of tagged queuing if the drive claims to support it. Unfortunately, some drive manufacturers have found it hard to design their drives to do tagged queueing properly, and this particular area has been a common source of bugs in drive firmware.

If it is not possible to turn off tagged queueing in the drive that is causing the problem, Solaris 2.x can be told not to use tagged queueing at all, by putting the following line in /etc/system:

set scsi_options & ~0x80

The "scsi_options" kernel variable contains a number of bit flags which are defined in /usr/include/sys/scsi/conf/autoconf.h. 0x80 corresponds to tagged queueing.

However, this turns off tagged queueing for the entire machine, not just the problematic drive. Because tagged queueing can provide a significant performance enhancement for busy drives, this may not always be desirable. In Solaris 2.4 and later, it is possible to disable tagged queueing and set or clear other scsi options on a per-controller or per-drive basis. The appropriate technique is described in the esp(7) and isp(7) man pages.


5.6) 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 <Kevin dot Sheehan at uniq dot com dot au>

For more information about third-party CD-ROMS on Suns, consult the CD-ROM FAQ, maintained by Mike Frisch <mfrisch at saturn dot tlug dot org> and Martin Hargreaves <martin at datamodl dot demon dot co dot uk>. It can be found on the World Wide Web at ""http://saturn.tlug.org/suncdfaq". A UK mirror is available at ""http://www.datamodl.demon.co.uk/suncd/".


5.7) What size and density parameters should I use for ufsdump with a high-capacity tape drive?

The only purpose of the ufsdump 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. But ufsdump can detect the end of media for all modern tape drives, and will automatically prompt for new tapes when needed, so as long as the size and density parameters indicate a tape as long as or longer than the one you're using, ufsdump will behave properly.

Thanks to Niall O Broin <nobroin at esoc dot esa dot de>


5.8) My floppy/cdrom device says "device busy". What do I do?

The Volume Manager (vold) is probably holding the device open. You can access a floppy through the volume manager by typing "volcheck" and looking in /floppy/*. CD-ROMs don't require volcheck; just insert one and the volume manager should automatically notice, and mount it under /cdrom/*. Unmount by typing "eject floppy" or "eject cdrom", respectively. The Volume Manager can be configured by editing /etc/vold.conf.

If you need to access a floppy or CD-ROM special device, however, you may need to turn off the volume manager. As root, type "/etc/init.d/volmgt stop". To turn it back on, type "/etc/init.d/volmgt start".


5.9) What software is available for CD-R/CD-RW?

Commercial Software:

GEAR by Elektoson - http://www.elektroson.com/ Young Minds - http://www.ymi.com/ - High-end integrated hardware/software solution Creative Digital Research - http://www.cdr1.com/

Joerg Schilling has developed an excellent cd recording package called cdrecord. This package should meet most needs. See http://www.fokus.gmd.de/research/cc/glone /employees/joerg.schilling/private/cdrecord.html for much more information, including supported hardware.

Andy McFadden has an excellent CD-Recordable FAQ at: http://www.cdrfaq.org

Thanks to Mark Belanger <mjb at ltx dot com>


5.10) Where is my disk space? The "du" and "df" commands disagree.

If a process is holding open a file, and that file is removed, the space belonging to the file is not freed until the process either exits or closes the file. This space is counted by "df" but not by "du". This often happens in /var/log or /var/adm when a long-running process (e.g. syslog) is holding open a file. In the case of syslog, send it a HUP (e.g. kill -HUP <syslog's process ID>).

You can use LSOF (ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/lsof) to find which processes are holding open a particular file. Thanks to Stefan Voss <s dot voss at terradata.de> and Michael R. Zika <zika at oconto dot tamu dot edu>

Under Solaris 2.6 and later, files which have been unlinked can still be accessed through the /proc interface. If a process is holding open such a file for writing, but it's inconvenient or impractical to kill the process or get it to close the file, you can free up the disk space by truncating (not removing) the file from under /proc; e.g.,

	# cd /proc/1234/fd
	# ls -l
	c---------   1 root      24,  12 Jan  1 11:33 0
	c---------   1 root      24,  12 Jan  1 11:33 1
	c---------   1 root      24,  12 Jan  1 11:33 2
	--w-------   1 root    314159265 Jan  1 11:37 3
	# : > 3
	# ls -l
	c---------   1 root      24,  12 Jan  1 11:33 0
	c---------   1 root      24,  12 Jan  1 11:33 1
	c---------   1 root      24,  12 Jan  1 11:33 2
	--w-------   1 root            0 Jan  1 11:38 3

Thanks to Dan Astoorian <djast at cs dot toronto dot edu>

Brian Poole <raj at cerias dot purdue dot edu> writes:

	   Another possible cause of df & du disagreeing is if the files are
	   being 'hidden' under a mount.  I ran into this recently where I
	   had a large number of files in /tmp (from adding patches in single
	   user mode) that were on the root partition.  Thus when I was
	   looking for them in multiuser mode, I couldn't find them because
	   of the tmpfs overlay. I exported the root partition via NFS and
	   upon mounting it found the hidden files and deleted them.

6. Resource Management and Performance Tuning
6.1) How do I tell what caused my machine to crash?

The crash messages will usually be displayed on the console, and are usually logged to /var/adm/messages via syslog as well after a warm reboot. In older versions of Solaris, the "dmesg" command may also show crash messages. 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.

In versions of Solaris 2 up to and including Solaris 2.6, uncomment the "savecore" line in the file /etc/init.d/sysetup to enable crash dumps. As of Solaris 7 and later, crash dumps are enabled by default; see the manual page for dumpadm(1M) for information on how to customize system dump configuration.

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 unix.0 vmcore.0

The "crash" utility can be useful for analyzing crash dumps for Solaris up to and including Solaris 8. "Crash" has been superseded by "mdb" (modular debugger) as of Solaris 8.

Thanks to Dan Astoorian <djast at cs dot toronto dot edu>


6.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/. Sps is available at ftp://ftp.csv.warwick.ac.uk/pub/solaris2/sps-sol2.tar.gz.

Doug Hughes <Doug dot Hughes at Eng dot Auburn dot EDU> has written a small, quick PS workalike called "qps", available from his web page at http://www.eng.auburn.edu/users/doug/second.html

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 Solaris system, virtual memory is generally equal to the sum of the swap space and the amount of physical memory (less a roughly constant amount for the kernel) on the machine. The command "swap -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 to crash 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".


6.3) How do I find out how much physical memory a machine has?

Use /usr/sbin/prtconf if the machine is running Solaris. If it's a sun4u running Solaris 8 or previous, /usr/platform/sun4u/sbin/prtdiag is very helpful. It's /usr/sbin/prtdiag in Solaris 9 and later.

On high-end machines, /usr/sbin/cfgadm -al can also provide memory information.

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 open up the case and count SIMMS and/or memory boards.

A perl script "memconf" is also available that identifies the sizes and locations of SIMM/DIMM memory modules installed in a Sun system. It also works on several SPARC clones and with Sun Explorer data. It is maintained by Tom Schmidt <tschmidt at micron dot com>. Download memconf from http://www.4schmidts.com/unix.html


6.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 "swap -s" or "vmstat". If you're using tmpfs for /tmp, "df /tmp" will also work.

Discovering how physical memory is being used can be more difficult, however. 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.


6.5) Why do some files take up more disk space after being copied? Why are the sizes reported by ls -l and du different?

Some files -- core files being one common example -- contain "holes", areas which were seeked over without being written. These files are called "sparse". When read back, these areas appear to contain zeros; however they do not occupy disk space. The "length" of such a file (as reported by "ls -l") will exceed its "size" (as reported by "ls -s" and reflected in the results of du or df).

cp, cpio, and tar do not detect holes; they read and copy the zeros, and the resulting files will contain all-zero blocks (which occupy space) where the input files contained holes (which do not).

dump will detect holes in the dumped files, and restore will reproduce them.

Thanks to Perry Hutchison <perryh at pluto dot rain dot com>

GNU tar has an "-S" option which preserves holes, and Joerg Schilling's "star" has "-sparse" and "-force_hole" options which can be used to preserve and re-insert holes, respectively. star is available for download at ftp://ftp.fokus.gmd.de/pub/unix/star


7. HTTP and Anonymous FTP
7.1) How do I set up anonymous ftp on my machine?

See the ftpd man page, and follow its instructions. You will also need to set up nsswitch.conf in etc. However, you should consider using a different ftpd, such as http://www.wu-ftpd.org.
Solaris "pkg" versions of proftpd and wuftpd are available at: http://metalab.unc.edu/pub/packages/solaris/sparc/
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".


7.2) Where can I get a Web server for Solaris?

The open-source Apache web server and related tools are available on the Solaris Software Companion CD, which is part of the media kit for the Solaris distribution. The contents of this CD are also available for free download at http://www.sun.com/software/solaris/freeware. Apache binaries can also be retrieved from the following sites and many others:

The Sun Java System Web server is available for download from Sun at http://www.sun.com/software/products/web_srvr/home_web_srvr.xml; the Sun Java System Application Server is available for purchase from Sun at http://www.sun.com/software/products/appsrvr.


8. Consoles, Keyboards and Key Remapping
8.1) How do I make the numeric keypad on a sun keyboard work with xterm?

You need to patch the /usr/lib/X11/app-defaults/XTerm and $OPENWINHOME/lib/app-defaults/XTerm files as described in sun patch 100713-01 or later.

Thanks to Margarita Suarez <marg at manila dot cc dot columbia dot edu>


8.2) How do I swap the CAPS LOCK and CONTROL keys on a sun keyboard?

There are two ways to do it, one with xmodmap (for X11 only), and the other using keytables.

Margarita Suarez <marg at manila dot cc dot columbia dot edu> suggests editing $OPENWINHOME/etc/keytables/US5.kt. There are two places where keys 119 (CapsLock) and 76 (Control) should be swapped: the MODMAP section and the KEYSYMMAP section. The latter is most important, because that's where the "Pseudo-Lock" function (which controls the locking behaviour of the key) is defined.

Doug Hughes <Doug dot Hughes at Eng dot Auburn dot EDU> suggests using xmodmap with the following:

        remove Lock = Caps_Lock
        remove Control = Control_L
        keysym Control_L = Caps_Lock
        keysym Caps_Lock = Control_L
        add Lock = Caps_Lock
        add Control = Control_L

In X11, you can change your keyboard layout as you please using the xkeycaps application, which allows you to edit and remap your keyboard on the fly, as well as save configurations to be sourced by xmodmap.

xkeycaps is available from http://www.jwz.org/xkeycaps/ and in the contrib section of your friendly X11 source archive.

Thanks to Dan Pritts <danno at ans dot net> for the info on xkeycaps.


8.3) * How do I use a Windows PC for a Sun serial console?

Wire up a serial cable from the Sun's serial cable to one of the PC serial ports. PC serial ports are usually (but not always) DB9 (9-pin), while Sun serial console ports are usually (but not always) 25-pin (DB25). You generally need to connect them through a "null modem adapter". For more information on serial ports, see Sunhelp's UNIX serial port resources page, at http://www.sunhelp.org/unix-serial-port-resources

The next problem is that the version of Hyperterminal which comes with some versions of Windows cannot generate a BREAK signal. You can obtain a new version of Hyperterminal from http://www.hilgraeve.com/htpe/index.html There are many free alternative terminal programs. Special mention should be made of TeraTerm/TTSSH: http://ttssh2.sourceforge.jp/

For newer suns which support ALOM, a serial or telnet connection to the ALOM is generally preferable. A pinout of the serial RJ-45 ALOM connector can be found in Sun's "Sun Advanced Lights Out Manager (ALOM) 1.6 Administration Guide".

Thanks to Harvey Wamboldt <harvey at mdacorporation dot com > and Bruce Cran < bruce at cran dot org dot uk >.


9. Sun models and OS Versions
9.1) Which Sun models run which versions of SunOS?

SunOS 5.x = Solaris 2.x
Sun dropped the "2." when Solaris (2.)7 came out. i.e. Solaris 7 = "Solaris 2.7" = SunOS 5.7, Solaris 8 = "Solaris 2.8" = SunOS 5.8 and so on.
In the following list, the specified OS is the earliest supported on the specified hardware. Some CPU modules may require later OS versions than listed.

9.2) How can my program tell what model Sun it is running on?

On older suns, the model type is encoded in the hostid, and /usr/sbin/prtconf 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/suntype

Alternatively, grab Michael Cooper's <mcooper at magnicomp dot com> "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.


9.3) How do I find out a Sun's boot prom revision?

Type "banner" at the prom, or type "/usr/sbin/prtconf -V" to determine the prom revision of a particular machine.

Alternatively, grab Michael Cooper's <mcooper at magnicomp dot com> "sysinfo" program, which provides all sorts of information about a given system, including the prom revision. 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.


9.4) Which hardware/software is capable of 64-bit? Which is only 64-bit? How can I tell which is running?

All UltraSPARC and SPARC64 (Primepower) hardware is capable of running in 64-bit mode; earlier SPARCs (HyperSPARC, SuperSPARC, etc.) are 32-bit only. Only some UltraSPARC-I, UltraSPARC-II, and UltraSPARC-II-i systems are capable of both 32-bit and 64-bit operation; later UltraSPARC systems are 64-bit only.

Early UltraSPARC-I hardware (up to 200MHz) suffers from a bug where, in 64-bit mode, a certain code sequence can cause the processor to stall, and thus UltraSPARC-I machines run in 32-bit mode by default. To allow a 64-bit kernel on such a machine, edit/create /platform/<platform-name>/boot.conf and add the line: ALLOW_64BIT_KERNEL_ON_UltraSPARC_1_CPU=true

All Sun Opteron hardware is capable of both 64-bit and 32-bit operation, but Solaris x86 on some Opteron models (X2100, X4100, X4200) runs in 64-bit mode only. Sun Xeon and Pentium-III hardware are capable only of 32-bit operation.

"isainfo -kv" or "isainfo -b" will indicate whether a system is running in 32-bit or 64-bit mode.


10. Miscellaneous Software
10.1) My remote ufsdump is failing with a "Protocol botched" message. What do I do?

The problem produces output like the following:

	...
       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 (or .profile) on the remote machine prints something to stdout or stderr (eg. stty, echo). The remote ufsdump 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.


10.2) Where can I get a C compiler for Solaris?

Sun's "Studio" compiler suite can be obtained at http://www.sun.com/software/products/studio. Various third-party commercial SPARC compilers are also available, including:

The open-source GCC compiler and related tools are available on the Solaris Software Companion CD, which is part of the media kit for the Solaris distribution. The contents of this CD are also available for free download at http://www.sun.com/software/solaris/freeware Thanks to Eric Boutilier <Eric dot Boutilier at Sun dot COM>

GCC binaries can be retrieved from the following sites and many others:

More information on this topic is available at http://www.kevininscoe.com/geek/sun/compilesun/ Thanks to Kevin Inscoe <kevin at inscoe dot org>


10.3) How do I read Microsoft Word documents on my Sun?

You can obtain some of the raw content of the document by using the "strings" command. Note that Word documents (and documents produced by other Microsoft Office programs, like Excel) can sometimes contain hidden information that is not normally accessible from Word, but is visible using "strings" (this can be a good reason not to distribute documents in MS Office formats).

It is possible to run some versions of Microsoft Word on your Sun, using Bochs, WABI, SoftWindows, WinCenter, WinDD, SunPC, or some other Windows integration product.

You can use a word-processor that can import the various MS Word formats. For example, Word Perfect from Corel Corporation is capable of reading and saving in various MS Word formats. Word Perfect is available for several versions of UNIX, including SPARC/Solaris 2.x. Sun's StarOffice is available for various operating systems, including Solaris/SPARC, from http://www.sun.com/staroffice. OpenOffice is also freely available for Solaris x86 and SPARC from http://www.openoffice.org.

From a PC/Mac, you can print postscript output to a file, and view the postscript on the Sun using docviewer or ghostscript/ghostview.

Thomas Anders <anders at hmi dot de> points out that LAOLA (a Perl4 package that can read Word6 and Word7 format is available on the web at http://user.cs.tu-berlin.de/~schwartz/pmh/.

Another option (suggested by Thomas <tunixlists at gmail dot com>) is a GPL-licensed command-line utility called "antiword". His mutt mailcap file is setup as follows:

application/msword; antiword %s; copiousoutput; description="Microsoft Word Text"; nametemplate=%s.doc
Antiword is available from http://www.winfield.demon.nl.


10.4) How do I restore to a different location the contents of a tarfile created with absolute pathnames?

Tarfiles should not normally be created with absolute pathnames, only with relative pathnames. Do not type "tar c /path/name" to create a tar archive, type "(cd /path; tar c name)" instead.

Note: if you do "(cd /path/name; tar c .)", you will indeed avoid absolute pathnames, but beware that the tarfile created may silently overwrite the permissions of the current directory when unpacked. That's OK if you unpack it via:

	"mkdir name; cd name; tar xf /my/tarfile.tar
That's not OK if you unpack it via:
	"cd /tmp; tar xf /my/tarfile.tar"
It's not OK because you will change the permissions of /tmp.

If you do have an archive created with absolute pathnames, you can unpack it in a different location by using GNU's version of tar, which will strip off the leading /.

Alternatively, you can use pax to strip off the leading /, as follows:

	 pax -r -s '/^\///' <abspath.tar
Or you can use chroot and a statically linked version of tar, as follows:
	cp /usr/sbin/static/tar /tmp/restore
        # cd /tmp/restore
        # cat abspath.tar | chroot /tmp/restore /tar xf -

Thanks to Fabrice Guerini <fabrice at bluemartini dot com> and Stephen Kives <Stephen_Kives at cable dot comcast dot com>


11. Miscellaneous Hardware
11.1) 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.


11.2) How can I turn my old sun into an X-Terminal?

You can simply replace the ttymon entry for the console in /etc/inittab with a command that starts up an X server.


11.3) How can I use an SVGA monitor on my Sun?

Some older suns use a 13W3 video connector, which looks something like this:

     -----------------
     \ O O ::::: O /
      -------------
A simple adapter will connect a Sun to a SVGA multi-sync monitor, providing the monitor (like most better monitors these days) will accept composite sync and operate in 1152x900 66 Hz (or whatever output your sun produces) mode. (Check the manufacturer's data sheets, usually on the Web.) Similarly, adapters are available to connect Sun 13W3 monitors to PCs or newer Suns with SVGA connectors.

Adapters are available from many vendors: search for 13W3 on Google.

This and many other interesting facts about Sun video are answered in the Framebuffer FAQ, at one of:

A related FAQ by the same person is the Colormap FAQ at one of:
11.4) Where can I find alternate pointing devices for my Sun?

Bert N. Sure <bert at virtual dot com> claims that Mousetrak makes an excellent line of pointing devices. The url is "">http://www.mousetrak.com". SunExpress (http://sunexpress.usec.sun.com) and Qualix (http://www.qualix.com) distribute them. Bert uses the top-of-the-line "Evolution" trackball, which has six user-definable buttons and a large ball which is manufactured by a billiard ball company in Belgium.

For 3-D input, SunExpress (http://sunexpress.usec.sun.com) sells the SpaceBall 3003, in addition to the standard Sun "SunDials" product.

Dan Pritts <danno at ans dot net> indicates that one can buy a box from sun called the sun interface converter for $75 that allows you to use a ps/2-style keyboard or pointing device, or both, and still use your sun keyboard or mouse. In particular, the sun interface converter supports the Microsoft "natural keyboard".


12. Networking
12.1) Why do both my net interfaces have the same ethernet address?

The Ethernet version 2.0 specification (November 1982) states:

          The physical address of each station is set by network
          management to a unique value associated with the station,
          and distinct from the address of any other station on any
          Ethernet.  The setting of the station's physical address
          by network management allows multiple multiple data link 
          controllers connected to a single station to respond to 
          the same physical address.
			

This doesn't normally constitute a problem because each interface will typically be on a different subnet. If, for some reason, different ethernet addresses are required on different interfaces (for example, to attach two interfaces to the same subnet), a new one may be assigned using the ifconfig command. Alternatively, for all modern Sun hardware, you can set the "local-mac-address?" eeprom variable to "true", which will cause each NIC to use a unique MAC address. This is needed for many failover and trunking configurations.


12.2) How can I know the hardware vendor from an ethernet address?

The first three octets of a six-octet ethernet address typically uniquely identifies the hardware vendor of the particular network interface card. This is called the "Organizationally Unique Identifier" (OUI). OUI information, including the most recent list of public OUIs can be found at http://standards.ieee.org/regauth/oui

Note that it is possible that an unidentified OUI could be used, since vendors are not required to make their OUIs public, and many network interfaces, including Suns, can be configured to use a custom ethernet address, so there is no guarantee that the OUI will correctly identify the vendor.


12.3) How do I set my ethernet interface to e.g. 100Mb full duplex?

The answer to this question assumes you have an hme ethernet interface; similar techniques should work for other ethernet interfaces; consult the man page for the ethernet driver (e.g. if you have an eri driver, "man eri") for more details. If you are not sure which ethernet driver is in use, "ifconfig -a" will tell you. For example, if ifconfig -a shows e.g. "hme0", you have an hme ethernet interface.

All of Sun's ethernet network interfaces faster than 10Mbits are capable of negotiating with a network switch; if this is working, the ethernet interface will automatically choose the fastest supported setting. However, this may not necessarily work with some networking gear, or there may be some other reason to choose a slower setting, e.g. cat3 wiring.

If the two ends have different ideas about what mode the link is, you may see "late collision" messages, dropped packets, or complete failure.

To force a particular mode, e.g. 100Mb FD, you can use ndd as follows:

        # turn off autonegotiation
        ndd -set /dev/hme adv_autoneg_cap  0
        # turn on 100Mb full-duplex capability
        ndd -set /dev/hme adv_100fdx_cap   1
        # turn off 100Mb half-duplex capability
        ndd -set /dev/hme adv_100hdx_cap   0
        # turn off 10Mb full-duplex capability
        ndd -set /dev/hme adv_10fdx_cap    0
        # turn off 10Mb half-duplex capability
        ndd -set /dev/hme adv_10hdx_cap    0
		  

You may have to force the other end (e.g. switch) to use the same mode. Consult the manual for your switch. NB: Fast ethernet hubs are always 100Mb half-duplex, and ethernet hubs are always 10Mb half-duplex.

If you have more than one hme card in your system, before issuing the above ndd commands, you need to first select the specific hme card you want to set. For example, to select hme2, type: ndd -set /dev/hme instance 2 Subsequent ndd commands to /dev/hme will only apply to hme2.

If you want to force all the hme cards on your system to a specific mode at machine boot, you can set hme driver variables in /etc/system. For example, to force all hme cards on the system to use 100Mbit FD, put the following in /etc/system:

        set hme:hme_adv_autoneg_cap=0
        set hme:hme_adv_100fdx_cap=1
        set hme:hme_adv_100hdx_cap=0
        set hme:hme_adv_10hdx_cap=0
        set hme:hme_adv_10fdx_cap=0
			


12.4) How do I find out what process is using a particular port?

Ports are held open in the same way as files are, by file handles within the process. In most states, a port will also have a handle into another process on the other side of that connection. If you need to find out which process is holding open a particular port, run lsof (ftp://ftp.cerias.purdue.edu/pub/tools/unix/sysutils/lsof) and grep for the port number.

Thanks to Stuart Whitby <swhitby at legato dot com>


12.5) I have a lot of ports in WAIT states. Why?

The state of sockets can be seen with the "netstat -a" command. When a process attempts to close an ESTABLISHED connection, the transition will show a number of WAIT states, depending on which stage of the shutdown the port is at.

When the initial FIN is sent from side a) of the connection, side a) will change to FIN_WAIT_1, side b) will change to CLOSE_WAIT, and acknowledge the FIN packet. The acknowledgement causes side a) to change to FIN_WAIT_2. A socket will rarely be in FIN_WAIT_1 for more than a couple of seconds unless there is a problem with communications. In this state, data may still be sent from side b) to side a), but not vice versa. When side b) receives a close from the associated application, or the FIN_WAIT_2_FLUSH_INTERVAL is reached without data being sent, it will send a FIN and change to LAST_ACK. Side a) moves to TIME_WAIT upon receiving this FIN and acknowledges the packet, causing any references to this connection on side b) to disappear. The socket in TIME_WAIT will remain for twice the maximum segment lifetime (normally a total of four minutes) before dropping, in case dropped data packets are resent and misinterpreted by a new application on this port.

Thanks to Stuart Whitby <swhitby at legato dot com>


13. Electronic Mail
13.1) Where can I get a POP or IMAP server for my sun?

The PINE email package comes with both a POP and an IMAP server. PINE can be found at http://www.washington.edu/imap. An old, unmaintained Berkeley popd can be found at ftp://ftp.cc.berkeley.edu/pub/pop (not recommended), and Casper Dik's enhanced version of this for Solaris is found at ftp://ftp.fwi.uva.nl/pub/solaris/. A POP server can also be found as part of the Eudora ftp repository, at ftp://ftp.qualcomm.com/quest/unix/servers. A faster alternative is the CMU Cyrus IMAP server, which changes the mailbox format to something that is more efficient. It can be found at ftp://ftp.andrew.cmu.edu/pub/cyrus-mail. The Courier IMAP daemon also takes a similar approach; it's available at http://www.courier-mta.org/imap. Finally, Dovecot takes an intermediate approach by using the standard mailbox format but adding some autogenerated index files; Dovecot is available at http://dovecot.org.

If a commercial package is desired, there are many, including Sun's Internet Mail Server. See http://www.sun.com


14. Printing
14.1) How do I get started with LP-style printing in Solaris?

Printing is configured using the "lpadmin" interface, which is extensively documented. For a general overview, however, start with the basic principles of Solaris printing, documented at http://developers.sun.com/solaris/articles/basicprinting.html, and the Solaris printing FAQ, at http://www.freelab.net/unix/sun/solarisfaq/printfaq.html. More information about printing in Solaris is available at http://www.opensolaris.org/os/community/printing/history.


14.2) How do I configure a non-postscript printer for postscript?

Use the Printer Compatibility Database at http://www.linuxprinting.org (http://www.linuxprinting.org/database.html) to find out if a ghostscript driver is available for your non-PS printer. Then you can use ghostscript to translate postscript to something the printer can understand. There are various "any2ps" scripts and packages around (apsfilter, cups, foomatic, magicfilter). Ghostscript and foomatic are bundled in Solaris 10.

Apsfilter in particular is one of the most flexible filters available: the most recent version can be found at http://www.apsfilter.org. For Solaris 2.x or later, you will need to add a BSD-style printing package such as LPRng (http://www.lprng/org): the system-V-style "lp" printing package that comes with Solaris will not easily work with apsfilter. Thanks to Andreas Klemm <andreas at apsfilter dot org> for this information.

A much older version of APSfilter was posted to comp.sources.misc as part of volume 42, and is available from a comp.sources.misc archive site (eg. ftp://ftp.uu.net/usenet/comp.sources.misc/volume42/apsfilter). If you are using Solaris, follow Alexander V. Panasyuk's instructions in http://cfauvcs5.harvard.edu/SetGSprinter4Solaris.html


15. Misc System Administration
15.1) I've forgotten the root password; how can I recover?

You need to have access to the machine's console.

  1. Note the root partition (e.g. /dev/sd0a or /dev/dsk/c0t3d0s0)
  2. Hit STOP-A or L1-A (or, on an ASCII terminal or emulator, send a <BREAK>) to halt the operating system, if it's running.
  3. Boot single-user from CD-ROM (boot cdrom -s) or network install/jumpstart server (boot net -s) (NB: if it asks you for a prom password, see below.)
  4. Mount the root partition (e.g. /dev/dsk/c0t3d0s0) on "/a". "/a" is an empty mount point that exists at this stage of the installation procedure. (mount /dev/dsk/c0t3d0s0 /a)
  5. Set your terminal type so you can use a full-screen editor, e.g. vi. (you can skip this step if you know how to use "ex" or "vi" from open mode). If you're on a sun console, type "TERM=sun; export TERM"; if you're using an ascii terminal (or terminal emulator on a PC) for your console, set TERM to the terminal type (e.g. TERM=vt100; export TERM).
  6. Edit the passwd file (/a/etc/passwd for SunOS 4.x, /a/etc/passwd.adjunct for SunOS 4.x with shadow passwords/C2 security), /a/etc/shadow for Solaris 2.x and remove the encrypted password entry for root
  7. cd to /; Type "umount /a"
  8. reboot as normal in single-user mode ("boot -s"). The root account will not have a password. Give it a new one using the passwd command.

Thanks to Stefan Voss <s dot voss at terradata dot de>

PROM passwords:

Naturally, you may not want anyone with physical access to the machine to be able to do the above to erase the root password. Suns have a security password mechanism in the PROM which can be set (this is turned off by default). The man page for the eeprom command describes this feature.

If security-mode is set to "command", the machine only be booted without the prom password from the default device (i.e. booting from CD-ROM or install server will require the prom password). Changing the root password in this case requires moving the default device (e.g. the boot disk) to a different SCSI target (or equivalent), and replacing it with a similarly bootable device for which the root password is known. If security-mode is set to full, the machine cannot be booted without the prom password, even from the default device; defeating this requires replacing the NVRAM on the motherboard. "Full" security has its drawbacks -- if, during normal operations, the machine is power-cycled (e.g. by a power outage) or halted (e.g. by STOP-A), it cannot reboot without the intervention of someone who knows the prom password.


15.2) 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 <jdd@cs.toronto.edu> */
     
    #include <stdio.h>
    #include <sys/types.h>
    #include <sys/ioctl.h>
    #include <sys/fcntl.h>
    #ifdef FILENAME_MAX
    #include <sys/kbd.h>
    #include <sys/kbio.h>
    #else /* !FILENAME_MAX */
    #include <sundev/kbd.h>
    #include <sundev/kbio.h>
    #endif /* !FILENAME_MAX */
     
    #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");
    }

Stefan Voss <s dot voss at terradata dot de> points out that in Solaris 2.6 or later, you can type "kbd -a enable|disable" or put "KEYBOARD_ABORT=enable|disable" in /etc/default/kbd.

As of Solaris 2.6 with patch 105924-10 installed, Solaris 7 with patch 107589-02 installed, or Solaris 8, you can also set the abort sequence to the Alternate Break character sequence ("<Return> ~ <CTRL-B>", with at least half a second between characters, and at most 5 seconds for the whole string) with the command "kbd -a alternate", or by putting "KEYBOARD_ABORT=alternate" into /etc/default/kbd.

Alternatively, you can disable all break signals by putting the line:

set abort_enable=0

into /etc/system, and rebooting.

Thanks to Dan Astoorian <djast at cs dot toronto dot edu>


15.3) How do I manage services in Solaris 10 and later? Do I still make links in /etc/rc*.d?

In Solaris 10 build s10_64 and later, Sun introduced the service management facility (smf) which makes /etc/init.d and /etc/rc?.d scripts "legacy". Management of the services is now done through svc* commands.

The legacy init.d scripts are now specified as running in run-level "milestone". From the man pages:

Each service name is now named with a Fault Management Resource Identifier (FMRI) with the scheme "svc:". For example, the sendmail service would have be "svc:/network/smtp:sendmail".

You can also abbreviate the FMRI by using the instance name (e.g. sendmail) or using the last parts of the service name like:

To check all services in the machine, run "svcs -a". From the list, you can enable and disable services through "svcadm".

To disable, use "svcadm disable [options] <FMRI>". For example: svcadm disable svc:/network/smtp:sendmail or svcadm disable sendmail

One useful option is "-t", to temporarily disable the service until reboot.

To enable, use "svcadm enable [options] <FMRI>". For example: svcadm enable svc:/network/smtp:sendmail

Useful options are "-r" to enable the service including all dependencies, and "-t" to temporarily disable the service until reboot.

Dependencies and other information on the service can be invoked via "svcs -l <FMRI>"

As an alternative to using "ps" to check service processes, you can now use "svcs -p <FMRI>" to list the processes associated with the service.

For further information, check the man pages on smf, svcs, svcadm and svcfg.

Thanks to Neil Quiogue <neil at quiogue dot com>