Newsgroups: comp.unix.sco.announce,comp.answers,news.answers
Path: senator-bedfellow.mit.edu!bloom-beacon.mit.edu!newsfeed.utk.edu!news-hog.berkeley.edu!ucberkeley!newsfeed.stanford.edu!arclight.uoregon.edu!hammer.uoregon.edu!logbridge.uoregon.edu!news.umass.edu!world!ftp://ftp.aplawrence.com/pub
From: [email protected] (Tony Lawrence)
Subject: comp.unix.sco Technical FAQ (1/5)
Archive-Name: Questions and Answers Common to Unix, Xenix and ODT - SCO Technical FAQ 1/5
Message-ID: <[email protected]>
Posting-Frequency: Monthly (mid month)
Approved: [email protected]
Date: Tue, 19 Sep 2000 19:22:45 GMT
Last-Modified: Sep 19


  Questions and Answers Common to Unix, Xenix and ODT - SCO Technical FAQ 1/5
Organization: http://www.aplawrence.com
Keywords: FAQ SCO Xenix Unix Frequently Asked Questions
Followup-To: [email protected]

Lines: 1773
Xref: senator-bedfellow.mit.edu comp.unix.sco.announce:2443 comp.answers:42376 news.answers:192226

  FAQ Starting Page http://aplawrence.com/SCOFAQ/index.html

  These FAQS were developed and maintained for years by
  [email protected] (Stephen M. Dunn). Steve no longer has the time to
  maintain them, and has asked me to take them over. Please remember the
  debt all of us owe to Steve for his efforts- I myself spent many hours
  learning from these very documents, and I'm sure many of us can say
  similar things.

  Because Steve has not been able to maintain these for a while now,
  some of the information herein is outdated. I am working to correct
  that, but it's a lot to catch up on, so if you spot something, please
  let me know. For the moment, I'm just marking some of it as probably
  being useless; as I have time, I'll check further to be certain before
  I remove anything.

  Suggestion: Use my Search to find what you are looking for.

How do I stop banners from printing?

  You need to edit the file /etc/default/lpd. You need one of the
  following lines:

  For Xenix: BANNERS=0
  For Unix: BANNERS=nobanner

  Note that there are some Unix printer interface scripts which do not
  use /etc/default/lpd, and you must use an option to these to disable
  banners. Also, some Unix printer interface scripts expect the Xenix
  syntax above. Aren't standards wonderful? Should you encounter one of
  these, if you're reasonably adept at shell scripts, you might want to
  cut and paste the section that reads /etc/default/lpd from a script
  that works properly. Of course, be sure you make note of your changes
  so that you can redo them the next time an upgrade replaces your
  printer drivers.

  See also http://aplawrence.com/Unixart/printing.html

  [Table of Contents]
    _________________________________________________________________

Are there any screen savers?

  Unix (and Xenix 2.3.4) have a built-in screen saver for VGA only. You
  have to reconfigure the kernel for this to work. It doesn't work with
  all hardware, but try it first. Also, it has been reported that VP/ix
  may not be compatible with this screen saver. To enable the
  screensaver, set the kernel variable TBLNK to the number of seconds of
  inactivity which should trigger the screensaver, relink, and reboot.

  Unixware users may use "vtblank" to dynamically set and adjust the
  screen saver time

  Roberto Zini:

  If you're operating under X-windows you can use the PD program
  xscreensaver; it comes with dozens of very nice screen savers you can
  install on your system. You can find the 'xscreensaver' program on the
  Skunkware CD-ROM; alternatively you can use the xlockmore program,
  also available on the same CD-ROM.

  [Table of Contents]
    _________________________________________________________________

Is tar/cpio a good backup program?

  tar is not; cpio is, to some degree. tar will not back up things like
  device nodes (and, prior to OpenServer Release 5, it will also not
  back up empty directories), so a tar backup will not catch anything in
  /dev, for example, and you will find your device nodes missing when
  you do your restore. cpio will catch these things.

  Neither one is very good at verification. You can dd the tape to make
  sure you can read the whole thing, and run it through tar or cpio ...
  but they'll just check the file headers to make sure they make some
  sense. If you need better verification, try one of the products listed
  below. Most third-party backup programs do many things better than the
  standard utilities included with the OS, including things like making
  much better emergency recovery diskettes, byte-for-byte verification
  (if you want), compression, more options for things like
  nondestructive restore, etc. Many of us swear by them.

  gnu tar is a significantly better backup utility, and is available on
  many archive sites listed in the Administrative FAQ. There is also a
  shareware tar/cpio archive checker called tapechk, written by Nigel
  Horne <[email protected]>. A demonstration version is available
  at ftp://garbo.uwasa.fi/unix/util/tapechk.sco.tar.Z

  Commercial programs provide better solutions. The following vendors
  offer backup programs for SCO, Linux and many other platforms:

    * CTAR
    * Lone Tar
    * Microlite Edge

  Also see http://aplawrence.com/Reviews/supertars.html

  [Table of Contents]
    _________________________________________________________________

How do I compress my backups?

  Well, you could just run the output of tar, cpio, or whatever through
  compress, but if even one bit of your tape or diskette goes bad,
  you'll lose the rest of the backup. Not recommended at all, unless of
  course you don't actually care if your backups work - but if you
  didn't care, you wouldn't be doing any, right?

  A better solution would be a third-party product. The next answer
  lists a few ... if you produce, market, or use one that's not listed
  below but which you feel should be, please send me the information.

  [Table of Contents]
    _________________________________________________________________

