FAQ Starting Page http://aplawrence.com/SCOFAQ/index.html
These FAQS were developed and maintained for years by
email@example.com (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
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.
I have a system memory dump in my swap space; how do I delete it?
See reader questions & answers on this topic! - Help others by sharing your knowledge
Go into single-user mode (NEVER try this in multi-user mode!). Then copy something into your swap space. The suggested method is: dd if=/etc/termcap of=/dev/swap count=100 Unix 3.2v4.0 and later will do this for you if you want it to. [Table of Contents] _________________________________________________________________ How do I save kernel panic dumps to tape? Edit the /etc/dumpsave file to make it put the panic dump where you want it to go. [Table of Contents] _________________________________________________________________ At boot time, the "Enter the root password or ^D" message doesn't work! If this message stair-steps across your screen and you can't do a ^D, the file /etc/ioctl.syscon has become corrupt. Go into single- user mode by typing the root password followed by ^J instead of a carriage return. Use stty sane^J to restore your console to more normal operation. Remove /etc/ioctl.syscon, and reboot by running /etc/reboot. The system will complain that /etc/ioctl.syscon is missing and will rebuild it for you. The usual cause for this file becoming corrupt was that the system was shut down from a terminal other than the console, and this file now contains the stty settings for that terminal (which are probably not correct for the console). [Table of Contents] _________________________________________________________________ My pre-EAFS filesystem gives errors on filenames longer than 14 chars There is a tunable kernel parameter, ETRUNC, that controls this behaviour. If set to 1, the kernel will silently truncates filenames to 14 characters. If set to 0, the kernel returns ENAMETOOLONG, in accordance with POSIX. [Table of Contents] _________________________________________________________________ I just upgraded to 3.2v4 but I still can't use long filenames Long filenames only work on EAFS filesystems. Any new filesystems you create will be EAFS filesystems unless you specify otherwise. When you upgrade, your root filesystem will automatically be converted to an EAFS filesystem, but any other filesystems you have will not. If you have an existing AFS filesystem that you wish to convert to an EAFS filesystem, specify the -E option to fsck; this will convert the specified filesystem into an EAFS filesystem. If for some reason you need to convert an EAFS filesystem back to AFS, you can use fsck -^P (^P == control-P). Note that there is no performance difference between AFS and EAFS filesystems except in accessing long filenames and symbolic links; otherwise, they share the same kernel driver. [Table of Contents] _________________________________________________________________ The permissions on /usr/adm/sa and its children are wrong You have two simple basic choices: 1. move the following two lines from the sys crontab file to the root crontab file. 0 * * * 0-6 /usr/lib/sa/sa1 20,40 8-17 * * 1-5 /usr/lib/sa/sa1 2. ensure that /usr/adm/sa is read/writeable by sys. [Table of Contents] _________________________________________________________________ I get an error "Cannot obtain database information on this terminal" This error can be caused for various reasons. First, determine the cause of the problem and implement a solution. Then install all required SLSes according to the following paragraph, derived from TA 440249. For SCO UNIX System V/386 Release 3.2 Operating System (the original version) SLS unx223 must be installed prior to installation of SLS unx257. For SCO Open Desktop Release 1.0.0 and 1.0.1, UFE should be installed prior to unx257. For 3.2.2 without Maintenance Supplement 1 and for ODT 1.1 without update G, install unx257 on its own (MS1 and UG both include unx257, and if you have them, you should not install unx257). SCO Unix 3.2v4 and ODT 2.0 have more up-to-date security, and unx257 should not be installed on either. Note that few, if any, of these supplements are available any longer. The following is from TA 480020. CAUSE 1: The file /etc/auth/system/ttys has become corrupted. Reboot the system and enter single user (System Maintenance) mode. Edit the file and insert the following line if it does not exist: tty01:t_devname=tty01:chkent: This file should only contain entries for your terminals (ttyxx - where xx is the tty number). Each entry ends with :chkent:. Remove unwanted lines. CAUSE 2: After installation of a multiport intelligent serial board the file /etc/auth/system/ttys did not get updated with new entries for each tty port. These entries can be created by taking the following steps: 1. Run sysadmsh 2. Select Accounts -> Terminal -> Create 3. Type in each device name (e.g. tty3h) and then press "<Ctrl>X" to execute. Select "YES" to save modifications. CAUSE 3: This message can be generated sporadically on a system with a large number of users logging on and off. Check the /etc/auth/system directory for ttys files. If there are multiple files, the extra files must be removed. When database files such as /etc/auth/system/ttys are updated, a renaming procedure is used to ensure that multiple accesses to the file are managed properly. The contents of the old file (ttys) are copied/updated to create the new -t file (ttys-t). After that is done the old file is moved to a -o file (ttys-o), the new file (ttys-t) is moved to the original name (ttys), and the ttys-o file is deleted. It is important to verify which of the files is the more complete file. This file is usually the largest, but use vi, cat, or more commands to examine the content of the files for correctness and/or corruption. Once you have determined which file is the most correct, make sure it is renamed to ttys, and remove all others. It is recommended that you have "OVERRIDE=tty01" in the file /etc/default/login. That way root can always log in on that terminal when in multiuser mode. NOTE 1: if this error message appears on just one port and no other ports are affected or prevented from logging in, then ckeck to make sure the device has just one link. If the device has more than one link, remove it and recreate it with mknod. NOTE 2: TCP/IP 1.1.1 has an old /bin/login which can cause this problem. This release of TCP/IP is unsupported. [Table of Contents] _________________________________________________________________ I need help configuring MMDF Chris Durham of SCO wrote some guides to configuring MMDF in typical TCP/IP and UUCP environments. See TAs 480044 and 550055 There is also a MMDF FAQ crossposted once in a while to several newsgroups including comp.unix.sco.misc and comp.mail.misc. This FAQ can be found at http://www.irvine.com/~mmdf/mmdf.html. [Table of Contents] _________________________________________________________________ What is the new "low" security level in 3.2v4? It is not traditional Unix security without the TCB. Rather, it uses the TCB to achieve a level of security lower than traditional Unix security. For example, it gives all users the privileges to administer print services, backups/restores, and to run shutdown. The moral is not to use low security unless you know the security holes it opens and can live with them. The "traditional" security level is the closest to traditional Unix security, and should probably be the lowest security level that most people should consider using. The next level up is similar to C2 security as found in prior releases of SCO Unix, while the top level is tighter yet. Note that each of the four security levels, as with the two levels in earlier releases, is only a set of defaults. Once you have installed a particular security level, you can adjust the exact settings to make security suit your needs. Note that once a system has been set up at a particular security level, it may be difficult or impossible to completely increase the security level, particularly if the system has been in use for some time. [Table of Contents] _________________________________________________________________ My AHA154x/174x isn't being detected On some machines which were fast for their time (e.g. 486DX2/66), the timeout in the kernel routine that initializes the card may run too quickly, causing the system to not be able to use your host adapter. SCO has a fixed version of /etc/conf/pack.d/ad/Driver.o that increases the timeout value; this should cure the problem. This fix (in unx365b for Unix 3.2v4.0 and 3.2v4.1, or oda366b for ODT 2.0) is available from SCO's usual channels (see the administrative FAQ for info on ftp and UUCP access). Later versions of the operating system include this fix; it is not applicable to anything earlier than 3.2v4.0 and ODT 2.0. As a temporary fix until you can get this SLS installed, slow your computer down during booting (many machines have a Turbo switch which can be turned off). [Table of Contents] _________________________________________________________________ How do I upgrade from an n-user licence? If you are using OSR5, you simply install the new license pack from SCOAdmin License. If you are upgrading the user licence but staying on the same release of the operating system, you need to rebrand the appropriate files with the new serial number/activation key that you get in the upgrade kit. If you're upgrading to a more recent release, use the intelligent upgrade procedure built into the upgrade package. This will not only update your OS to the current level, but will also upgrade your user licence to what you ordered. [Table of Contents] _________________________________________________________________ How do I get MMDF to send one copy of a message to many people? You will need MMDF II level 43 for this; it's included in Unix 3.2v4.0 and ODT 2.0 and above, and is available in tls011 for older releases. You will need to add a confstr= entry to your UUCP channel similar to MCHN uucp, show="SCO UUCP Delivery", que=uucp, tbl=uuchn, ap=same, pgm=uucp, mod=imm, confstr="naddrs=15 maxlen=1024" naddrs sets the maximum number of addresses per message maxlen sets the maximum total length of the address You probably want to set maxlen no higher than 1024 or you may run into a limit in the system. You may also want to configure your badhosts channel similarly. [Table of Contents] _________________________________________________________________ My system is slow or hangs when sizing memory The OS tries to flush the cache before sizing memory. On some systems, this may cause problems including painfully slow memory sizing. For Unix 3.2v4.2 and related systems, try adding the cache=/d option to your boot string. Try it out manually first, using defbootstr cache=/d at the Boot: prompt; if that works, add it to /etc/default/boot. If you still run into problems, you may need to compare the memory map with and without cache. Boot with the cache=/d prompt options and, when the prompt comes up, type v to see the memory map found with the cache disabled. Then boot using cache=/e prompt and, again, type v at the prompt to see the memory map with the cache enabled. If they differ, it is not safe to size memory with cache disabled, and you will have to suffer with slow boot times (it will not affect performance once the system is rebooted). [Table of Contents] _________________________________________________________________ My system doesn't recognize files starting with #! Unix 3.2v4.0 through 3.2v4.2 include a parameter to determine whether the kernel supports the use of #! to denote the interpreter for a particular script, but it is not tuneable using the standard configure program. Instead, edit the file /etc/conf/pack.d/kernel/space.c and change the hashplingenable setting from 0 to 1. Rebuild and install the new kernel. [Table of Contents] _________________________________________________________________ Where do I get POP binaries? POP3 server binaries are available from a number of sources. For some older SCO Unix versions, see tls049. OSR5 includes a POP3 server. Some supplements for various OSR5 releases update the POP3 servers. There's also a POP3 server for OSR5 in tls593. You might also wish to check out Pine, which includes a POP3 server (see ftp.celestial.com for source and binaries designed for various SCO operating systems. [Table of Contents] _________________________________________________________________ How do I fix a kernel trap 0x00000006? NOTE: This problem appeared at some point in 3.2v4.x, and is fixed in OpenServer 5. See the documentation in TA 482366 for more detail. This is due to executing an invalid instruction in kernel mode (trap 6 is for an invalid instruction; a user process which does this will simply die with a core dump). If your particular problem is a double panic and it doesn't leave a system memory dump in whatever device you've chosen for dumps (usually /dev/swap), apply the following patch. This is due to a problem in the kernel's querytlb() routine, which may allow the Pentium to execute a 386-specific instruction which is not supported on the Pentium. The cure involves patching a kernel module using _fst (see part 1 on where to find /etc/_fst). Go into the /etc/conf/pack.d/kernel directory. We're going to work on locore.o, so make a backup and then run _fst -w locore.o - The conversation between you and _fst goes like this (the * is a prompt from _fst; don't type it or any of _fst's responses): * querytlb+5?w 0x9090 querytlb+ox5: 0x375=0x9090 * querytlb,4?ai querytlb: call near 0x17:0x0 querytlb+0x5: nop querytlb+0x6: nop querytlb+0x7 sub eax, eax * $q This fixes one of the modules which is linked into the kernel, so you only have to apply it once. Relink and reboot. [Table of Contents] _________________________________________________________________ How do I configure an EIDE drive to work on 3.2v4.x? This is a combination of TA 482436 and a procedure posted in comp.unix.sco.misc by a hardy adventurer. Use it at your own risk; it may not work with all hard drives, and you may not be able to have other OSes on your hard drive in some cases. Note also that there is an SLS, uod429a, which adds LBA support to 3.2v4.2, and should be used instead of this procedure where applicable. OpenServer Release 5 is the first SCO operating system which supports LBA (Logical Block Addressing) mode, so to install on an older system the first thing you need to do is to disable this mode. This may involve jumpers or a BIOS setting change; check your hardware documentation. Configure your BIOS to believe the hard drive has 1024 cylinders, 16 heads, and 63 sectors per track. Begin your installation, and make sure you run through the disk initialization section manually. Apparently, if you can select the "Preserve additional filesystems" option, this may be an easy way to do it. When you get the prompts dealing with the actual geometry of your hard drive (this program is dkinit), modify the current disk parameters, and set them to something larger. At 16 heads and 63 above) spt, every actual megabyte (1 048 576 bytes, or 1024 kB) of disk space takes about two cylinders; you could use this equivalence to calculate the number of cylinders you should enter. If in doubt, guess low; you do not want to have Unix trying to use disk space which isn't there. When you've done this, you've basically told Unix to ignore the BIOS settings (which will be used only for booting), and that should lift the ~500 MB limit up to about a gig. Note that there is a limit of 2048 cylinders in SCO's hard drive drivers, which means you will not be able to access more than about a gigabyte. [Table of Contents] _________________________________________________________________ How do I change my SCSI host adapter? This applies to at least 3.2v4.0 and later. As always, make and verify a backup and a set of emergency diskettes before any major system surgery. Make sure that the appropriate driver is already installed. It may already be there, or it may be in the form of a BTLD. Your manual should provide the instructions for this step. The file /etc/conf/cf.d/mscsi contains a list of SCSI devices and the parameters (such as which host adapter, what SCSI ID they are, etc.) required for them. The safest change to make is to replacec the name of the old adapter driver (e.g. ad for an Adaptec 154x) to the name of the new one (e.g. arad for an AIC-7770-based adapter) on each such line. There is another option, which is to use auto. I am not sure exactly how this works if there is more than one host adapter installed, so on systems with multiple host adapters it is probably wisest to list the specific host adapter rather than using auto. In /etc/conf/sdevice.d you will find files named after the drivers you're installing and removing (e.g. ad and arad). You will need to edit each of them. The second column should be set to Y for a driver which is enabled, and N for a driver which is not. For some drivers, you will also need to edit the adapter address in columns 7 and 8; many adapters do not require this. There is no need to change /etc/conf/cf.d/sdevice, as it is built from these files when you relink the kernel. There's at least one special case which deserves to be noted here. If you are moving from an EISA host adapter to a PCI one, you may need to enable PCI support in your kernel if this is the first PCI device. In /etc/conf/sdevice.d/pci, you should see a line which begins pci N. Change the N to Y. If you are removing your last EISA device, you may wish to do the inverse in /etc/conf/sdevice.d/eisarom with the eisarom line, though it probably doesn't hurt to have this support in the kernel even though you have no EISA devices. This also applies to other hardware changes involving addition or deletion of PCI and EISA devices, and it applies in reverse if you're removing your last PCI device and adding your first EISA one. Relink the kernel, shut down, and swap the hardware. [Table of Contents] _________________________________________________________________ My machine had a panic. How do I find out why? There are a number of situations which can cause panics. First off, write down the actual panic message displayed on the screen when the machine crashed. Also, write down the values of CS and EIP from the register dump. Next, reboot the system into single-user mode and run the following command to produce a panic report: echo panic -w /tmp/panic.out | crash -d /dev/swap This produces a report in the file /tmp/panic.out. With the original panic message and this report, someone may be able to help you; without this information, it's just about impossible to say what went wrong. In particular the section of the report listing the kernel stack may be useful in diagnosing what caused the panic. For further information, consult TAs 480619 and 482035. [Table of Contents] _________________________________________________________________ How do I find out the names of BTLDs on a BTLD diskette? Boot from your boot diskette. At the Boot: prompt, insert the BTLD floppy and type dir. Some of the names you see are BTLDs, and some may not be. If you see one which you think might be a BTLD, you can give its name as an argument to dir (e.g. dir foo); if you see that it has subdirectories called install and driver, it's a BTLD. [Table of Contents] _________________________________________________________________ My keyboard locks up Some fast machines (typically high-end Pentium systems) may be too fast for a timing loop in the kernel. Apply oss424a, which patches this timing loop. [Table of Contents] _________________________________________________________________ My kernel locks up at boot time This is not really a generic answer, but only deals with one particular type of lockup. If your machine locks up and the last thing on the screen was "xxxxinit", where xxxx is the name of the driver for a SCSI host adapter, you can disable the driver by booting with defbootstr disable=xxxx The kernel ships with drivers for a wide range of hardware. The xxxxinit routines are responsible for detecting and initializing a particular piece of hardware. If the machine hangs at this point, then one particular driver is clashing with something in your machine. If the driver is for a card you don't have, it should be safe to disable it as shown above. If the driver which is hanging runs a piece of hardware which you're trying to use, you need to do some further work to determine why it's clashing. This may involve adjusting jumpers or other configuration information on the card. If you discover that you need to disable multiple drivers, separate their names with commas. For example, to disable spad and wdha, use defbootstr disable=spad,wdha. [Table of Contents] _________________________________________________________________ How can I use a PC Card (PCMCIA) with Unix? SCO has released PC Card (The Standard Formerly Known As PCMCIA) drivers for OpenServer Release 5 as TLS619. Lynnsoft (firstname.lastname@example.org, http://www.lynnsoft.com/software.htm) also makes PC Card drivers for SCO Unix. [Table of Contents] _________________________________________________________________ How much RAM can my system use? This depends on your OS version: * 3.2.0: 16 MB * 3.2v2.0: 256 MB * 3.2v4.x: 512 MB if you use a mem= bootstring; 256 MB if not * 3.2v5.0.0, 3.2v5.0.2: 768 MB using a mem= bootstring; 512 MB otherwise. You can also add the Large System Supplement (V1.0.0 for 5.0.0; V1.0.1 or 1.1.0 for 5.0.2) which enables support for up to 2 GB * 3.2v5.0.4: 4 GB right out of the box 5.0.4's support for more than half a gig of memory is more stable than 5.0.2 or 5.0.0 with the LSS; if you require this much memory, you should seriously consider upgrading to 5.0.4. You can find details on the mem= bootstring in your man page for boot(HW); the quick summary is that Boot : defbootstr mem=1m-768m will instruct the system to scan for 768 MB of RAM. Do not specify more memory than the maximum for your release. [Table of Contents]