SCO UnixWare 2.1.1 Installation and Release Notes (C) Copyright 1996 The Santa Cruz Operation, Inc. All rights reserved. No part of this publication may be reproduced, transmitted, stored in a retrieval system, nor translated into any human or computer language, in any form or by any means, electronic, mechanical, magnetic, optical, chemical, manual, or otherwise, without the prior written permission of the copyright owner, The Santa Cruz Operation, Inc., 400 Encinal Street, Santa Cruz, California, 95060, USA. Copyright infringement is a serious matter under the United States and foreign Copyright Laws. Information in this document is subject to change without notice and does not represent a commitment on the part of the Santa Cruz Operation, Inc. SCO, the SCO logo, The Santa Cruz Operation, and UnixWare are trademarks or registered trademarks of The Santa Cruz Operation, Inc. in the USA and other countries. UNIX is a registered trademark in the USA and other countries, licensed exclusively through X/Open Company Limited. All other brand and product names are or may be trademarks of, and are used to identify products or services of, their respective owners. SCO UnixWare is commercial computer software and, together with any related documentation, is subject to the restrictions on US Government use as set forth below. If this procurement is for a DOD agency, the following DFAR Restricted Rights Legend applies: RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the Government is subject to restrictions as set forth in subparagraph (c)(1)(ii) of Rights in Technical Data and Computer Software Clause at DFARS 252.227-7013. Contractor/Manufacturer is The Santa Cruz Operation, Inc., 400 Encinal Street, Santa Cruz, CA 95060. If this procurement is for a civilian government agency, this FAR Restricted Rights Legend applies: RESTRICTED RIGHTS LEGEND: This computer software is submitted with restricted rights under Government Contract No. _________ (and Subcontract No. ________, if appropriate). It may not be used, reproduced, or disclosed by the Government except as provided in paragraph (g)(3)(i) of FAR Clause 52.227-14 alt III or as otherwise expressly stated in the contract. Contractor/Manufacturer is The Santa Cruz Operation, Inc., 400 Encinal Street, Santa Cruz, CA 95060. If any copyrighted software accompanies this publication, it is licensed to the End User only for use in strict accordance with the End User License Agreement, which should be read carefully before commencing use of the software. Document Version: 2.1.1 September 1996 Table of Contents 1. Introduction 1.1. Enhancements and Fixes 1.2 Single UNIX Specification 2. Preparing for Installation 2.1 UnixWare Version 2.2 Add-On Packages 2.2.1 Encryption Utilities 2.3 Backups for Selected Files 2.4 Downloading from an FTP Server 2.5 Contents of the Update CD-ROM 3. Installation Instructions 3.1 Installing update211 3.2 Installing hba211 Drivers 3.3 Installing nic211 Drivers 3.3.1 Creating an IHV Diskette 3.3.2 Using niccfg 4. After Installation 4.1 Removing Update Packages 4.2 Installing Add-on Packages 4.3 Removing Add-on Packages 5. Appendix A: Enhancements and Fixes 5.1 Important Information About PTFs 5.2 Enhancements in the update211 Package 5.2.1 C and C++ Compilers 5.2.2 Performance 5.2.3 Kernel 5.2.4 Commands 5.2.5 SMTP and Mail 5.2.6 Networking 5.2.7 Desktop 5.2.8 Motif (X) 5.2.9 Video Drivers 5.2.10 Hardware Support 5.2.11 Multiprocessor Systems 5.3 Enhancements in the hba211 Packages 5.4 Enhancements on the nic211 Image 6. Appendix B: Compatibility 6.1 Source Code Compatibility 6.2 Commands and Utilities 6.3 Sockets 6.4 ksh-93 vs. ksh-88 7. Appendix C: Single UNIX Specification 7.1 The Specification 7.2 The POSIX-2 Shell (ksh-93) 7.3 Compliant Compilation Environment 7.4 X/Open Curses 7.5 Single UNIX Specification Manual Pages 7.6 Enabling the Single UNIX Specification During Installation 7.7 Enabling the Single UNIX Specification After Installation 7.7.1 Setting RSTCHOWN 7.7.2 Setting the Default Shell 7.7.3 Setting the Login Shell 7.8 Disabling the Single UNIX Specification 7.8.1 Resetting RSTCHOWN 7.8.2 Resetting the Default Shell 7.8.3 Resetting the Login Shell 8. Appendix D: Support 8.1 SCO Online Services Information 8.2 World Wide Web (WWW) 8.3 SCO's Online Support (SOS) system 8.4 SCOFORUM On CompuServe 8.5 Anonymous FTP 8.6 Anonymous UUCP 8.7 Ftpmail 8.8 InfoFax 1. Introduction These notes describe the update package for the SCO UnixWare(R) 2.1.1 Update (update211). They also provide information about the UnixWare 2.1.1 Host Bus Adapter (hba211) driver packages, and the UnixWare 2.1.1 Network Interface Card support (nic211) image. The update211 package provides enhancements and fixes for UnixWare 2.1, and optionally installable UnixWare add-on packages. This package also provides a new optional feature: Single UNIX Specification compatibility. The hba211 driver packages provide a new driver and enhancements and fixes for existing drivers. The nic211 image provides enhancements and fixes for network drivers. The UnixWare 2.1.1 release is available on CD-ROM or from an FTP server. Detailed procedures for installing it are given later in these notes. We recommend that you review the notes for information that may affect your system before attempting to install any of the update packages or images, especially "Appendix B: Compatibility," which highlights important differences from UnixWare 2.1. 1.1 Enhancements and Fixes UnixWare 2.1.1 includes numerous enhancements and fixes resulting from Modification Requests (MRs) and Program Temporary Fixes (PTFs). See "Appendix A: Enhancements and Fixes" for a list of PTFs, and general descriptions of the MRs and PTFs included in the release. Appendix A also lists new and updated drivers. 1.2 Single UNIX Specification UnixWare 2.1.1 contains significant X/Open(R) Single UNIX(R) Specification capabilities and has been submitted to X/Open for branding as a Single UNIX Specification compliant product. We anticipate that X/Open will brand UnixWare 2.1.1 as compliant, but if any issues remain that X/Open does not grant wavers for, these items will be addressed via PTFs, or in UnixWare 2.1.2. The Single UNIX Specification environment provided with UnixWare 2.1.1 is optional. With the update211 package installed and the Single UNIX Specification enabled, your system should fulfill the requirements of a Single UNIX Specification compliant product. Applications developed in this environment are portable to a wide range of UNIX systems. For more information about the UnixWare 2.1.1 Single UNIX Specification and how to enable it, see "Appendix C: Single UNIX Specification." 2. Preparing for Installation 2.1 UnixWare Version You must have UnixWare 2.1 installed on your system before installing update211, but you can use drivers from hba211 and nic211 to support a new installation of UnixWare 2.1. 2.2 Add-On Packages The update contains incremental modifications to the base products as well as to optionally installable UnixWare add-on packages. Add-on packages intended for update by the update211 package can only be updated if the add-on package is installed prior to the update. NOTE: If the Advanced Commands (cmds) package is not already on your system and you want ksh-93 or the Single UNIX Specification environment, you must install it before applying update211. The following is a list of add-on packages updated by update211: Advanced Commands (cmds) Base System (base) BSD Compatibility (bsdcompat) C++ Compilation System (C++) Compaq Support Utilities (compaq) Desktop Manager (desktop) Enhanced Application Compatibility (acp) Graphics Utilities (dtxt) Internet Utilities (inet) Kernel Debugger (kdb) Language Supplement (ls) Motif Development Package (mdev) Network Support Utilities (nsu) NetWare UNIX Client (nuc) Optimizing C Compilation System (ccs) OS Multiprocessor Support (osmp) Server Utilities (server) Traditional Manual Pages (manpages) UnixWare 2.1 NetWare Services (nwsrvr) UnixWare 2.1 Japanese NetWare Services (nwsrvrJ) VERITAS File System (vxfs) If you install any of these packages after installing update211, you should reinstall update211 to pick up the latest enhancements and fixes for the add-on package. 2.2.1 Encryption Utilities NOTE: This information is applicable for U.S. and Canadian customers only. There is a collision between update211 and the Encryption Utilities (crypt) add-on package. If you want to run the Encryption Utilities on your UnixWare Update 2.1.1 system, please call SCO at (800) SCO- UNIX and request the UnixWare Encryption Utilities Update 2.1.1. When you install the UnixWare Encryption Utilities Update 2.1.1, update211 must already be installed on your system. The UnixWare Encryption Utilities Update 2.1.1 needs to be installed immediately after you install update211. 2.3 Backups for Selected Files During the update211 package installation, you are offered an option to back up selected files. If you choose this option, the files that will be modified by the update211 package are identified and backed up to the media you specify before proceeding with the installation. This backup allows you to remove the update211 package and restore the system to its previous state, if desired. We strongly recommend performing a backup. The amount of free disk space that is required for the backup depends on the software that you currently have installed on your system (UnixWare 2.1 and add-ons). By default, the files are stored on your hard disk in /var/sadm/bkup/update211, but to save space on your hard disk, you may choose to save the backup on either diskettes or tape. 2.4 Downloading from an FTP Server You can download part or all of UnixWare 2.1.1 from an FTP server. To download UnixWare 2.1.1 packages and images: 1. Log in to the FTP server as an anonymous user and provide your email address when prompted for a password: ftp ftp.sco.com name: anonymous Password: your email address 2. Set ftp binary mode: binary 3. Change to the UW21 directory: cd UW21/upd211 4. Download the files you want: get upd211.pt1 # part 1 of update211 package get upd211.pt2 # part 2 of update211 package get upd211.pt* # if there are more than 2 parts to # the update211 package, download # them as well get hba211.img # image of the hba211 packages get nic211.img # image of nic211 drivers get upd211.txt # File containing chksum information get eng211.txt # English version of these notes get fr211.txt # French version of these notes get de211.txt # German version of these notes get it211.txt # Italian version of these notes get es211.txt # Spanish version of these notes get ja211.txt # Japanese version of these notes If a file transfer fails, repeat the get command to retry the download. 5. Compare checksums of the downloaded files with the checksums given in the upd211.txt file to verify a successful download. 6. When you have downloaded all of the files you want, you can go to "Installation Instructions" for information about installing them. 2.5 Contents of the Update CD-ROM The update CD-ROM contains these directories and files: UW211 # highest level directory contains all # of the following: PKGS # contains update packages: update211 # directory contains update211 package hba211 # directory contains hba211 drivers with # a subdirectory for each driver package IMAGES # directory contains diskette images: # you can use these images to support a # new UnixWare 2.1 system with # UnixWare 2.1.1 HBA or NIC drivers nic211.img # image of nic211 drivers # use nic211.img to create an IHV diskette. hba211.img # image of hba211 drivers DOCS # directory with plain text documentation: eng211.txt # English version of these notes fr211.txt # French version of these notes de211.txt # German version of these notes it211.txt # Italian version of these notes es211.txt # Spanish version of these notes ja211.txt # Japanese version of these notes 3. Installation Instructions The update211 package and the hba211 packages can be installed from the command line using the pkgadd command. The nic211 packages must be installed from an IHV diskette using the Network Interface Card Configuration (niccfg) utility. All procedures should be performed in single-user mode as superuser. 3.1 Installing update211 To install update211 from CD-ROM using a pkgadd command: 1. Insert the UnixWare 2.1.1 Update CD-ROM into your CD-ROM drive and mount it: mount -Fcdfs -r /dev/cdrom/device_name mount_point For example: mount -Fcdfs -r /dev/cdrom/c1b0t510 /cdrom1 2. Issue a pkgadd command to install update211: pkgadd -d /cdrom1/UW211/PKGS update211 The package installation script prompts you from this point on. To install an update211 package downloaded from the FTP site: 1. If the upd211.pt files are not already on the system where you want to install update211, make them available there (via tape, FTP, NFS, etc.). 2. cat the upd211.pt files together and pipe them to pkgadd: cat upd211.pt* | pkgadd -d - The package installation script prompts you from this point on. When the installation is complete, the system is automatically rebooted. NOTE: During the update211 installation, you are offered an option to enable the Single UNIX Specification. You should only enable the Single UNIX Specification if you have a need for a conforming environment. NOTE: During the update211 installation, when the binaries are being loaded onto the system, the following message may appear: UX:pkginstall: WARNING: filename This message can be ignored. It is an information message displayed by pkginstall when a hard link is being broken. 3.2 Installing hba211 Drivers To install an hba211 package from CD-ROM using a pkgadd command: 1. Mount the CD-ROM as shown in the "Installing update211" procedure. 2. Issue a pkgadd command to install the HBA driver you want: pkgadd -d /cdrom1/UW211/PKGS/hba211 device_driver where device_driver is adsl, adss, c7xx, c8xx, ida, ide, iiop or flashpt. 3. Unmount and remove the CD-ROM umount mount_point 4. Reboot the system To install an hba211 image downloaded from the FTP site: 1. Create an HBA diskette from the downloaded image file The procedure for creating an HBA diskette is the same as shown for "Creating an IHV Diskette" below, but the input file should be hba211.img instead of nic211.img. 2. Insert the HBA diskette into the diskette drive, and issue a pkgadd command to install the HBA driver you want: pkgadd -d diskette1 device_driver where device_driver is adsl, adss, c7xx, c8xx, ida, ide, iiop or flashpt. 3. Reboot the system. 3.3 Installing nic211 Drivers The nic211 packages must be installed from an IHV diskette using the Network Interface Card Configuration (niccfg) utility. 3.3.1 Creating an IHV Diskette An IHV diskette is required when installing networking drivers. It is also useful if you want to install UnixWare 2.1.1 NIC drivers during a new UnixWare 2.1 installation. To create an nic211 IHV diskette from CD-ROM: 1. Insert a UNIX formatted 1.44 MB diskette into diskette drive 1. You can format the diskette using: format /dev/rdsk/f03ht 2. Insert the CD-ROM into CD-ROM drive 1 and mount the drive by typing: mount -rF cdfs /dev/cdrom/device_name /mount_point where device_name is the CD-ROM device name, and mount_point is the mount point. 3. Copy the nic211 image from the CD-ROM to a diskette: dd if=/mount_point/UW211/IMAGES/nic211.img of=/dev/rdsk/f0t obs=36b NOTE: The above command is broken across two lines for display purposes only. You should issue the command on a single command line. 4. Unmount the CD-ROM drive by typing: umount /mount_point 5. Remove the diskette and label it. To create an nic211 IHV diskette from an image downloaded from the FTP site: 1. Insert a UNIX formatted 1.44MB diskette into diskette drive 1. 2. Copy the nic211 image from the CD-ROM to a diskette: dd if=/pathname/nic211.img of=/dev/rdsk/f0t bs=32b where pathname is the full path name of the directory that contains the image. 3.3.2 Using niccfg To install the nic211 drivers, invoke niccfg, choose the "Install Driver From IHV Diskette" option on the Summary Screen, and follow the online instructions. Instructions for using the niccfg utility are given in the UnixWare 2.1 Installation Handbook: For general information, see the section, "Configuring Network Interface Cards" in "Appendix E: Setting Up and Configuring Hardware." Specifically, see the "Installing a New or Updated Driver from Diskette" section. 4. After Installation This section provides information about removing update packages or images, and installing or removing add-on packages. All procedures should be performed in single-user mode as superuser. 4.1 Removing Update Packages You can remove an update211 or hba211 package using the pkgrm command. For example, to remove the update211 package using the pkgrm command: pkgrm update211 The package installation script prompts you from this point on. If there are package dependencies that prevent you from removing a package, they are identified when you attempt to remove the package. You must first remove all dependent packages before you can successfully remove one of the UnixWare 2.1.1 packages. The nic211 drivers can only be removed using the Network Interface Card Configuration (niccfg) utility. Instructions for using the niccfg utility are given in the UnixWare 2.1 Installation Handbook.: See the section, "Configuring Network Interface Cards" in "Appendix E: Setting Up and Configuring Hardware." 4.2 Installing Add-on Packages There is no need to remove update211 before adding an add-on package. If you install the update211 package, and then later install an add-on package, you should reinstall update211 so that you pick up the latest enhancements and fixes for the add-on package. This is known as an overlay installation. The update211 installation procedure offers an option to back up files before they are modified during installation. In the case of an overlay installation, the files from the add-on packages to be modified are backed up. We recommend that you always back up the files before you install or reinstall update211. 4.3 Removing Add-on Packages To remove an add-on package that has been modified by update211, the recommended procedure is: 1. Remove the update211 package. 2. Remove the add-on package. 3. Reinstall the update211 package. If you attempt to remove the add-on package without removing update211 first, the add-on package is not fully removed. 5. Appendix A: Enhancements and Fixes This Appendix provides information about PTFs, gives general descriptions of enhancements and fixes, and lists new and updated drivers. 5.1 Important Information About PTFs You may already have PTFs installed on your system. Do not attempt to re-apply any of them after you have installed UnixWare 2.1.1. After you install UnixWare 2.1.1, the PTFs which are currently installed on your system are still reported if you issue a pkginfo command, even though the enhancements and fixes on in UnixWare 2.1.1 may supersede them. The installation procedure "locks down" the PTFs if they already exist on your system. You cannot remove them. This ensures that files which were installed and edited by the PTFs, and subsequently modified by update211, hba211 or nic211, are not disturbed. 5.2 Enhancements in the update211 Package UnixWare 2.1.1 includes fixes and enhancements resulting from Modification Requests (MRs) and Program Temporary Fixes (PTFs) The PTFs included in update211 are: ptf2100 smtp and popper e-mail Fixes ptf2165 lp cmd Patch ptf2202 Floppy Driver Patch ptf2211 Patch for cpp -D and -U Options ptf2223 sysdump Fix for MP Systems ptf2230 Patch for m320 Mouse Driver ptf2236 Motif Library Patch (CR 7982) ptf2240 Libthread Patch ptf2243 Year 2000+ Update ptf2248 MediaMgr Restore Selects Correct Number of Files ptf2255 Streams Driver Update ptf2261 SCSI Tape Driver Update ptf3004 NWS Kernel Tunable ptf3005 Netmgt Shared Memory Corruption ptf3006 Motif Runtime and Composite Graphics Libraries ptf3008 Libthread Patch ptf3011 English Locales for NUC ptf3014 Video Driver Update ptf3026 Floppy Driver Patch ptf3028 Performance Enhancements for UnixWare 2.1 ptf3034 Streams Driver Update ptf3037 Patch for m320 Mouse Driver ptf3039 MAKE and AR Accept Longer Lines and File Names ptf3040 pkgremove Fix for ABI Compliance of UnixWare 2.1 ptf3043 cp/mv/ln fix for Corruption and System Slow Down ptf3063 Correct Security Problem with setgid bit The sections that follow provide general descriptions of the PTFs and MRs included in update211. 5.2.1 C and C++ Compilers assembler: Lock prefix instructions generate correct code. C++ preprocessor: An enhancement was made for preprocessing of multiply included header files. C Library: The fpsetmask() library routine was updated to clear any FPE sticky bits corresponding to any floating point exceptions being enabled. getpwuid(): getpwuid() routine calls to realloc() correctly reset any stale FILE* pointers. make: The size of the input and output buffers were increased to allow for long input lines. preprocessor: The old standalone C preprocessor (/lib/cpp) is enhanced to allow any number of -D or -U command line options. acomp/optim: Various optimization improvements were made including: 1. a fix to zero/sign extension in certain assignment statements. 2. special case handling in optimizations of while loops involving operands of call instructions which are indirect through a stack location. 3. certain loop optimization initializations were improved. 4. a fix was made to Pentium-Pro specific peephole optimization which incorrectly included memory source operands. 5. preprocessing of strings literals containing end-of-instruction tokens. 6. a fix to "cmpl" to "test" instruction conversions when the first operand is a register operand. profiler: The line profiling routines were improved so that a program that was linked using the line profiling option (-p), but in which none of the object modules or shared objects were compiled for profiling, still produces valid profiling data (that is, a mon.out file). Run-time Dynamic Linker (rtld): A update was made to the cleanup routines of the run-time linker to better cleanup the link-map list after a failure to find a file on a program's NEEDED list. 5.2.2 Performance System performance under multiuser workloads is improved. Performance of the AIM Suite VII Shared Multiuser workload is also improved. Two new tunables are provided: PAGEOUTRATE, to control the system pageout daemon; and PRIV_L1_SIZE, which specifies the minimum size of a process which gets a private level 1 page table to improve performance for large processes. The Veritas File System modules were enhanced to improve the performance of random access file writes under heavy memory load The async I/O driver works with any underlying device driver. Performance improvements speed up system calls and disk I/O. Kernel tunables are reset to standard default values for systems that are not supporting NetWare Services. For systems that do support NetWare Services, a postinstall script automatically retunes the system for optimal efficiency. If you install NetWare Services after installing update211, you must reinstall update211 to tune your system correctly. 5.2.3 Kernel kdb flow control is improved. The streams driver routines handle service routines better under heavy load. Streams unlink has been enhanced. Asynchronous connect() correctly maintains the socket library state. Kernel memory mapping of shared libraries in conjunction with NetScape is improved. A hangup condition on a multiplexed stream is handled correctly. A UnixWare security feature was improved. 5.2.4 Commands The lp command retains -o and -y options when used with -H hold and -H resume. The cp command was updated to improve performance and preserve sanity for large files (over 70MB). The pkgremove binary deals appropriately with files that are shared between packages. Intelligent space allocation was implemented for object file names to enhance ar. A number of updates were made to ensure that dates for the year 2000 and beyond are set, interpreted, scheduled and displayed correctly. The kill command deals correctly with zombie processes. ASCII to EBCDIC and EBCDIC to ASCII conversions work properly. 5.2.5 SMTP and Mail A number of smtp enhancements were made, and popper was modified to work correctly with pop3 clients. 5.2.6 Networking An updated library, libnwu, has been provided to correct a problem where shared memory corruption sometimes occurred when issuing the command nwcm -s nwum=on. Required links and copies are created to properly support NUC for Australia, Canada, Ireland and New Zealand locales. Internal inconsistencies between UnixWare 2.1 and the localized Japanese UnixWare 2.1 products have been resolved. 5.2.7 Desktop The desktop media manager correctly selects files during a restore. The media manager was updated to eliminate a condition where the desktop occasionally suspends when accessing a diskette drive. When using the desktop to set up an install server, an appropriate installsrv command is created to copy media. 5.2.8 Motif (X) New Motif runtime libraries (libXm.a and libXm.so) and a new composite graphics library (druntime.so.1) are provided to improve Oracle Development 2000 performance. 5.2.9 Video Drivers There is a new driver for ATI MACH64 based ISA video cards and an updated driver for ETW32p. NOTE: The new ATI MACH64 driver provides support for newer ATI cards, but does not include support for some older ATI adapters. Select the new driver only if your current driver does not support your adapter. The data file for Display Setup and setvideomode were updated to include support for the ETW32p chipset, and corrections for MACH64 ISA video cards. The Display Setup program properly installs setup scripts for all supported cards. 5.2.10 Hardware Support The floppy driver ensures that diskettes format properly, and performance improvements were made for operations to and from diskettes with a 1:1 interleave. The SCSI tape drive driver (st01) properly reports tape unload conditions and tape drive errors. Systems that use PCI cards with high memory ranges reboot properly. The Compaq wellness driver (cpqw) has been enhanced. Occasional erratic mouse behavior has been trapped. 5.2.11 Multiprocessor Systems Updated libthread.so and libthreadT.so files are provided to better administer timer requests for multiplexed threads. The kernel on MP systems supports sysdump and reboots appropriately. 5.3 Enhancements in the hba211 Packages The hba211 packages provide a new driver for BusLogic, flashpt, and updated versions of the following device drivers: adsl adss c7xx c8xx ida ide (was previously in the base package) iiop Each device driver is an individual package which can be added using the pkgadd command, and most can be removed using the pkgrm command. You can also create an HBA diskette to support a new UnixWare 2.1 installation. If you are performing a new UnixWare 2.1 installation, but need both UnixWare 2.1 and UnixWare 2.1.1 HBA drivers, install the UnixWare 2.1.1 HBA driver(s) first, and then install the driver(s) from the UnixWare 2.1 HBA. The first installed version of a driver becomes the active driver. NOTE: To provide additional hardware support during a UnixWare 2.1 installation, the UnixWare 2.1.1 ide driver is included with the hba211 packages instead of the update211 package. If you install the UnixWare 2.1.1 ide device driver on your system, you cannot go back to the UnixWare 2.1 ide device driver unless you reinstall your UnixWare 2.1 system. NOTE: Enhancements are provided for the Compaq ida_menu diagnostic utilities. Therefore: -- If you install a UnixWare 2.1 system using the UnixWare 2.1.1 ida driver, and then add the compaq package, you must reinstall the UnixWare 2.1.1 ida device driver. -- If the compaq package is already installed on your UnixWare 2.1 system, and you install update211, you should then install the UnixWare 2.1.1 ida driver. The following PTFs provided enhancements and fixes for these device drivers: ptf2215 adss Patch for Fixing Driver Hang on MP System ptf2193 HBA with Siemens C7XX SCSI Controller ptf2228 ATAPI Upgrade for IDE Driver ptf3003 ADSL HBA Driver patch ptf3007 Updated ADSL Driver ptf3009 Updated ATAPI Driver 5.4 Enhancements on the nic211 Image The nic211 image provides updated versions of the following drivers: SMC smpw0 SMC SMC8K Compaq netflex2 NOTE: If you want to reinstall your UnixWare 2.1 networking device drivers after installing the nic211 package, you must first reinstall the UnixWare 2.1 NIC package. The following PTF provided enhancements and fixes: ptf2047 SMC8K Driver Update 6. Appendix B: Compatibility This appendix contains information about source code, command and utility, sockets and ksh-93 compatibility. 6.1 Source Code Compatibility The following is applicable for any system that has update211 installed, regardless of whether the Single UNIX Specification is enabled. Many header file changes were required to comply with the X/Open Single UNIX Specification. Many of these changes add new symbols and restrictions on the namespace. The symbols added for alignment to the specification are, by default, made visible when the header file is included. Compilation errors may be encountered if symbols in the header files conflict with symbols already declared in your source code. Many of these conflicting identifiers are function declarations that did not exist before, or function declaration parameter types that were changed to conform with the Single UNIX Specification (for example, char * to void *). Below are some examples of the more common conflicts you may encounter during source recompilation. 1. The random function external declaration was added to stdlib.h. An error occurs if this function is already declared locally. Often it is sufficient to use the function declared in stdlib.h and remove the local declaration. 2. In some cases, new identifiers in a header file require the local declaration of the identifier and all references to it to be renamed. 3. The declaration for mmap() in /usr/include/sys/mman.h was changed from 'caddr_t' to a 'void *' This may cause the following error if mmap() is declared locally: identifier redeclared: mmap. The proposed resolution is to remove the local declaration of mmap(). 4. The following fields of iovec_t in /usr/include/sys/uio.h are redefined: caddr_t iov_base to void *iov_base int iov_len to size_t iov_len The change to iov_base causes failures when arithmetic operations are performed on it without casting it to a data type that can be used in arithmetic operation. 5. The member names of the internal FILE structure defined in stdio.h have changed to begin with a leading double underscore. Any application that directly references these members instead of using the standard I/O interfaces that are supplied in the Standard C Library result in a compilation error. Some of the new header files are from the BSD Compatibility package (bsdcompat). Traditionally, these header files have been located in /usr/ucbinclude. These now are included in /usr/include as part of the standard header file distribution. These files are: /usr/ucbinclude/ndbm.h and /usr/ucbinclude/strings.h. The putmsg streams system call returns ENXIO when a hangup is generated downstream. This behavior is different from UnixWare 2.1 where EIO was generated. EIO is only generated now if the file descriptor, fd, refers to a streams-based pipe, and the other end of the pipe is closed. This behavior is the same as the EPIPE error condition. 6.2 Commands and Utilities The following is applicable for any system that has update211 installed, regardless of whether the Single UNIX Specification is enabled. "--" operand delimiter: Standard utilities that accept a list of operands use "--" to terminate the list, allowing portable applications to distinguish the operand list from any additional options a particular implementation may support. See XCU, section 1.9 "Utility Description Defaults." Examples of utilities using "--" as a delimiter are: dirname, pack, unpack, nohup, od, pg, printf, spell, strings, xargs. patch: The patch utility now exits with exit status 1 if any rejections occur. The previous version exited with the number of rejections. strings: The strings utility previously exited after encountering a file access error. Now, it continues processing the subsequent file(s) instead of exiting immediately. xargs: Exit status values have changed. The command exits with 127 if the utility on the command line could not be found, and with 126 if it could be found, but not executed. The previous version exited with status 1 in both cases. rm: User input is required where none was needed before. Using -r to remove a write protected directory when stdin is a terminal and -f is not specified, you are prompted to confirm that the directory and its contents should be removed. Using -ri prompts twice before removing the directory, even if it is empty. awk: The value of $0 within the END block has changed. Instead of being empty, it now retains the value of the last input record. Previously, within an END block, print $0 would behave the same as a print statement by itself and print a blank line. Because $0 now contains the contents of the last input line within the END block, applications must use print "" instead of using a print statement by itself to print a blank line. Also, the awk close function was changed to return a value indicating success or failure. An undocumented feature of the previous awk was that a call to close did not require parenthesis to be effective. Now, a "call" to close, without parenthesis, silently has no effect because it is not a true function call. This can cause old awk scripts to run out of file descriptors. sed: The way that sed's "l" command displays non-printable characters was changed to match the POSIX.2 standards. Specifically, these characters are displayed using escape sequences like those in the ANSI C standard (\t for tab, and so on), falling back on three octal digits for others (for example, \001 for ASCII control-A). crontab: For Single UNIX Specification compliance, cron must execute crontab and at jobs with the POSIX-2 shell. Since /usr/bin/sh is not the POSIX-2 shell, cron was changed to use a different shell for certain users. The user's shell from /etc/passwd is used provided that shell ends in sh. Otherwise it uses /usr/bin/sh. 6.3 Sockets The update211 package includes a POSIX-2 compliant version of the sockets library. This library (/usr/lib/libsocket.so.2) is provided in addition to the sockets library originally delivered with UnixWare 2.1 (/usr/lib/libsocket.so.1). For an application to take advantage of the standard API and enhanced capabilities of the POSIX-2 socket library, the application must be linked with the POSIX-2 library. The command line: c89 -o foo foo.c -l xnet -l c causes the compilation system to compile the source file foo.c and link the resulting object file with the POSIX-2 library. Note that you cannot link new applications to use libsocket.so.1. Using cc . . . -l socket . . . will link libsocket.so.2. The following list describes the major differences between POSIX-2 and UnixWare 2.1 sockets. See the X/Open System Interface Definition, Issue 4 Version 2 for more detail. 1. Error Handling: A number of new errors have been added and some existing error checks have been rearranged. In some cases, different errno values than the ones used by the UnixWare 2,1 library are set by the POSIX-2 library for the same condition. 2. Socket Options: The Transport Provider interface has been changed to allow setting options in the TS_UNBND and TS_DATA_XFER (not just in the TS_IDLE) state. 3. Address Length: The computation of address lengths for UNIX domain sockets was changed to yield the actual length of path names, not the maximum length. 4. Nonblocking Sockets: Connection attempts on nonblocking UNIX domain sockets continue to set errno to EINPROGRESS, but now they also go on to complete the connection. 5. MSG_WAITALL Flag: The new MSG_WAITALL flag is supported in the receive functions (recv, recvfrom, and recvmsg). These calls now block until the receive buffer is full. 6. System Calls: The following system calls now go through the POSIX-2 sockets library so that behavior specific to sockets can be provided: close, fstat, lseek, read, readv, write, and writev. 6.4 ksh-93 vs. ksh-88 The following is applicable only if you use ksh-93 or have the Single UNIX Specification enabled. There are some minor incompatibilities between ksh-93 and ksh-88, which are documented in this section. Cases that are clearly bugs in ksh-88, and features that are completely upward compatible, are not included. 1. Functions, defined with name() with ksh-93 are compatible with the POSIX standard, not with ksh-88. No local variables are permitted, and there is no separate scope. Functions defined with the function name syntax maintain compatibility. Function traces are also affected. 2. ! is now a reserved word. As a result, any command by that name no longer works with ksh-93. 3. The -x attribute of alias and typeset -f is no longer effective, and the ENV file is only read for interactive shells. You need to use FPATH to make function definitions visible to scripts. 4. A built-in command named command has been added that is always found before the PATH search. Any script which uses this name as the name of a command (or function) is not compatible. 5. The output format for some built-ins has changed: set, typeset and alias now have single quotes around values that have special characters. The output for trap, without arguments, has a format that can be used as input. 6. With ksh-88, a dollar sign followed by a single quote ($') was interpreted literally. Now it is an ANSI-C string. You must quote the dollar sign to get the previous behavior. Also, a $ in front of a double-quote ($") indicates that the string needs to be translated for locales other than C or POSIX. The $ is ignored in the C and POSIX locale. 7. With ksh-88, tilde expansion did not take place inside ${...}. With ksh-93, ${foo-~} causes tilde expansion if foo is not set. You need to escape the ~ for the previous behavior. 8. Some changes in the tokenizing rules were made that might cause some scripts with previously ambiguous use of quoting to produce syntax errors. 9. Programs that rely on specific exit values for the shell (rather than 0 or non-zero) may not be compatible. The exit status for many shell failures has been changed. 10. Built-ins in ksh-88 were always executed before looking for the command in the PATH variable. This is no longer true. Thus, with ksh-93, if you have the current directory first in your PATH, and you have a program named test in your directory, it is executed when you type test; the built-in version is run at the point /bin is found in your PATH. 11. Some undocumented combinations of argument passing to ksh builtins no longer work because ksh-93 is getopts conforming with respect to its built-ins. For example, typeset -8I previously would work as a synonym for typeset -i8. 12. Command substitution and arithmetic expansion are now performed on PS1, PS3, and ENV when they are expanded. Thus, ` and $( as part of the value of these variables must be preceded by a \ to preserve their previous behavior. 13. The ERRNO variable has been dropped. 14. If the file name following a redirection symbol contains pattern characters they are only expanded for interactive shells. 15. The arguments to a dot script are restored when it completes. 16. The list of tracked aliases is not displayed by alias unless the -t option is specified. 17. The POSIX standard requires that test "$arg" have an exit status of 0, if and only if $arg is null. However, since this breaks programs that use test -t, ksh93 treats an explicit test -t as if the user had entered test -t 1. 18. The ^T directive of emacs mode has been changed to work the way it does in gnu-emacs. 19. ksh-88 allowed unbalanced parentheses within ${name op val} whereas ksh-93 does not. Thus, ${foo-(} needs to be written as ${foo-\(} which works with both versions. 20. kill -l in ksh-93 lists only the signal names, not their numerical values. 21. Local variables defined by typeset are statically scoped in ksh93. In ksh88 they were dynamically scoped, although this behavior was never documented. 22. To conform to the POSIX standard, the value of the variable given to getopts is set to "?" when the end-of-options is reached. 7. Appendix C: Single UNIX Specification The following sections provide information about the Single UNIX Specification, it's shell, compilation environment and manual pages. Procedures are also given for enabling or disabling the Single UNIX Specification. 7.1 The Specification The Single UNIX Specification encompasses five X/Open Common Applications Environment specifications: -- System Interface Definitions, Issue 4, Version 2 (XBD) -- System Interfaces and Headers, Issue 4, Version 2 (XSH) -- Commands and Utilities, Issue 4, Version 2 (XCU) -- Networking Services, Issue 4 -- X/Open Curses, Issue 4 NOTE: The development utilities in XCU are not required for the Single UNIX Specification brand. The utilities are supported by UnixWare, but they are not considered conformant in UnixWare 2.1.1. For an overview of the Single UNIX Specification, and information about its history and business implications, browse the X/Open web site at: http://www.xopen.org/public/tech/unix/index.htm 7.2 The POSIX-2 Shell (ksh-93) The Single UNIX Specification requires that a user's login shell must be a POSIX-2 compliant shell, and that it must be accessed as sh. The POSIX-2 compliant shell used is the 1993 version of the Korn shell (ksh-93 Version D) with SCO enhancements. ksh-93 provides many new and expanded capabilities including improvements for associative arrays, floating point arithmetic, internationalized messages, command and file completion, pattern matching and new builtins and reference variables. See "The New KornShell Command and Programming Language, "by Morris I. Bolsky and David G. Korn, Prentice Hall PTR, 1995 for information about ksh-93. If you have the manpages package installed, you can display the English manual page for ksh-93 by typing the following at the command line: man ksh93 NOTE: If you do not want to enable the Single UNIX Specification, you can still use ksh-93 by setting your login shell to /u95/bin/ksh93. In fact, using this shell satisfies many (but not all) of the runtime requirements for Single UNIX Specification conformance. To preserve UnixWare 2.1 compatibility for non-Single UNIX Specification users, ksh-88 continues to be available in /usr/bin/ksh. See "Appendix B: Compatibility," for differences between ksh-93 and the 1988 version of the Korn shell (ksh-88) which was provided in the cmds package for UnixWare 2.1. 7.3 Compliant Compilation Environment To use the Single UNIX Specification namespace of identifiers and prototypes in header files, the _XOPEN_SOURCE macro must be defined in each source file prior to including any header file. This exposes those definitions aligned with POSIX-1 and POSIX-2. In addition, the _XOPEN_SOURCE_EXTENDED macro must be defined to be "1" prior to inclusion of any headers. Use the c89 interface to the standard C compilation system. This utility allows you to take advantage of the standard API and the X/Open curses and POSIX-2 socket libraries. You can view the c89 manual page by using the man command. 7.4 X/Open Curses UnixWare 2.1.1 also provides the X/Open curses library. Although X/Open curses is not formally a part of the Single UNIX Specification, it is provided to assist software developers in migrating toward an anticipated specification. After installing update211 your system will have two curses libraries available, the UnixWare 2.1 version, and the new X/Open version. The version of curses provided with UnixWare 2.1 is still accessed in the same way. The new X/Open curses library can be linked in either of two ways: cc -o foo foo.c -l xcurses and use: # include # include Or: c89 -o foo foo.c -l curses and use: # include # include 7.5 Single UNIX Specification Manual Pages Over 100 manual pages have been created or revised to reflect changes due to the Single UNIX Specification, and they are included with update211. The new manual pages overlay existing pages with the same name in the manpages package, but contain information for both Single UNIX Specification and non-Single UNIX Specification users. The English manual pages are available using the man command. If the manpages package is not available on your current system and you want to be able to display these pages using the man command, you should install the manpages package before installing update211. The manpages package is available on your UnixWare 2.1 installation media. The Japanese manual pages are available as plain text and PostScript(R) files in /usr/share/jaman. 7.6 Enabling the Single UNIX Specification During Installation During the update211 installation, you are offered an option to enable the Single UNIX Specification (alternatively, you can enable it later). Because this specification defines behavior that is sometimes different from that of previous UnixWare systems, you should review these notes carefully and understand the impact on your system before choosing this option. Generally, you should enable the Single UNIX Specification only if you have a need for a conforming environment. If you choose to enable the Single UNIX Specification during the installation, the RSTCHOWN tunable is turned on, /u95/bin/sh becomes the default shell, and new users added to the system are Single UNIX Specification compliant. NOTE: Although new users are compliant, you must manually specify the /u95/bin/sh shell for existing users who want to conform. See "Setting the Login Shell" for instructions. POSIX specifies two types of chown behavior and UnixWare supports both types, but turning on RSTCHOWN satisfies additional FIPS and XPG standards that mandate that a user cannot give ownership of files away. The installation script for update211 edits the file /etc/profile and makes two changes: the environment variable POSIX2 is set to "on," and /u95/bin is prepended to the PATH environment variable. The file /etc/profile is executed as part of the login sequence for all users whose login shell (the shell listed in /etc/passwd) is /u95/bin/sh. After installing update211, every Single UNIX Specification user has the above environment variables set as shown in their environment when they log in to the system. 7.7 Enabling the Single UNIX Specification After Installation If you did not enable the Single UNIX Specification during the update211 package installation, you can enable it after installation by performing the following steps: 1. Set the RSTCHOWN tunable to 1 2. Set the default shell as /u95/bin/sh 3. Set the login shell to /u95/bin/sh 4. Reboot the system 7.7.1 Setting RSTCHOWN To set the RSTCHOWN tunable to 1: 1. Double-click on the Admin_Tools icon in your UnixWare Desktop window. 2. Double-click on the System_Tuner icon. 3. Select File System Parameters. 4. Scroll to, and click on RSTCHOWN. 5. Move the gauge from 0 to 1 (all the way to the right), and click on OK. 6. Select No when asked if you want to rebuild the kernel now. 7. Click on OK when advised that the kernel will be rebuilt when the system is rebooted. 7.7.2 Setting the Default Shell To set the default shell: defadm useradd SHELL=/u95/bin/sh 7.7.3 Setting the Login Shell This procedure varies depending on whether you are setting the login shell for a new or existing user, and whether you are performing the task from the command line or the desktop. -- If you add a new user using the useradd command, /u95/bin/sh is used by default. No further action is necessary. -- Use the usermod command to set /u95/bin/sh for an existing user. For example: usermod -s /u95/bin/sh login NOTE: You need to do this for existing users even if you enabled the Single UNIX Specification during the update211 installation process. -- If you use User Setup from the desktop, select Show Other Options and specify the shell as /u95/bin/sh. This is necessary for both new and existing users when using the desktop. 7.8 Disabling the Single UNIX Specification To disable the Single UNIX Specification, perform the following steps: 1. Reset the RSTCHOWN tunable to 0 2. Reset the default shell as /usr/bin/sh or /usr/bin/ksh 3. Reset the user's login shell to /usr/bin/sh or /usr/bin/ksh 4. Reboot the system 7.8.1 Resetting RSTCHOWN Follow the "Setting RSTCHOWN" procedure, but move the gauge from 1 to 0. 7.8.2 Resetting the Default Shell To reset the default shell: defadm useradd SHELL=/usr/bin/sh NOTE: Use /usr/bin/ksh if you want to reset the default to the ksh-88 shell. 7.8.3 Resetting the Login Shell For each existing Single UNIX Specification user, use the usermod command to reset /usr/bin/sh or /usr/bin/ksh as their login shell. 8. Appendix D: Support 8.1 SCO Online Services Information When your success depends on having the right answers to product or technical questions, you can rely on SCO's online services 24 hours a day, 7 days a week. SCO provides these services to all SCO customers: -- SCO's World Wide Web (WWW) -- SCO's Online Support (SOS) system -- SCOFORUM on CompuServe -- Anonymous FTP -- Anonymous uucp -- Ftpmail -- InfoFax 8.2 World Wide Web (WWW) SCO's World Wide Web contains the following: -- About SCO -- Press releases -- What's New -- Third Party Information -- Datasheets on SCO products and services -- Schedules for SCO Technical Training classes -- Searchable Technical Articles database -- Access to SCO's supplementary software distributions Availability: 24 hours a day, 7 days a week Required software or hardware to access: -- Internet browser such as SCO Global Access or Mosaic; -- Internet connection URL: http://www.sco.com 8.3 SCO's Online Support (SOS) system SOS is a menu driven BBS program that provides a character-based, front end interface for ease of use -- any command is just a few keystrokes away. SCO's Online Support (SOS) system contains: -- About SCO -- Press releases -- What's New -- Searchable technical articles database -- Third Party Information -- Datasheets on SCO products and services -- Schedules for SCO Technical Training classes -- Access to SCO's supplementary software distributions NOTE: To download these supplements the third party communications package being used must support XMODEM, YMODEM, ZMODEM or kermit transfer protocols. Availability: 24 hours, 7 days a week Required software or hardware to access: -- Terminal and modem; -- Computer, modem, and a third party communications package; -- cu(1C) command (for SCO XENIX/UNIX systems) Phone numbers: v.32, v.32bis 8@ +408 426-9495 Telebit Trailblazer 1@ +408 426-9525 Internet access via telnet: telnet sos.sco.com 8.4 SCOFORUM On CompuServe An extensive set of ongoing CompuServe forums and technical information is available about SCO in the SCOFORUM area of CompuServe. Availability: 24 hours, 7 days a week Required software or hardware to access: CompuServe Account For more information on acquiring a CompuServe account call CompuServe at +800 848-8199. Access Information: Log onto CompuServe and type GO SCOFORUM 8.5 Anonymous FTP SCO's anonymous ftp site provides access to SCO's supplementary software distributions NOTE: For further information on what is available in each of the supplementary software distributions, download the "README" file located in ftp's root directory. Availability: 24 hours, 7 days a week Required software or hardware to access: FTP program; Internet connection NOTE: The ftpd that runs on the machine at ftp.sco.com requires that your Domain Name Server be registered with the Internet. Access Information: 1. ftp ftp.sco.com 2. Log in as the user "anonymous" 3. Use your e-mail address as the password 8.6 Anonymous UUCP If UUCP is configured, you can access the sosco (US) or scolon (UK) machines to download the supplementary distribution files located in the /usr/spool/uucppublic directory. An example entry for accessing sosco via UUCP is located in the /usr/lib/uucp/Systems file on the local machine. SCO's anonymous UUCP site provides access to SCO's supplementary software distributions. NOTE: For further information on what is available in each of the supplementary software distributions, download the /usr/spool/uucppublic/README file via UUCP. Availability: 24 hours a day, 7 days a week Required software and hardware to access: -- UUCP installed and configured -- modem Phone numbers: For Canada, USA, Pacific Rim, Asia and Latin America: v.32, v.32bis 5@ +408 425-3502 Telebit Trailblazer 1@ +408 429-1786 Machine name: sosco Login name: uusls (note the fourth character is the letter "l") No password For Europe/Middle East/Africa: v.32 +44 (0) 1923 222681 Dowty Trailblazer +44 (0) 1923 210911 Machine name: scolon Login name: uusls (note the fourth character is the letter "l") Password: bbsuucp 8.7 Ftpmail Ftpmail is an automated e-mail service that acts as a gateway between electronic mail and FTP, executing FTP commands received by e-mail, and sending back the requested files to the user by e-mail. Availability: 24 hours a day, 7 days a week Required software and hardware to access: Electronic E-MAIL package Send mail to: ftpmail@sco.com Leave the subject line blank. One-line message of: help 8.8 InfoFax InfoFax is an unattended FAX-back service. InfoFax contains copies of the most commonly requested technical articles, educational offerings and product information. Availability: 24 hours a day, 7 days a week Required software or hardware to access: -- A touch tone phone -- A FAX machine Phone: +408 427-6800 For a listing of available articles, request article 1000. September 1996 AJ40004P000