What are some third-party backup/recovery products?

  There are a couple of categories here - products which are mostly
  aimed at one or a small number of Unix machines, and those which are
  aimed at enterprise-wide, multiplatform backup. The following two
  lists are NOT meant to be all-inclusive, but merely a sample of some
  of the better-known products.

  First, the ones aimed at one or a few Unix machines:
    * BackupEDGE (Microlite Corp., 2315 Mill Street, Aliquippa, PA
      15001-2228; [email protected]; (888) BKP-EDGE or (724) 375-6711;
      http://www.microlite.com/)
    * BRU (Enhanced Software Technologies Inc., 5016 S. Ash Avenue Suite
      109, Tempe, AZ 85282; [email protected]; (800) 998-8649 or (602)
      820-0042; http://www.estinc.com/)
    * Lone-Tar (Lone Star Software Inc., 13987 W. Annapolis Court, Mt.
      Airy, MD 21771; [email protected]; (301) 829-1622 or (800)
      LONE-TAR; http://www.cactus.com/)
    * Ctar (Unitrends Software Corp., 1601 Oak Street, Suite 201, Myrtle
      Beach, SC 29677; [email protected]; (800) 648-2827 or (803)
      626-2878; http://www.unitrends.com/)

  These products tend to be fast and robust, generally offer data
  compression, and tend to be able to handle errors on the backup media.
  Many also include, or can optionally be purchased with, utilities to
  create automated emergency recovery diskettes which are much
  friendlier and easier to use than the ones you can produce with
  standard SCO utilities.

  Now, a few for those with more ambitious backup plans ... this section
  is under construction and hopefully I'll have some more contact info
  shortly.

    * The Backup Professional (Lone Star Software Inc., 13987 W.
      Annapolis Court, Mt. Airy, MD 21771; [email protected]; (301)
      829-1622 or (800) LONE-TAR; http://www.cactus.com/bp.html)
    * ARCserve/Open (The Santa Cruz Operation Inc., 400 Encinal Street,
      Santa Cruz, CA 95061; [email protected]; (800) SCO-UNIX or (408)
      425-7222; http://www.sco.com/)
    * Legato (415) 812-6000

  A variety of backup products was reviewed in the September 1997 issue
  of SCO World Magazine.

  [Table of Contents]
    _________________________________________________________________

I don't like being restricted to 14 character filenames

  If you're running Xenix, or a version of Unix prior to 3.2v4, I'm
  afraid you're stuck. Unix 3.2v4, however, includes long filename
  support on all EAFS filesystems. OSR5 adds two new filesystems, HTFS
  and DTFS, which also support long filenames. Unixware 7 also supports
  long file names. More information on long filenames can be found in
  the section dealing with Unix.

  [Table of Contents]
    _________________________________________________________________

How do I get a copy of adb?

  If you have the Development System, you already have /bin/adb. If not,
  you may need to grab a copy from your distribution, or it may already
  have been installed, depending on your OS and version. It could be
  called /bin/adb (older Xenix) or /etc/_fst (Unix and recent versions
  of Xenix). If you don't have either of these, look through the files
  in /etc/perms for them; in Xenix 2.3.4, you will find one of each,
  which will be in fact the exact same file but on two different
  diskettes. If the volume on which the file you want is mountable (you
  can check this in the manual, or use the dtype command), then mount it
  and copy the file off. Otherwise, use tar to extract the file, keeping
  in mind that the filenames on your diskettes are all written with
  relative paths (i.e. ./bin/adb, not /bin/adb). Note that if you look
  in the Unix documentation, it may well tell you that you need
  /bin/adb, when in fact it's called /etc/_fst.

  [Table of Contents]
    _________________________________________________________________

I can't find crypt

  Most (all?) of SCO's release notes state that due to American
  government restrictions aimed at trying to prevent unfriendly nations
  from having access to data encryption technology, SCO does not ship
  crypt with their products. If you live in the States and would like
  crypt(C) and the crypt(S) libraries, contact SCO support. This is also
  worth trying in Canada, as the particular regulation in question
  permits export of such technology to Canada; however, I don't know if
  SCO will honour such requests. There is also an international version
  of crypt available from the usual places as lng225b.

  Recently, some of the cryptographic restrictions have changed- for the
  better, we hope, though plenty of stupidity still remains.

  [Table of Contents]
    _________________________________________________________________

What do I need to compile programs?

  If you have free OpenServer, you already have a license to install the
  development system; the Web page on which you license free OpenServer
  gave you several keys and codes, including one to license the
  development system.

  Xenix, Unix and ODT do not ship with program development tools. These
  are unbundled into packages known as Development Systems. The
  rationale behind this is that many users of SCO systems are using
  off-the-shelf software and never need to write a line of C code. If
  everyone was forced to buy the development system whether they needed
  it or not, some of the customers might get upset. There is a periodic
  flame war about this; this is not the place to discuss it.

  You can buy the Development System for any of the three environments
  listed above as a separate package including the compiler, header
  files, libraries, lex, yacc, linker, and other tools. Additionally,
  development systems are available for other packages such as TCP/IP;
  these development systems add the include files, libraries, etc.
  required to program for the package in question. The ODT Dev Sys
  includes the development tools for all of the other goodies (e.g.
  TCP/IP, X) that are bundled into ODT. Since OSR5 generally bundles the
  various runtime packages (e.g. TCP/IP) with the OS, it also bundles
  the same development packages, so there are not the same development
  system add-ons in OSR5 that there were in previous versions.

  The "lxrun" package allows you to run many Linux programs on OSR5 and
  Unixware; you could always compile on a Linux machine.

  There are versions of gcc (the Gnu C Compiler) freely available for
  SCO systems. On older SCO operating systems, however, you will
  probably need the development system, as the header and library files
  you need are part of it and not part of the operating system itself.
  This problem has been alleviated in OpenServer Release 5, as the
  headers and libraries are now shipped as part of the base operating
  system and are available even if you have not purchased the
  development system.

  gcc sources and binaries for OpenServer Release 5 only are on the free
  Skunkware family of CD-ROMs; for more info, see
  http://www.sco.com/skunkware/faq.html or read the section below
  entitled "What is Skunkware?"

  gcc sources and binaries are also available on Robert Lipe's home
  page: http://www.dgii.com/people/robertl/ or
  ftp://ftp.dgii.com/users/robertl/scods/ These are mirrored by SCO at
  http://www.sco.com/skunkware/gds/ and ftp://ftp.sco.com/skunkware/gds/
  You can also look at a different version at
  ftp://ftp.sco.com/skunkware/osr5/devtools/gcc/ and
  http://www.sco.com/skunkware/osr5/devtools/gcc/

  For those who want to find this based on a keyword search: programming
  programmer library libraries developer source

  [Table of Contents]
    _________________________________________________________________

What does the NCALL kernel parameter affect?

  NCALL controls the size of the kernel callout table. The kernel has
  the ability to schedule some action at a given real time; this is
  often used by device drivers and by the nap(S) system call. The size
  of this table is set by NCALL. If the system message "timeout table
  overflow" appears on your console, NCALL should be increased.

  Increasing NCALL is not expensive in terms of memory or CPU overhead,
  as the structure is small (16 bytes per entry) and stored sorted, so
  it is best to be generous with these entries.

  [Table of Contents]
    _________________________________________________________________

How do I reset the root password if I forget it? (part 1)

  This procedure will work for Xenix, and for Unix as well if you are
  using a very relaxed security level (one which stores encrypted
  passwords directly in /etc/passwd). If you're using a higher security
  level on Unix, look for part 2 below.

  Boot the system from your emergency boot diskettes (if you didn't make
  these and keep them up to date, shame on you, but you should be able
  to use N1/N2 instead, and see the entry on crashing out of these
  diskettes below). Next, mount /dev/hd0root /mnt; this will mount your
  hard drive's root filesystem on /mnt. Edit /mnt/etc/passwd. The first
  line will be your root line, such as

  root:encryptedpasswordgoeshere:0:0:God,Everywhere:/:/bin/sh

  Edit out the encrypted password (don't touch anything else!) so that
  the line reads something like

  root::0:0:God,Everywhere:/:/bin/sh

  Save the file and shut down. Reboot from the hard drive. Your root
  password has now been removed, and you can reset it normally.

  Also see http://aplawrence.com/Boot/defs.html#bootfloppy.

  [Table of Contents]
    _________________________________________________________________

How do I reset the root password if I forget it? (part 2)

  This is another procedure involving manually editing files, and is
  specific to SCO Unix 3.2v4.0 through 3.2v4.2. The location of the
  encrypted passwords depends on the security settings. Look in
  /etc/passwd, /etc/shadow, and /tcb/files/auth/r/root; one or more of
  these will be used depending on how you have security configured.
  Follow the procedure in part 1 above; instead of editing /etc/passwd,
  edit the appropriate file(s) from the above list, and delete the
  encrypted password field. Note that formatting is critical; while you
  can delete the contents of the field, you must not remove separators,
  and making seemingly minor errors such as leaving blank lines can
  cause problems. Save, shut down, and reboot. C2 security will complain
  about what you've done; to make it happy, run /etc/fixmog. You may
  also want to run /tcb/bin/integrity and /etc/tcbck.

  [Table of Contents]
    _________________________________________________________________

How do I reset the root password if I forget it? (part 3)

  This procedure will work for any variant of SCO Xenix or Unix. As
  above, boot from your emergency boot diskettes and mount /dev/hd0root
  /mnt to gain access to your hard drive's root filesystem. Now, run
  /mnt/bin/chroot /mnt "/mnt/bin/passwd root" (check the chroot man page
  for more info on how it works). As before, shut down and reboot. It
  has been reported that on 3.2v4.2 (and possibly others), this must be
  done in two steps: /mnt/bin/chroot /mnt "/bin/su root", followed by
  passwd. If it doesn't work with the quotes, try it without.

  [Table of Contents]
    _________________________________________________________________

How do I crash out of the install script?

  On OpenServer Release 5, boot from the boot diskette, and at the Boot:
  prompt, type tools. This is not an undocumented option to the boot
  command, but rather a special line in /etc/default/boot on the
  installation diskette - so you can't use it from anywhere but your
  installation boot diskette.

  For older SCO Unix/Xenix/ODT releases, wait until the question early
  in the process that asks you what your keyboard type is. For
  character-mode installations, this is a regular textual prompt; for
  ODT, it's a box in a curses-style installation program. How to break
  out at this point depends on the OS. Under Xenix, press Del. Under
  Unix, type shell and press enter. Under ODT, press Control-A.

  Roberto Zini:

  See also http://www.sco.com/cgi-bin/ssl_reference?110414

  How can I generate and save a debug logfile for an SCO OpenServer 5
  installation or upgrade (not strictly related but worth reading :-)

  [Table of Contents]
    _________________________________________________________________

Why can't fsck find my lost+found directory?

  Because you don't have one. It's possible someone deleted it, but the
  more likely cause is that you didn't use mkdev fs to create it.

  One of the things that fsck looks for is inodes which are marked as
  used (i.e. not in the free list) but do not have a directory entry
  pointing to them. fsck will ask if you wish to reconnect these; if you
  say yes, it will try to create a file entry in the /lost+found
  directory on that filesystem. If there is no free space in
  /lost+found, it is not safe to expand it because the rest of the
  filesystem may still be corrupt; for information on this one, see
  below. If there is not /lost+found directory, fsck will tell you that
  it can't reconnect the file and the data in that file will be lost.

  [Table of Contents]
    _________________________________________________________________

I want more space in my lost+found directory

  By default, the mkdev fs script creates 62 empty entries in
  lost+found. If you'd like to make more, use a variant of the following
  script:

for a in 0 1 2 3 4 5 6 7 8 9
do
 for b in 0 1 2 3 4 5 6 7 8 9
 do
   > /lost+found/dummy$a$b
 done
done
rm -f /lost+found/*

  The above will create 100 entries. Season to taste.

  [Table of Contents]
    _________________________________________________________________

How do I find out serial numbers of my various components?

  For the OS itself, you can use uname. For Unix, use uname -X; it will
  print (among other items) the serial number. For Xenix (at least
  2.3.3, and probably other releases), uname -u will print the numerical
  portion (e.g. if your serial number is sco012345, it will print
  12345).

  Starting in Unix 3.2v4.2/ODT 3.0, SCO added /etc/getserno. To find out
  the serial number of a package, first find out what files are
  serialized in that package using grep ser= /etc/perms/* (or
  /etc/perms/packagename if you know it). Then, run /etc/getserno
  filename, where filename is the name of one of the files that is
  serialized during installation. Note that not all files listed may
  actually contain a textual representation of the serial number (for
  example, none of the binaries in the Unix dev sys do).

  As a special case, the serial number of the OS itself can be found
  simply by watching the kernel ID it displays at boot time (or look
  through /usr/adm/messages for it).

  Roberto Zini:

  If one's interested in finding out the original activation key issued
  during the OpenServer 5 installation (eg, widely used here before
  submitting a commercial upgrade order), one could retrieve it by using
  the following command:

grep IQM_ACTIVATION_KEY /usr/adm/ISL/iqm_file

  Alternatively, try with the following:
grep IQM_ACTIVATION_KEY /opt/softmgmt/profiles/standard/SCO/Unix/*/iqm_file

  where '*' is the actual OS5 version (eg, 5.0.5Eb)

  Under SCO Unix 3.2v4.2:

grep IQM_ACTIVATION_KEY /install/iqm_file

  Under SCO UnixWare 7:

grep ActKey /vad/adm/isl/ifile

  [Table of Contents]
    _________________________________________________________________

How do I solve an "arglist too long"?

  Wildcard expansion (globbing) is performed by the shell. There is a
  limit of 5120 bytes (5k) for the environment and command line
  arguments put together, in all versions of SCO Xenix and SCO Unix
  versions prior to OpenServer 5; more on OSR5 later. See also TA
  480563.

  This is particularly likely to be a problem under X, as it has a habit
  of using a lot of environment space. It is also a problem when running
  a command such as ls *.c in a directory with a large number of files
  which match the filespec.

  The general solution is to construct your command in such a way that
  it does not have to include all of the filenames on the command line.
  You can use the echo command, which is built into the shells and
  therefore is not subject to the 5k limit. For example, rather than rm
  V*, you might try echo V* | xargs rm. A similar, but somewhat more
  complex solution, might involve using the ls command to generate a
  list of filenames, and then using a command such as grep to filter
  them; ls | grep '^V' | xargs rm will perform the same task as the
  above example.

  You may also find the find command to be useful in this; however, it
  works recursively so it may not be appropriate in a directory with
  subdirectories. Please consult the man pages for each of these
  commands to identify any unexpected side effects they may cause.

  Another alternative, in cases where the environment is unnecessarily
  large, is to reduce its size. If you have some environment variables
  that you never use (be careful with this, as the system or some
  commands may use things you don't realize), you can permanently remove
  them in your .profile (or .login for C Shell users). You could also
  temporarily remove some manually. To run a subshell without any of the
  environment being passed to it, try running env - sh -c 'command'

  OpenServer Release 5 makes two changes to cure this problem. The
  default limit has been increased substantially (to 100k), which should
  by itself fix almost all instances of "arglist too long". As well, it
  is now a tunable kernel parameter, so if the default isn't adequate,
  you can adjust it. One exception: /bin/csh still has a hard-coded
  limit to the length of a line. If you are using csh, you may wish to
  replace it with tcsh (discussed below).

  [Table of Contents]
    _________________________________________________________________

What versions/configurations am I using?

  WARNING: Many of these commands have different options under different
  versions of different operating systems, and not all of them are
  available under all versions of Unix, Xenix, and ODT. I've tried to
  note such differences but I'm sure many have escaped my attention.
  Take the following with a grain of salt. Unless noted otherwise, these
  entries should be applicable to most/all systems.

    * Kernel Configuration: configure -x | more (for Xenix, run this
      from /usr/sys/conf; for Unix, run it from /etc/conf/cf.d). This
      lists the current and default values for tunable kernel
      parameters. Under Unix, /etc/sysdef prints information including
      BTLDs (Boot Time Loadable Drivers).
    * Software Installed: /usr/bin/swconfig -p and /usr/bin/swconfig -a
      (both for Unix) print various information on installed software.
      You can look at the permissions lists in /etc/perms/* but you
      cannot tell from here which parts are installed; use custom for
      that. Use /usr/bin/displaypkg to display software installed using
      installpkg. Note that swconfig is not a terribly accurate guide.
    * Hardware configuration: /etc/hwconfig -h shows most of the
      installed hardware but not all of it; generally, things like
      multiport cards don't show up here. Use /etc/hwconfig -hc on Unix
      3.2v4.x or later and on Xenix 2.3.4
    * System name, version, etc.: uname -X (Unix and Xenix 2.3.4) or
      uname -a (Xenix 2.3.3 and earlier)
    * Printer configuration: lpstat -t

  See also http://www.cruzio.com/~jeffl/sco/versions.txt

  [Table of Contents]
    _________________________________________________________________

I have a bad block on my hard drive

  You will see error messages going by giving you the sector, cylinder,
  head, and other nifty information regarding the error. If you can jot
  this down, it makes it much easier to find the bad block without
  having to scan the entire drive for it.

  Shut the system down cleanly (using shutdown). If the error is on the
  root filesystem, boot from emergency floppies; otherwise, you can boot
  from the hard drive and enter single-user mode. The rule here is that
  the filesystem on which the error is located must not be mounted while
  you try to fix it.

  If you have a SCSI hard drive, use scsibadblk. It ships with Unix
  3.2v4.1 and 3.2v4.2, and ODT 2.0 and 3.0. For Unix 3.2v4.0, install
  the 4.1 maintenance supplement or upgrade to 4.2 (not a bad idea
  anyway). For Unix 3.2.2 or ODT 1.1, install unx347a (no longer
  available). For Xenix 2.3.4, install xnx348a. For OSR5, scsibadblk was
  rolled into badtrk, so just use badtrk. For older versions of Xenix or
  Unix, you're out of luck. One other note about SCSI drives; many of
  them will automatically remap bad blocks, so when you go to run
  scsibadblk you will not actually find any bad blocks - even if you run
  a thorough scan of the area where the bad block was reported. This
  capability is called AWR/ARR. If you see a menu option called
  something like "Modify target parameters", you can enable and disable
  AWR and ARR.

  If you're using a standard drive type (MFM, RLL, ATA, ESDI), use
  /etc/badtrk. I'd recommend doing a thorough, nondestructive scan of
  the area where the error message said there was a bad block.

  Before doing this stuff, have a look at the manual for your specific
  operating system to see any notes or recommendations made by SCO. If
  you're not careful here, you might make things worse than they already
  are (such as by doing a destructive scan, which will wipe out all data
  on the area you scan).

  [Table of Contents]
    _________________________________________________________________

My system is slow

  First things first - make sure that somebody didn't accidentally turn
  the Turbo switch off. Don't laugh - I have a client who regularly
  manages this one. At some sites, it may be wise to disconnect this
  switch entirely. It might also be wise to run the system's CMOS setup
  program and ensure that primary and secondary cache is turned on,
  unless you know for a fact that there's something in your system that
  won't work properly that way. Turning on BIOS shadowing will generally
  only speed things up at boot time; with the exception of vbiosd (used
  to call real-mode video BIOS routines for video mode switching on some
  video cards in SCO's X11R5 implementation), the BIOS is not used after
  this point. If you gain the use of extra RAM by disabling BIOS
  shadowing, you should certainly do so; even if you don't, there may be
  cases where BIOS shadowing may lead to weird problems (I've even seen
  a host adapter which wouldn't work at all if its BIOS was shadowed or
  cached, for example).

  Under both Unix and Xenix, you can use vmstat to give you an overview
  of system performance. One problem is that it won't show you what
  percent of the system's time was spent waiting on I/O devices, and
  what percent was spent idle; these are both lumped together as idle
  time. vmstat can be helpful in diagnosing excessive swapping, and in
  finding if your system is CPU-bound.

  Unix also offers sar, which is far more advanced than vmstat. It
  reports on a wide range of system statistics including CPU utilization
  (system, user, idle, waiting for I/O), memory use, disk cache
  effectiveness, swapping/paging, and things you've never even thought
  of. Note that under MPX, it may not be reliable; check your MPX
  release notes for info (and for information on the mpstat and mpsar
  programs). One third-party program which may be useful in conjunction
  with sar is sarcheck (Aurora Software Inc., P. O. Box 1033, Plaistow
  NH 03865, (603) 382-4200, http://www.sarcheck.com/,
  [email protected]), which translates sar's results into
  English to identify system performance bottlenecks and suggest
  possible resolutions for these problems. sarcheck also works on
  multi-processor systems.

  There are some other utilities you may wish to use. Some freely-
  available ones include u386mon, bcw, and cpuhog/iohog/memhog, all of
  which are available in various TLSes (tls518 for OSR5, tls018d for
  older versions). u386mon is a general performance monitoring utility
  which watches about as many different things as sar (but presents the
  information in a full-screen display format); bcw is the Buffer Cache
  Watch, which can help you see how well your cache buffers are tuned
  for your system's actual needs; the hog programs show you processes
  which are hogging those respective resources.

  Another commercial product which may be of use is Olympus Tuneup
  (Olympus Software, (408) 426-7582, [email protected]), which will
  monitor how your system is making use of tunable kernel resources and
  can perform tuning for you.

  Multiuser/multitasking/etc. operating systems love extra memory. Xenix
  will use up to 16 MB; Unix will use much more (how much depends on
  what version; check your release notes). There are several ways that
  extra memory is used; here are three of the most important. First,
  disk buffers; the system uses these for disk cache, and in general,
  the more, the better. Second, to avoid swapping; while a virtual
  memory system allows you to access more memory than you actually have,
  doing so involves the hard drive, which is several orders of magnitude
  slower than memory. Third, the system keeps recently-used programs in
  memory; if you access one again, it doesn't have to be reloaded from
  disk. There are tradeoffs between #1 and #2+#3; the more memory you
  have, the more generously each can be configured. Note that adding
  more memory will not cure CPU-bound processes, and will only cure
  I/O-bound processes if it can be used effectively as a disk cache
  (often it can, but not always).

  Roberto Zini: I seem to remember that some "old" systems could start
  crawling after adding more RAM; if I remember correctly, that was due
  to the fact the CPU could not cope with the additional RAM since it
  had too little internal cache. I'm not an hardware expert so the above
  could be plain wrong nowadays; could you confirm that ?

  Yes. CPU cache is still important- Tony Lawrence

  Also, double check the "netstat -m" output; we're currently fighting
  against a problem under SCO OpenServer 5.0.5 (fully patched) which
  causes it to crawl when STREAMS resources get low. If you notice
  non-zero values under the "fail" column, it's time to add more STREAMS
  buffer by making use of the configure utility under /etc/conf/cf.d
  (NSTRPAGES is the parameter to boost).

  [Table of Contents]
    _________________________________________________________________

Why did my region table overflow?

  Each process generally consists of several (usually, but not always,
  three) regions - typically code, data, and stack. Two copies of the
  same program running at the same time will often share code, reducing
  the number of regions required; however, there's nothing to stop a
  program from using more than three regions, either.

  There is a tunable kernel parameter, NREGION, which specifies the
  maximum number of regions available. This should always be set to at
  least three times the number of processes (NPROC), and if you want to
  be on the safe side, use four times NPROC. Note that in OSR5, by
  default, both NREGION and NPROC are allocated dynamically.

  [Table of Contents]
    _________________________________________________________________

How do I solve "fork failed: no more processes"?

  This is usually one of two things. There is a tunable kernel
  parameter, NPROC, which determines the maximum number of processes
  that may be running at any time. You may have exceeded this limit. The
  usual method of solving this is to increase it a fair bit and see if
  the problem goes away. If you are running on OSR5, this is unlikely to
  be the reason, as NPROC is allocated dynamically.

  There is another tunable kernel parameter, MAXUPRC, which determines
  the maximum number of processes any one user may have running at one
  time. Under Unix, for example, a large number of mail messages being
  processed at once may cause this to be exceeded by MMDF, usually
  resulting in "uux failure - pipe broke" or similar messages. Once
  again, increase it and see if the problem goes away.

  Also, have a look at the console and/or /usr/adm/messages for any
  system messages which appeared at the same time the user got this
  message. They may point to another potential reason, such as being out
  of swap space or exceeding NREGION (see the previous topic).

  [Table of Contents]
    _________________________________________________________________

How are minor device numbers assigned by mkdev hd?

  Basically, they start at 64 (the major device number is 1) and go up
  by 64 each time you run mkdev hd. Don't expect them to be in the same
  order as your SCSI IDs for the drives unless that's the order you
  added them in. Also, if you being running mkdev hd but do not complete
  the process, it will generally already have assigned the next number;
  the next time you run mkdev hd, it will add another 64 even though you
  aren't actually using the last drive you started to create. This isn't
  a problem; it just looks weird.

  [Table of Contents]
    _________________________________________________________________

I need fax software. Who makes it?

  This section is probably out of date. I know VSI-fax is still
  available, and Faximum, but Arnet is definitely gone and I'm sure a
  lot of the others are also (09/13/2000).

  There are numerous vendors in the Unix fax software market. Many of
  these make software that runs on Xenix as well as on Unix. Listed
  below, in no particular order, are company names, product names, and
  contact information for most of them. As always, I hope this is a
  reasonably complete list; inclusion or exclusion is not to be
  construed as a comment on the product or company. Also, there is a fax
  FAQ posted in comp.dcom.fax (from which this list is derived - note
  that it is out of date); you may wish to look there. Also, the
  standard "look through magazines" applies. Fax products are often
  advertised, and sometimes reviewed. The September 1995 edition of SCO
  World Magazine reviewed some fax products, for example.

    * Arnet - ArnetFAX; (615) 834-8000, [email protected]
    * Black and White Software - NXFax; (802) 496-8500, [email protected]
    * comFax - Com-M-Tex; +49 89 546130-0
    * COS - TruFax; (609) 771-6705, [email protected]
    * Faximum Software - Faximum ELS, Faximum PLUS; (604) 925-3600,
      [email protected]
    * ICSW - [product name unknown]; (800) 486-7274, (602) 998-8623
    * i link GmbH - mix fax; +49 30 216 20 48
    * Intuitive Technology - FaxLink; (409) 762-8456
    * netCS GmbH - netFAX; +49 30 787999-0
    * QUEST systems GmbH - FaxX; +49 231 914028-0, [email protected]
    * Signify Software Products - i(F)x Faxsoftware for UNIX;
      +31-(0)3480-30131, [email protected]
    * smoFax - SMO GmbH; +49 721 551971
    * UniSal System - FaxTrax; (201) 729-9221
    * V Systems - VSI-Fax; (714) 489-8778, [email protected],
      http://www.vsi.com/
    * Company Unknown - FaxFX; (708) 574-3600
    * Company Unknown - FAXSMART
    * Company Unknown - Fax*Starx; (800) 327 9859

  You might also want to look at a couple of publicly-available
  programs. Check out Hylafax at http://www.hylafax.org/ and
  ftp://ftp.hylafax.org/. ftp://sgi.com/sgi/fax/. You can find more
  information on mgetty+sendfax at
  http://wais.leo.org/~doering/mgetty/mgetty_1.html.

  Roberto Zini:

  SFax by Sicomm (http://www.sicomm.fr)

  Please notice that, despite the French web site, their products get
  localized in several languages, including English and Italian.

  [Table of Contents]
    _________________________________________________________________

How much swap space do I need?

  There are two factors to consider - how much you actually need for
  correct operation of your system, and how much you might need in case
  of a kernel panic.

  Unix and Xenix are virtual memory operating systems. If you have, say,
  16 MB of RAM and a 20 MB swap device, you have 36 MB of virtual memory
  available, of which the operating system will keep 16 MB in memory
  (whatever space it uses, plus the most recently used user memory).
  Therefore, the total of swap space plus physical RAM must equal or
  exceed the greatest amount of physical memory your system will need.

  The kernel, however, will check how much swap space is available
  whenever a program executes a system call which may require more swap
  space, such as fork() or malloc(). There must be enough free swap
  space to hold the memory which the system call will allocate, or else
  the system call will fail. This is a safety precaution which applies
  even if no swapping is required! So you will need as much swap space
  as you will have swappable memory (generally, stack and data regions).

  Under Unix, you can use the crash command to check how much swap space
  has been allocated. Once in crash, type od -d availsmem to see the
  value of availsmem. This is a kernel variable which is measured in 4k
  units (i.e. pages in the i386 memory architecture) and which says how
  much more memory can be allocated. Any request for a number of pages
  greater than the current value of availsmem will fail. See TA 482712
  for some more information on availsmem.

  Of course, in order to know how much swap space you need, you need to
  have an idea of how much total virtual memory your programs will
  require. Some need more than others. For example, if you're running
  any Java components, you may need a lot of swap space; check the
  release notes for details. X Windows generally eats a lot of memory,
  so you'll want plenty of swap space if you do much work in X. Your
  applications' documentation may give you information on how much
  swap/memory they require.

  Also see:
    * Can I add more swap space?
    * I've added more RAM, do I need more swap?

  The other consideration relates to system panics, and does not apply
  to Xenix. Should a system panic occur, the kernel will dump the
  contents of physical memory into the dump device (which is usually the
  same as the swap device but does not have to be). There is a
  net.rumour that should you have more physical memory than swap space,
  it will overwrite whatever's next to the swap device with the dump. It
  is possible to force the kernel to overwrite something with a poor
  choice of parameters on the Boot: line (e.g. explicitly giving an
  incorrect size for the swap device), but without this form of
  prompting, the kernel will not dump any more memory than it believes
  will fit into the device specified for dumps.

  One final comment - swapping is a wonderful thing, in that it allows
  you to use more memory than you actually have. However, disk is
  several orders of magnitude slower than memory, and so the more
  swapping you have, the slower your system will run. If you find your
  system is swapping and that is having a noticeable effect on
  performance, you should consider adding memory if your hardware and OS
  support more memory than you have.

  [Table of Contents]
    _________________________________________________________________

Can I add more swap space?

  Yes, with caveats. The first one does not apply to Xenix. If you have
  space in your Unix partition which is not allocated to any device
  (i.e. is not being used by a filesystem, your swap device, etc.), use
  /etc/swap to add this to your system's available swap space. Note that
  free space within a filesystem cannot be used in this manner. Also,
  this setting only works until the system is shutdown, so if you want
  it to be done permanently, put it in a file in /etc/rc2.d so it gets
  run whenever the system goes multiuser. If you have two hard drives,
  you can split swap space between them, which may improve swapping
  performance.

  On OpenServer Release 5, you can also add swap space in the form of a
  file on one of your filesystems. As with the previous section, you use
  the swap command, and the added swap space does not become permanent
  unless you add it to a startup file. I have no benchmarks on this, but
  I'd expect that swapping to a file is at least a bit slower than
  swapping to a dedicated swap division.

  The second approach will work on any SCO operating system, but will
  require downtime and probably a backup/restore. You can bring the
  system up from emergency boot diskettes (or from the distribution
  media; instructions are elsewhere in the FAQ) and adjust your drive's
  division table. However, in order to adjust the size of a filesystem
  or swap device, you must delete it and recreate it, so if you need to
  take space from a filesystem to add it to swap, you will need to
  backup that filesystem and restore it later.

  Also see:
    * How much swap space do I need?
    * I've added more RAM, do I need more swap?

  [Table of Contents]
    _________________________________________________________________

Do haltsys and reboot do a sync()?

  Yes. haltsys and reboot are both the same file. In some versions, they
  are a binary, but rest assured that they do sync(). In other versions,
  they are a shell script and you can look at them to determine that
  they do call /bin/sync.

  If it's at all possible to use shutdown to shut the system down,
  rather than using haltsys or reboot, do so. shutdown is the proper way
  to do it; it goes out and kills processes and attempts to shut the
  system down as cleanly as possible. haltsys and reboot, on the other
  hand, try to shut the system down as quickly as possible, and any
  programs which are running will be rudely interrupted.

  Also, if you're using a caching hard drive controller, be aware that
  it may not realize the system has been shut down, so even though Xenix
  or Unix tells you it's *** Safe to power down ***, there may still be
  data left in the hardware cache that isn't flushed to disk yet. A
  good, but not foolproof, precaution is to press a key to allow the
  system to reboot, and not power down until the Boot: prompt comes up.
  The added time and disk activity may allow the controller to flush its
  cache. If your caching controller has a specific driver for SCO and
  you're using that driver, then it can communicate with the operating
  system to ensure that its buffers are all flushed, and this problem
  does not arise.

  Note that using a caching hard drive controller on a caching operating
  system is generally of little or no use, though there are certainly
  some cases in which it makes a significant performance difference (but
  only by defeating the order in which write requests were made by the
  kernel or the application, possibly decreasing data integrity somewhat
  if the system crashes).

  [Table of Contents]
    _________________________________________________________________

How can I get more than 64k inodes?

  SCO Xenix and all versions of SCO Unix up to and including 3.2v4.2 use
  16-bit unsigned integers for inode numbers, so there is a limit of
  slightly under 65 536 inodes available per filesystem. If you are
  running one of these versions, you'll have to make multiple
  filesystems, each with 64k or less inodes.

  OpenServer 5 includes two new filesystems, with 27- and 30-bit inode
  numbers. These provide approximately 130 million and approximately one
  billion inodes per filesystem, respectively.

  [Table of Contents]
    _________________________________________________________________

Where do I get zmodem?

  Some of the ftp sites listed in the Administrative FAQ (posted at the
  same time as this FAQ) should have versions that are compiled and
  known to work on SCO systems. See also tls025. If you want source, try
  ftp://ftp.cs.pdx.edu/pub/zmodem/. This program also handles X and Y
  modem transmission and reception.

  Zmodem was designed by Chuck Forsberg of Omen Technology
  (http://www.omen.com/). Omen's Web site includes both freely available
  and commercial communications software.

  [Table of Contents]
    _________________________________________________________________

Where do I get kermit?

  The Kermit Project at Columbia University can be found at
  http://www.columbia.edu/kermit/ or [email protected] The latest
  version (as of 25 September 1997) can be found, precompiled for a
  number of SCO platforms, at http://www.columbia.edu/kermit/ck60.html
  The companion products for Windows 95 and for DOS/Win3.x can be found
  at http://www.columbia.edu/kermit/k95.html and
  http://www.columbia.edu/kermit/mskermit.html

  [Table of Contents]
    _________________________________________________________________

I get messages saying "stat() failed: /tmp/croutPPGa00288: no such file"

  Basically, this is normal. When cron runs an at, batch, or cron job,
  it creates a temp file named /tmp/crout* to hold the stdout and stderr
  of that job. When the job is finished, it mails the results (if any)
  to the job's owner and then removes the file.

  In the meantime, some other program (probably a filesystem cleaning
  daemon) has been scanning for whatever purpose. It did this in two
  passes; first, it got a list of all files it had to consider (probably
  by asking the shell to expand "/tmp/*" into a list of files); second,
  it uses stat() to find out information about each one. Between these
  two steps, the cron job finished and cron deleted the file, so by the
  time the second job went to get information about the file, it had
  vanished.

  This message is harmless so long as it refers to a cron output temp
  file. If it refers to some other file, you may want to find out what
  generated that other file; chances are it's a harmless message, too.

  [Table of Contents]
    _________________________________________________________________

Does SCO support my hardware?

  If you already have your copy of Unix/Xenix/ODT, the first place to
  look is in the Release Notes. If you see your hardware listed there,
  it's supported.

  However, the Release Notes are not quite up-to-date; this industry
  changes so quickly that a manual written this month will be out of
  date by the time it's come back from the printers. The on-line
  solution is at http://www.sco.com/chwp

  SCO used to make the Hardware Compatibility Handbook available in the
  form of postscript files, but stopped in late 1997.

  To be perfectly accurate, the HCH also is not always up-to-date. The
  best advice is to scout around in the EFS directory on ftp.sco.com and
  read the doc files for the latest and greatest Advanced Hardware
  Supplement files. See also the TLS and VCD directories, plus the
  appropriate AHS directory for your version.

  [Table of Contents]
    _________________________________________________________________

How do I get a file off my distribution diskettes?

  The simplest way is to use custom to reinstall that file. If you can't
  do this for some reason, try the following. Note that with the
  extensive use of symlinks in OSR5, this method may not be very easy to
  use on OSR5 because you may not know the actual file you want (which
  is the file within the SSO tree, not the file in the usual place
  you're accustomed to finding it).

  This is obviously dated: no floppy installations exist anymore- it's
  all CD (09/13/2000).

  NOTE: This applies ONLY to diskette media. I don't have tape or CD to
  play with here so I can't be sure on those. Please feel free to send
  deltas for these media.

  First, find out which diskette it's on. Use your favourite search tool
  to look through /etc/perms/* for the file you want. The last field in
  each line of this file is the diskette label (e.g. N1, X2).

  Find that diskette. Look on the label to see if it's a mountable
  filesystem (N1 is; N2 is on some distributions but not on others). If
  it's a filesystem, mount it and just copy the file. If it's not, it's
  in tar format, with relative pathnames. If the file you want is, say,
  /bin/foo, you'd extract it with a command like tar xv2 ./bin/foo

  Roberto Zini:

  Again, not strictly related but worth knowing: today I wanted to run a
  WAV-to-MP3 converted (originally provided for OS5 platforms) under
  UnixWare7. The package was distributed in the usual VOL.000.000
  format; since it actually is a cpio archive, I've extracted the binary
  by making use of the 'r' option of cpio. I skipped over some unwanted
  control files (the ones which make the custom database) until I
  reached what I wanted to extract; once there I typed a new filename
  and the binary got extracted with that given name.

  [Table of Contents]
    _________________________________________________________________

Will I have problems upgrading my hardware?

  There are a lot of different situations possible here - far too many
  to cover. I'll handle a few; any common additions to this list are
  certainly welcome.

  Upgrading memory - on the hardware side, that's easy; add the memory
  and run whatever your hardware uses for a setup program. One gotcha
  here is that many motherboards with L2 cache can only cache up to a
  certain amount of memory. Check with your motherboard manufacturer. In
  many cases, you need at least 64 kB of cache per 16 MB of system
  memory. From the software side, Xenix handles only 16 MB of RAM;
  different versions of Unix handle different amounts, so check the
  release notes for your version. The kernel will automatically see the
  additional memory, but may not put it to optimal use. There are a few
  kernel parameters which can auto-tune themselves within certain ranges
  (the best-known is NBUF), but most are fixed at link time. So the
  short answer is that the system will _use_ the memory, but perhaps not
  in the way you want it to unless you configure and link a new kernel.

  Upgrading the CPU - it should work fine, with one notable exception.
  Older Unix (and Xenix GT) releases have a timing loop in the ad
  (Adaptec 154x) driver detection code which will time out on many
  high-end 486 or higher machines, resulting in the host adapter not
  being detected. Recent Unix releases have this cured; there is a patch
  for at least some older Unix versions. See the question on 154x
  detection in section 3.

  Using an EIDE drive - first, some background. Traditional hard drives
  appear to consist of cylinders, heads, and sectors, and the standard
  hard drive controller driver in SCO products has traditionally
  expected standard (MFM, RLL, many ESDI, and ATA) hard drives to appear
  this way. For ATA drives, this is fine up to about 500 MB, at which
  point the interface details and the BIOS conspire to cause problems.
  EIDE gets around this by defining a new addressing mode - LBA (Logical
  Block Addressing). LBA must be supported by your operating system
  and/or your BIOS, however, and no SCO product prior to OpenServer
  Release 5 supported LBA mode out of the box. There is a note in the
  second section of this FAQ on how you may get an EIDE drive beyond 500
  MB to work on 3.2v4.x. Also, LBA support is one of the features of
  uod429a; check the documentation for this patch.

  If you're running OpenServer Release 5, your EIDE hardware should work
  just fine. If you're running an earlier release of SCO Unix, or any
  release of SCO Xenix, your EIDE hardware should work as long as it's
  in CHS mode and NOT in LBA mode.

  The other caveat is that since /boot is real-mode code which does its
  disk access through the BIOS, and since the BIOS can only access up to
  1024 cylinders, there are several files and directories which must lie
  entirely within the first 1024 cylinders in order for you to boot. The
  easiest way to do this is to keep your entire boot filesystem within
  the first 1024 cylinders. For fresh OSR5 installations, you have the
  option of creating separate boot and root filesystems; this is
  generally a good idea, and means that your root filesystem can be as
  large as you like (since it's only the boot filesystem which needs to
  be in the first 1024 cylinders). If you do not select a separate boot
  filesystem, or if you're running an older version of Unix or Xenix,
  your entire root filesystem should live within the first 1024
  cylinders.

  Newer BIOSES no longer have that 1024 cylinder limitation (09/13/2000)

  Changing SCSI host adapters - there's a big gotcha here. Different
  host adapters (even the same one, often, if configured differently)
  use different logical mappings of the drive, and a drive set up under
  one host adapter may not be readable under another. Even two versions
  of the same adapter may have this problem; I've seen problems moving
  from an Adaptec 154xB to a 154xC, and Adaptec recommends reformatting
  (!). So it may work ... or it may not. Never ever try this without at
  least one backup which verifies 100% perfectly ... and see the note
  earlier in this FAQ about using tar or cpio for your backups before
  considering either to be a good backup program. There is a note in the
  Unix-specific part of this FAQ on a possible procedure for such a
  change. See also TA number 483121.

  Using an ATAPI CD-ROM - SCO Xenix doesn't support CD-ROMs. SCO Unix
  (at least since version 3.2.2) does, but prior to OpenServer Release
  5, they had to be SCSI CD-ROMs. While SCSI is generally a wiser
  choice, support for ATAPI CD-ROMs has been added to OpenServer Release
  5. While many IDE CD-ROMs are ATAPI CD-ROMs, not all IDE CD-ROMs
  follow the ATAPI spec. Only those which do are supported. Note that
  uod429a adds support for ATAPI CD-ROMs; check the notes for this patch
  to determine whether it's applicable to your system.

  Roberto Zini:

  My 2 cents; I've recently upgraded my system (a vanilla EIDE/ATAPI
  based machine). Before replacing the MB and the CPU, I carefully wrote
  down the list of PCI devices as recognized by the BIOS before the OS5
  boot prompt (my system is equipped with a PCI video and network card
  and a pretty old ISA sound card); also I checked to make sure they
  were re-inserted in the same PCI slots of the newly built machine.
  After powering up the machine, everything worked as expected, apart
  from the fact that it was WAY faster :-)

  [Table of Contents]
    _________________________________________________________________

I typed in the wrong serial number!

  On some products, there is a command,/etc/serialize, which will do the
  dirty work for you. Check for this file before trying the second
  method below.

  /etc/serialize takes one argument, which is the name of a permissions
  file, and will ask you for keys. Try the following:


cd /
ls /etc/perms | while read file
do
 /etc/serialize /etc/perms/$file
done

  It may complain about some files with nothing to serialize; this is
  normal. Also, it will rewrite binaries and should only be run in
  single-user mode so that it doesn't clash with files which are
  currently busy. It will also leave some files named /tmp/*.ser with
  your serial numbers and activation keys - so you definitely want to
  clean those up.

  If you don't have /etc/serialize, there's another way to do it. In
  your /etc/perms directory, find all of the files which belong to the
  product in question. Scan each one for a line near the top which
  begins #ser=; this line lists all files which must be serialized in
  this package. Many of the files in /etc/perms will have no such line,
  or will have an empty line; this is normal and these files can be
  ignored. The exact list of files will vary from release to release.

  You can now use /etc/brand to reserialize them. Change to the root
  directory and run /etc/brand serno actkey file [file ...]. For
  example, if the files are ./etc/getty and ./unix, you'd run


cd /
/etc/brand sco012345 abafjdlg ./etc/getty ./unix

  [Table of Contents]
    _________________________________________________________________

Why does fsck want a scratch file?

  There is an archaic limit to how large a filesystem fsck can check
  using available memory (archaic because it hasn't kept up with the
  growth in system memory). The exact limit is not something that
  appears to be documented anywhere, and may also vary between versions
  and different filesystem types. When this size is exceeded, fsck will
  want to use a scratch file to hold information while it's running.
  Before I continue, please read the man page for the -t option to fsck,
  and pay particular attention to the warning about following it with a
  space. Failure to do so may destroy data.

  You may have been prompted at the time you installed the OS to create
  a scratch division if your root filesystem was too large for fsck to
  check. If so, you might wish to edit /etc/default/filesys to specify
  that this should be used if the system has to check the root
  filesystem after a crash. Add -t /dev/scratch (or whatever you called
  the scratch filesystem) in the fsckflags= entry for /dev/root.

  For any filesystem other than root, you can generally use a temporary
  file on your root filesystem as a scratch file. fsck will create it
  and delete it automatically, once you've told it what file to use. I
  usually use /tmp/scratch.

  If, however, you find you need to fsck /dev/root, which is too big to
  check without a scratch file and you don't have a scratch filesystem,
  you still have some choices. A blank (but formatted) floppy diskette
  will often do the trick. If you're running fsck in single-user mode
  and you can guarantee that no swapping has taken place and no swapping
  will take place while you're running fsck, you could use /dev/swap.

  For Unix 3.2v4.2 and ODT 3.0, see uod418a, which provides a new fsck
  which may eliminate the need for a scratch file.

  [Table of Contents]
    _________________________________________________________________

What books are there about SCO systems?

  There are a few, including some very good ones. See
  http://aplawrence.com/Books for a SCO specific listing.

  [Table of Contents]
    _________________________________________________________________

How can I boot multiple operating systems?

  Your SCO system includes the ability to boot Unix/Xenix or other
  operating systems; see the man page for boot. This is enough in most,
  though certainly not all, cases.

  As always, make and verify at least one backup and at least one set of
  emergency diskettes before performing any major systems work. This
  qualifies as major systems work.

  Sometimes, you may have to deactivate your Unix/Xenix partition,
  install a new operating system, then reboot from your emergency
  diskettes and reactivate the Unix/Xenix partition.

  There is at least one highly-regarded third-party utility which may
  help. Contact V Communications ((800) 648-8266 or
  http://www.v-com.com/) for information on System Commander.

  Roberto Zini:

  Please remember to install Microsoft's OSes first !

  [Table of Contents]
    _________________________________________________________________

How do I set disk space quotas?

  No filesystem in OSR5, SCO Unix, ODT, or Xenix supports hard quotas.

  For another approach, look around ftp://ftp.armory.com/pub/admin/
  where you will find, among other things, shell scripts to check users'
  disk space usage and notify users and administrators when users are
  using more space than you'd like them to.

  [Table of Contents]
    _________________________________________________________________

How do I find out what IP address a user logged in from?

  In OSR5, there are options to who, w, last, and finger which provide
  this information. In a program, you can fetch this information from
  /etc/utmpx; #include <utmpx.h> for the appropriate definitions.

  For some earlier versions, see nwho (in tls059b). The farther back you
  go through older versions, the less likely you are to find this sort
  of information.

  [Table of Contents]
    _________________________________________________________________

My ANSI terminal emulator doesn't work correctly

  Unfortunately, everyone has a different definition of the behaviour of
  an ANSI terminal. The exact definition may also vary between versions
  of products (SCO has had more than one version of SCO ANSI, and even
  the rudimentary ANSI support in the ANSI.SYS driver in DOS varies
  between versions).

  If your terminal emulation program doesn't specifically mention that
  it emulates a SCO ANSI terminal, chances are that it's designed to
  work like ANSI.SYS, and that's not sufficient for SCO ANSI. Many
  terminal emulation programs have a specific SCO ANSI setting; check
  with your documentation or contact the vendor.

  In some cases (particularly via telnet or rlogin), the terminal type
  you're using is transmitted as part of the connection sequence. Make
  sure that the terminal type your communications software is reporting
  is the same as what SCO expects. For example, many programs call their
  SCO ANSI emulation "SCOANSI", but SCO calls it "ansi", and if your
  software sends "SCOANSI" as its terminal type, your SCO system will
  not understand. Many terminal emulation packages allow you to define
  what terminal type it will say it's using; set this to "ansi".

  [Table of Contents]
    _________________________________________________________________

What is Skunkware?

  For the full story, see http://www.sco.com/skunkware/faq.html

  The brief summary: Skunkware is a collection of programs which people
  have compiled for SCO operating systems. These may have been ported by
  SCO staff on their own time, by their authors, or by anyone else. None
  of them are supported by SCO. The contents of all Skunkware discs are
  available from ftp.sco.com. The current version may also be ordered
  on-line from http://www.sco.com/orders/.

  [Table of Contents]
    _________________________________________________________________

Can I replace csh with tcsh?

  Yes. SCO's csh is both ancient and broken, and many people don't use
  it. Note that for many systems there's a specific warning in your
  manual that you should not use csh as root's shell.

  Consider replacing it with tcsh, available from a number of places
  including Skunkware (ftp://ftp.sco.com/skunkware/). There are no known
  problems in simply replacing /bin/csh with tcsh, with the possible
  exception SCOAdmin Software complaining about an incorrect checksum
  when verifying your software.

  [Table of Contents]
    _________________________________________________________________

Is my system Year 2000 compliant?

  You'll need to check out everything about your system - your hardware
  (including the BIOS and the motherboard's real-time clock), your
  operating system, any add-on utilities you may have, and your
  applications. A brief summary of information gathered from SCO
  follows; for more detail, and possibly more up-to-date information,
  please visit SCO's site. Please note that the information below is not
  guaranteed to be accurate. For official Year 2000 information relating
  to SCO products, contact SCO.

    * SCO's Y2k Web site is http://www.sco.com/year2000/
    * UnixWare 7 requires the application of the 7.0.1 release
      supplement.
    * UnixWare 2.1 requires the application of PTF3015.
    * UnixWare 2.03 requires the application of PTF2243.
    * OpenServer 5.0.5 requires the application of patch oss600a.
    * OpenServer 5.0.2 and 5.0.4 require the application of patch
      oss601a.
    * OpenServer 5.0.0 is not compliant but there is an unsupported
      patch, oss603a, available from SCO. Visit
      http://www.sco.com/support/osr5_query.html for downloading
      information.
    * SCO Unix 3.2v4.x require the application of SLS uod426d. 3.2v4.2,
      with this patch, qualifies for SCO's Date Processing Limited
      Warranty; earlier releases of 4.x will take this patch but are not
      covered by the warranty.
    * SCO Unix releases 3.2v2.0 and 3.2.0 are not officially listed;
      however, the documentation for uod426d states that while this
      supplement has not been extensively tested on these releases, it
      "should still work as expected" on them. Obviously, there is no
      warranty on this.
    * SCO Open Server 3.0 and OpenDesktop 3.0 require the application of
      SLS uod426d, and are covered by the Date Processing Limited
      Warranty. Earlier Open Server and OpenDesktop releases are in the
      same category as the Unix releases on which they are based -
      uod426d is available and should work, but it has not been
      extensively tested on them and this combination carries no
      warranty of any kind.
    * Xenix 2.3.2 through 2.3.4 require the application of SLS xnx427d.
    * There are no patches for Xenix versions prior to 2.3.2.

  [Table of Contents]

How do I make environment variables global?

  Environment variables are made global by exporting them:

  MYVAR="hello"
  export MYVAR

  Once the variable is exported, you can change it's value and do NOT
  have to export it again. If you need everyone to have a particular
  variable set, put it in /etc/profile and export it there.

  [Table of Contents]

How do I restrict logins?

  For some reason, I often get requests to limit users to one login. I
  guess the people asking such questions have a reason for wanting to
  restrict logins this way. The only way to do it is to add a script to
  either /etc/profile or the particular user's .profile that tests to
  see if this user is logged in somewhere else. Something like this in
  /etc/profile will work:

  IAM=`who am i | cut -d" " -f1`
  COUNT=`w | cut -d" " -f1 | grep "^$IAM$" | wc -l`
  [ $COUNT -gt 1 ] && exit 0

  Similar tricks can restrict a user to a particular tty:

  IAM=`who am i | cut -d" " -f1`
  TTY=`tty`
  [ $TTY != "/dev/tty07" ] && [ $IAM = "tony" ] && exit 0

  And then there's always restricting login to root: put this in
  /etc/profile

  IAM=`who am i | cut -d" " -f1`
  [ -f /etc/nologin ] && [ $IAM != "root" ] && exit 0

  When you need to restrict logins, just "touch /etc/nologin"; remove it
  when the need is over.

  [Table of Contents]

Why can't I unmount my CDROM?

  Filesystems not unmounting: probably because some process is using it.
  It might even be you- if you have CD'd there. Something that sometimes
  catches folks: you "cd /cdrom" and then perhaps start "ksh". Later on
  you cd somewhere else, but the shell you started with is still sitting
  on /cdrom- and it wll not unmount.

  Use "fuser /mnt" or "fuser /dev/cd0" (note that on Linux these will
  produce different results but re equivalent on OSR5 at least) to find
  the process and kill it.

  [Table of Contents]

What do "hangup" messages mean during shutdown?

  Seeing 2931 hangup (number will vary) just means that some process
  received and noted a kill -1 signal.

  [Table of Contents]

What does "interupt is private" mean ?

  An "interrupt is private" message means that you have an interrupt
  conflict on something critical- usually your controller. If this isn't
  a new install, it's probably because you removed some device and that
  caused the BIOS to reassign the interupts, creating a conflict. The
  solution is to go into the BIOS and tell it NOT to use that interrupt
  for Plug and Play/PCI devices. Hopefully that will get you back to
  where you were.

  [Table of Contents]

What are interrupts?

  A device generally uses interupts to tell the CPU that it is done
  doing whatever it was told to do and is ready for more, or when it
  receives data that the CPU needs to process. For example, a parallel
  or serial port or a NIC card all generate an interrupt when they have
  finished sending data, and also if data arrives at their port from
  outside. That's why sharing interrupts is difficult- if interrupts can
  be shared, the CPU has to figure out what device really needs
  attention- therefore it's unlikely that two different devices could
  share interrupts, although two devices controlled by the same driver
  may be able to. If your process just hangs when you try to access a
  device, it may very well be because the interrupt is wrong: the CPU
  expects the thing to interrupt on 9 for example) but it is actually
  set to 10- the CPU never knows to wake up the driver to process
  whatever happened.

  [Table of Contents]

How can I send attachments from the command line?

  Using mail from the command line: if you want to send attachments, you
  need something like "mutt" (available from Skunkware). If it's just
  arbitrary text, you can do

  mailx -s "This is it" someone@someplace < somefile

  or

  echo "text
  more text" | mailx somebody somebodyelse [email protected]

  [Table of Contents]

Why doesn't the "mutt" I got from Skunkware work?

  Thanks to [email protected] (Ian Peattie)

  Because you don't have the ncurses library from
  http://www.sco.com/skunkware/src/libraries/

  [Table of Contents]

What is an "xxevent" error?

  If you see "xxevent" errors, and you have a Digiboard, check to see if
  you put the cable on the wrong port of the ports module..

  [Table of Contents]

How do I configure a Travan Tape Drive?

  Tell "mkdev tape" that it is a DAT.

  BTW, my personal experience with these has not been good. I do not
  recommend them.

  [Table of Contents]

Why does my cron job fail while "at" works?

  Probably because your program needs environment variables that cron
  does not have set. You need to wrap your job in a script that sets and
  exports whatever variables it needs- likely TERM and PATH at least.

  Using "at" works because at grabs all your current environment
  settings and uses them when it runs the job. See
  http://aplawrence.com/Unixart/cron.html for a more complete
  discussion.

  [Table of Contents]

Large print jobs fail on remote printers

  This is a silly artifact from the days when printing was expensive.
  The "mx" setting in /etc/printcap determines how large a print job can
  be, and if there is no "mx" then it sets the size very small. Add
  "mx#0" to have unlimited size. Just stick it in (between :'s) with the
  other stuff.

  [Table of Contents]

Why does my screen get confused if I login in UPPER CASE?

  Because the system thinks you CAN'T do lower case, so it's trying to
  give you a way to still use upper and lower case byt automatically
  translating for you. Things that should be upper case get a "\" in
  front of every upper case \L\E\T\T\E\R. That mode was designed for
  very old, upper-case only terminals, and really isn't useful today; in
  fact it will cause many programs to act strangely or not to work at
  all.

  If that's something you do accidentally and it screws up your
  application, you can add these lines to the end of /etc/profile:

stty -iuclc -xcase -olcuc

  Those lines will reset you to "normal" if you logged in with upper
  case.

  [Table of Contents]

Why can't I kill a process with -9?

  One of the early things people learn about Unix is that a "kill -9" is
  invincible- that a process must die if you send it a KILL (-9).
  However, that's not entirely true:
    * A process can be sleeping in kernel code. Usually that's because
      of faulty hardware or a badly written driver- or maybe a little of
      both. A device that isn't set to the interrupt the driver thinks
      it is can cause this, for example- the driver is waiting for
      something its never going to get. The process doesn't ignore your
      signal- it just never gets it.
    * A zombie process doesn't react to signals because it's not really
      a process at all- it's just whats left over after it died. What's
      supposed to happen is that its parent process was to issue a
      "wait()" to collect the information about its exit. If the parent
      doesn't (programming error or just bad programming), you get a
      zombie- a defunct process which has been adopted by init.
    * Finally, a process that is being traced (by a debugger, for
      example) won't react to the KILL either.

  See SCO TA 104438 for more details.

  [Table of Contents]

How do I make the manual pages work for things installed from Skunkware?

  You need to:
    * Install the GNU Text processing tools from Skunkware
    * Modify /etc/default/man so that the MANPATH section reads:

MANPATH=scohelp:/usr/man:/usr/local/man

  [Table of Contents]

Where do I get a better vi?

  Get vim from Skunkware (it also has a good graphical interface).

  Alternatively : http://www.sco.com/skunkware/editors

  Roberto Zini

  [Table of Contents]

How can I have a 'command line history & editing' shell under SCO Unix/OS5?

  The simplest way is to use the korn shell (ksh); you can change your
  login shell from the 'Scoadmin -> Account Manager' interface. Once
  you're done, insert the 'set -o vi' line in your $HOME.profile file;
  thus enabling the vi(C) compatibile command line history and editing.
  Previously typed command can be retrieved by using vi(C)-like commands
  such as "ESC k" (scroll the list of typed command backwards), "ESC j"
  (scroll forwards) and so on (see the ksh(C) man pages).

  Alternatively you can enable emacs-like command, as Richard Howlett
  suggested in the following excerpt:

 set -o emacs
 alias __A=$(print '\0020')    # ^P = up    = previous command
 alias __B=$(print '\0016')    # ^N = down  = next command
 alias __C=$(print '\0006')    # ^F = right = forward a character
 alias __D=$(print '\0002')    # ^B = left  = back a character
 alias __H=$(print '\0001')    # ^A = home  = beginning of line

  Other shells such as bash, zsh and so on have a command line hustory &
  editing which is very similar to the one used under DOS with 'setkey';
  check your Skunkware CD-ROM for additional info.

  Roberto Zini

  [Table of Contents]
    _________________________________________________________________

Is it possibile to use the mouse in a character application?

  Yes; once you've configured your mouse with the 'mkdev mouse' utility,
  execute 'usemouse'. This command will start a shell under which you
  can move the mouse to 'simulate" cursor keys; to see how it work, try
  by editing an existing file with vi (after running the 'usemouse'
  command of course). You can move the mouse and watch the cursor moving
  accordingly across the screen.

  To end the 'usemouse' shell, simply type 'CTRL-D'.

  Roberto Zini

  [Table of Contents]
    _________________________________________________________________

Are there any antivirus programs for Sco Unix/OpenServer?

  Shane Gibson posted the following a while ago:

>>
>> The reason you have not found little to nothing, is that there are no
>> viruses that can attack a Unix box.
>>
>
>Actually, that's not entirely accurate.  There are VERY few known
>Unix Viri, but they are so few and so (relatively) harmless, that
>there is essentially, no real threatening viri for Unix.

You can find some antivirus packages (or packages which
'scan' the datastream on an Unix Internet server looking for
known DOS/Widows viruses) here:

       Dr Solomon Antivirus for Unix
       McAfee (http://www.mcafee.com)
       AMAVIS (http://satan.oih.rwth-aachen.de/AMaViS/amavis.html)
       Interscan VirusWall (http://www.datatel-systems.com/virus.htm)
(http://www.avertlabs.com/tvdbeta/unix/download.ht)
       Sophos AntiVirus (http://www.sophos.com)
       DataFellows (http://www.datafellows.com)

You can also check for a boot-sector virus by making use of
the following script, kindly posted by Jeff Liebermann:

:
# @(#) bvchk    Ver 1.05        Checks for boot sector virus.
# 03/16/93 by Steve Post  ([email protected])
# 02/14/93 tweaks and cleanup  ([email protected])
#
# Check hard disk boot block against stored image
# Must be root to read raw hard disk
# Boot block is 376 bytes in all versions of Xenix and SCO Unix.
#
if [ ! -r /etc/masterboot ]
then
 echo "$0:  Error.  You must be root to read /etc/masterboot and boot
record."
 exit
fi

echo "$0: Now comparing  /dev/rhd00  boot record with  /etc/masterboot"
if ( dd if=/dev/rhd00 bs=376 count=1 | /bin/cmp - /etc/masterboot )
2>/dev/null
then
 echo "$0: Looks OK.  You're safe."
else
 echo "$0: Boot record has been changed.  You probably have a virus"
fi

  Roberto Zini

  [Table of Contents]
    _________________________________________________________________

I need to remotely assist a customer; what can I do?

  You can use the 'SPY' filesystem included in TLS604: here a short
  description:

spyfs:      A filesystem that allows authorised users to watch people
           typing on console, serial ports, or pseudo ttys, as well as
           any program output.  Also shows multiscreen(M) contents.
           Can also inject characters as if they typed it.

  By using it you can 'watch' what the remote user is doing and also
  interact with it; a very useful package.

  Roberto Zini

  [Table of Contents]
    _________________________________________________________________

Is it possibile to switch screen from an application?

  Yes, but only on the console. You can use the following ESCAPE
  sequence to switch (for example) to multiscreen '4':

echo "\033[3z"

  The general syntax is:
echo "\033[xz"

  where 'x' is a number ranging from 0 to 11 corresponding to the
  default 12 available console multiscreens.

  Roberto Zini

  [Table of Contents]
    _________________________________________________________________

Are there any Winzip compatible tools?

  Yes: the 'zip' and 'unzip' packages on the Skunkware CD-ROM are 100%
  compatible with the DOS and Windows version of the ZIP utility.

  Roberto Zini

  [Table of Contents]
    _________________________________________________________________

I can't access my Windows 9x FAT32 partition from the SCO's one!

  FAT32 partition files cannot be access with the doscmd(C) commands
  (doscp, dosdir); you can install the mtools package from the Skunkware
  CD-ROM which is able to do the trick. Alternatively download tha
  latest version from: ftp://linux.wauug.org/pub/knaff/mtools and
  compile it yourself

  Roberto Zini

  [Table of Contents]
    _________________________________________________________________

Are there any 'Office'-like packages for SCO?

  Here are some:
    * WordPerfect (http://www.corel.com)
    * XESS from AIS (an Excel like package -(http://www.ais.com)
    * Axene (http://www.axene.com)
    * Quad (http://www.quad.com)
    * Goldmetal (http://www.goldmetal.com)
    * Uniplex (http://www.uniplex.com)

  Roberto Zini

  [Table of Contents]
    _________________________________________________________________