Linux Fast-STREAMS

Linux Fast-STREAMS Installation and Reference Manual

About This Manual

This is Edition 3, last updated 2005-09-14, of The Linux Fast-STREAMS Installation and Reference Manual, for Version 0.7a release 3 of the Linux Fast-STREAMS package.

Acknowledgements

As with most open source projects, this project would not have been possible without the valiant efforts and productive software fo the Free Software Foundation and the Linux Kernel Community.

Sponsors

Funding for completion of the Linux Fast-STREAMS package was provided in part by:

Additional funding for The OpenSS7 Project was provided by:

Contributors

The primary contributor to the OpenSS7 Linux Fast-STREAMS package is Brian F. G. Bidulock. The following is a list of significant contributors to The OpenSS7 Project:

1 Introduction

This manual documents the design, implementation, installation, operation and future development schedule of the Linux Fast-STREAMS package.

1.1 Notice

This package is released and distributed under the GNU General Public License (see GNU General Public License). Please note, however, that there are different licensing terms for the manual pages and some of the documentation (derived from X/Open publications and other sources). Consult the permission notices contained in the documentation for more information.

This document, is released under the GNU Free Documentation License (see Documentation License) with all sections invariant.

1.2 Overview

This manual documents the design, implementation, installation, operation and future development of the Linux Fast-STREAMS package.

1.3 Organization of this Document

This document is organized (loosely) into several sections as follows:

1.4 Conventions and Definitions

This manual uses texinfo typographic conventions.

2 Objective

Linux Fast-STREAMS is intended as a high-performance, production replacement for Linux STREAMS (LiS). Linux Fast-STREAMS has the following features in contrast to Linux STREAMS:


Linux Fast-STREAMS LiS

Provided and optimized for Linux. Maintains portability across Linux, User Space, QNX, DOS and other ports.

Promotes mainstream kernel adoption. Places portability concerns before mainstream kernel adoption.

Lindented and follows normal kernel formatting and coding practices. Non-lindented, does not follow normal kernel formatting and coding practices.

Provides compatibility modes for AIX, HPUX, OSF, Solaris, UnixWare, SVR 4.2 and LiS. Supports all major SVR 4.2 variants. Provides some compatibility interfaces but also many Linux-derived interfaces specific to LiS.

Licensed under GPL with commercial licensing available. Dubiously licensed under LGPL (yet parts are GPL).

Supports full SVR 4.2 ES/MP synchronization models. Supports only single, Linux derived sychronization models.

Runs at SoftIRQ. By running at SoftIRQ, Linux Fast-STREAMS ensures that its place within the scheduling network-based events is appropriate for the Linux kernel. Separate kernel threads.

Provides common SVR 4.2 system tunable parameters and system controls as well as /proc filesystem for support and debugging. Provides only log-based debugging.

Provides support for SVR 4.2 STREAMS and other utilities. Provides limited set of LiS only Linux-derived utilities.

Provides full named-streams device and device filesystem support. Provides only character-based node support.

3 Reference

3.1 Files

specfs.o

streams.o

streams-aixcompat.o

streams-hpuxcompat.o

streams-liscompat.o

streams-osfcompat.o

streams-suncompat.o

streams-svr4compat.o

streams-uw7compat.o

3.2 Drivers

The configuration of STREAMS drivers and modules is performed when compiling the Linux Fast-STREAMS subsystem. The STREAMS subsystem, core drivers and modules are part of every Linux Fast-STREAMS system.

The following sections list the core drivers and modules, STREAMS kernel tunable parameters, and STREAMS configuration information.

streams-clone.o ("clone")
Clone device driver.
streams-echo.o ("echo")
Echo (loopback) device driver.
streams-fifo.o ("fifo")
FIFO (Named Pipe) driver.
streams-log.o ("strlog")
STREAMS log driver.
streams-nsdev.o ("nsdev")
Named STREAMS device driver.
streams-nuls.o ("nuls")
Null stream driver.
streams-pipe.o ("pipe")
Pipe driver.
streams-sad.o ("sad")
STREAMS Administrative Driver.

3.3 Modules

The configuration of STREAMS drivers and modules is performed when compiling the Linux Fast-STREAMS subsystem. The STREAMS subsystem, core drivers and modules are part of every Linux Fast-STREAMS system.

The following sections list the core drivers and modules, STREAMS kernel tunable parameters, and STREAMS configuration information.

streams-connld.o ("connld")
Connld module.
streams-pipemod.o ("pipemod")
Pipe module.
streams-sc.o ("sc")
STREAMS configuration module.
streams-sth.o ("sth")
Stream Head module.

Additional modules are provided by add-on packages.

3.4 Libraries

3.5 Utilities

3.6 Development

For development using the streams package, See About This Manual.

4 Conformance

4.1 STREAMS Compatibility

Linux Fast-STREAMS provides some degree of compatibility with other STREAMS implementation as follows:

— SVR 4.2 ES/MP
Linux Fast-STREAMS provides some degree of operational compatibility with SVR 4.2 ES/MP to ease portability and common comprehension, see SVR 4.2 Compatibility.
— AIX 5L Version 5.1
Linux Fast-STREAMS provides some degree of operational compatibility with AIX 5L Version 5.1 to ease portability and common comprehension, see AIX Compatibility.
— HP-UX 11.0i v2
Linux Fast-STREAMS provides some degree of operational compatibility with HP-UX 11.0i v2 to ease portability and common comprehension, see HP-UX Compatibility.
— OSF/1 1.2/Digital UNIX/True 64
Linux Fast-STREAMS provides some degree of operational compatibility with OSF/1 1.2/Digital UNIX to ease portability and common comprehension, see OSF/1 Compatibility.
— UnixWare 7.1.3 (OpenUnix 8)
Linux Fast-STREAMS provides some degree of operational compatibility with UnixWare 7.1.3 (OpenUnix 8) to ease portability and common comprehension, see UnixWare Compatibility.
— Solaris 9/SunOS 5.9
Linux Fast-STREAMS provides some degree of operational compatibility with Solaris 9/SunOS 5.9 to ease portability and common comprehension, see Solaris Compatibility.
— SUPER-UX
Linux Fast-STREAMS provides some degree of operational compatibility with SUPER-UX to ease portability and common comprehension, see SUX Compatibility.
— UXP/V
Linux Fast-STREAMS provides some degree of operational compatibility with UXP/V to ease portability and common comprehension, see UXP Compatibility.
— LiS-2.16.18
Linux Fast-STREAMS provides some degree of operational compatibility with LiS 2.16 to ease portability and common comprehension, see LiS Compatibility.

For additional details, see About This Manual.

4.2 Porting

— SVR 4.2 ES/MP
Linux Fast-STREAMS provides compatibility functions for source level compatibility with SVR 4.2 ES/MP and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from SVR 4.2 MP.
— AIX 5L Version 5.1
Linux Fast-STREAMS provides compatibility functions for source level compatibility with AIX 5L Version 5.1 and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from AIX 5L Version 5.1.
— HP-UX 11.0i v2
Linux Fast-STREAMS provides compatibility functions for source level compatibility with HP-UX 11.0i v2 and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from HP-UX 11.0i v2.
— OSF/1 1.2/Digital UNIX/True 64
Linux Fast-STREAMS provides compatibility functions for source level compatibility with OSF/1 1.2/Digital UNIX/True 64 and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from OSF/1 1.2/Digital UNIX.
— UnixWare 7.1.3 (OpenUnix 8)
Linux Fast-STREAMS provides compatibility functions for source level compatibility with UnixWare 7.1.3 (OpenUnix 8) and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from UnixWare 7.1.3 (OpenUnix 8).
— Solaris 9/SunOS 5.9
Linux Fast-STREAMS provides compatibility functions for source level compatibility with Solaris 9/SunOS 5.9 and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from Solaris 9/SunOS 5.9.
— SUPER-UX
Linux Fast-STREAMS provides compatibility functions for source level compatibility with SUPER-UX and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from SUPER-UX.
— UXP/V
Linux Fast-STREAMS provides compatibility functions for source level compatibility with UXP/V and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from UXP/V.
— LiS-2.16.18
Linux Fast-STREAMS provides compatibility functions for source level compatibility with LiS-2.16.18 and to ease porting of modules and drivers to Linux Fast-STREAMS. Portability considerations are mantained in a separate manual: see Porting from Linux STREAMS (LiS) 2.16.18.

For additional details, see About This Manual.

5 Releases

This is the OpenSS7 Release of the Linux Fast-STREAMS core, tools, drivers and modules that implement the Linux Fast-STREAMS SVR 4.2 MP STREAMS utility for Linux. This package is intended as a replacement package for Linux STREAMS (LiS).

The following sections provide information on Linux Fast-STREAMS releases as well as compatibility information of OpenSS7 release to mainstream UNIX releases of the core, modules and drivers, as well as Linux kernel compatibility.

5.1 Prerequisites

Prerequisites for the Linux Fast-STREAMS package are as follows:

5.2 Compatibility

This section discusses compatibility with major prerequisites.

5.2.1 GNU/Linux Distributions

Linux Fast-STREAMS is compatible with the following Linux distributions:

When installing from the tarball (see Installing the Tar Ball), this distribution is probably compatible with a much broader array of distributions than those listed above. These are the distributions against which the current maintainer creates and tests builds.

5.2.2 Kernel

Linux Fast-STREAMS compiles as a Linux kernel module. It is not ncessary to patch the Linux kernel to use the package. At a later date, it is possible to move this package into the kernel.

Linux Fast-STREAMS is compatible with 2.4 kernel series after 2.4.10. It has been tested up to and including 2.6.10.

5.2.3 Linux STREAMS

Linux Fast-STREAMS provides a suitable replacement for the (now deprecated) Linux STREAMS (LiS) 2.18.0 package formerly maintained by Dave Goethe of GCOM.

5.2.4 Linux Fast-STREAMS

5.3 Release Notes

The sections that follow provide information on OpenSS7 releases of the
Linux Fast-STREAMS package.

5.3.1 Release streams-0.7a.3

Updated for Linux 2.6 kernels and associated mainline distributions.

5.3.2 Release streams-0.7a-2

Removed all XTI/TLI and Linux networking code, headers and documentation from streams distribution and set epoch at 0. Linux networking code has been migrated to the strxnet, strinet and strsctp packages. The purpose for doing this was to allow the Linux networking to build against Linux Fast-STREAMS as well as Linux STREAMS and is a preparation for phasing out LiS and phasing in LfS.

This was an internal alpha test release and was not released publicly.

5.3.3 Release streams-0.7a-1

This is the initial release of the Linux Fast-STREAMS package for Linux. This is intended as a high-performance, production replacement for Linux STREAMS (LiS). Linux Fast-STREAMS has the following features:

This was an internal alpha test release and was not released publicly.

5.4 Bugs

Linux Fast-STREAMS has many known bugs. These are alpha releases. Use at your own risk. Remember that there is NO WARRANTY.3

This software is alpha software. As such, it will likely crash your kernel. Installation of the software may irreparably mangle your header files or Linux distribution in such a way as to make it unusable. Crashes will likely lock your system and rebooting the system might not repair the problem. You can loose all the data on your system. Because this software can crash your kernel, the resulting unstable system could destroy computer hardware or peripherals making them unusable. You will likely void the warranty on any system on which you run this software. YOU HAVE BEEN WARNED.

5.5 Schedule

5.6 History

6 Installation

6.1 Downloading

The Linux Fast-STREAMS package releases can be downloaded from the downloads page of The OpenSS7 Project. The package is available as a binary RPM (for popular architectures) a source RPM, Debian binary DEB and source DSC, or as a tar ball. If you are using a browsable viewer, you can obtain the OpenSS7 release of streams from the links in the sections that follow.

By far the easiest form for installing and using streams-0.7a.3 is to download and install binary RPM. If a binary RPM is not available for your distribution, but your distribution supports RPM, the next best method for installing and using streams-0.7a.3 is to download and rebuild the source RPM. If your architecture does not support RPM at all, or you have special needs (such as cross-compiling for embedded targets), the final resort method is to download, configure, build and install from the source tarball.

6.1.1 Downloading the Binary RPM

To install from binary RPM, you will need several of the RPM for a complete installation. Binary RPM fall into several categories. To download and install a complete package requires the appropriate RPM from each of the several categories below.

To install from Binary RPM, you will need all of the following kernel indepdendent packages for your architecture, and one of the kernel-depdendent packages from the next section.

Independent RPM

Independent RPM are not dependent on the Linux kernel version. For example, the source package `streams-source-0.7a.3-1.7.x.noarch.rpm', is not dependent on kernel.

All of the following kernel independent RPM are required for your architecture. Binary RPMs listed here are for example only: additional binary RPMs are available from the downloads site. If your architecture is not available, you can build binary RPM from the source RPM (see see Building from the Source RPM).

Architecture Independent
streams-dev-0.7a.3-1.7.x.noarch.rpm
The streams-dev package contains the device definitions necessary to run applications programs developed for Linux Fast-STREAMS.4
streams-doc-0.7a.3-1.7.x.noarch.rpm
The streams-doc package contains this manual in plaintext, postscript, PDF and HTML forms, along with the meta-information from the streams package. It also contains all of the manual pages necessary for developing Linux Fast-STREAMS applications and Linux Fast-STREAMS STREAMS modules or drivers.
streams-init-0.7a.3-1.7.x.noarch.rpm
The streams-init package contains the init scripts and provides the postinst scripts necessary to create kernel module preloads and modules definitions for all kernel module `core' subpackages.
streams-source-0.7a.3-1.7.x.noarch.rpm
The streams-source package contains the source code necessary for building the Linux Fast-STREAMS release. It includes the autoconf configuration utilities necessary to create and distribute tarballs, rpms and deb/dscs.
Architecture Dependent
streams-devel-0.7a.3-1.7.x.i686.rpm
The streams-devel package contains library archives for static compilation, header files to develop Linux Fast-STREAMS modules and drivers. This also includes the header files and static libraries required to compile Linux Fast-STREAMS applications programs.
streams-lib-0.7a.3-1.7.x.i686.rpm
The streams-lib package contains the run-time shared libraries necessary to run application programs and utilities developed for the streams package.
streams-util-0.7a.3-1.7.x.i686.rpm
The streams-util package provides administrative and configuration test utilities and commands associated with the Linux Fast-STREAMS package.
Kernel-Dependent RPM

Kernel-Dependent RPM are dependent on specific Linux Kernel Binary RPM releases. Packages are provided for popular released RedHat kernels. Packages dependent upon RedHat or other kernel RPM will have the `_kversion' kernel package version in the package name.

One of the following Kernel-Dependent packages is required for your architecture and kernel version. If your architecture or kernel version is not on the list, you can build binary RPM from the source RPM (see see Building from the Source RPM).5

streams-core-2.4.20-28.7bigmem-0.7a.3-1.7.x.i686.rpm
The streams-core package contains the loadable kernel modules that depend only on the kernel. This package is heavily tied to the kernel for which it was compiled. This particular package applies to kernel version `2.4.20-28.7bigmem'.6
streams-info-2.4.20-28.7bigmem-0.7a.3-1.7.x.i686.rpm
The streams-info package7 contains the module symbol version information for the core subpackage, above. It is possible to load this subpackage and compile modules that use the exported symbols without loading the actual kernel modules (from the core subpackage above). This package is heavily tied to the kernel for which it was compiled. This particular package applies to kernel version `2.4.20-28.7bigmem'.8
Configuration and Installation

To configure, build and install the binary RPM, See Configuring the Binary RPM.

6.1.2 Downloading the Debian DEB

To install from binary DEB, you will need several of the DEB for a complete installation. Binary DEB fall into several categories. To download and install a complete package requires the appropriate DEB from each of the several categories below.

To install from Binary DEB, you will need all of the following kernel indepdendent packages for your architecture, and one of the kernel-depdendent packages from the next section.

Independent DEB

Independent DEB are not dependent on the Linux kernel version. For example, the source package `streams-source_0.7a.3-0_i386.deb', is not dependent on kernel.

All of the following kernel independent DEB are required for your architecture. Binary DEBs listed here are for example only: additional binary DEBs are available from the downloads site. If your architecture is not available, you can build binary DEB from the Debian DSC (see see Building from the Debian DSC).

Architecture Independent
streams-dev_0.7a.3-0_all.deb
The streams-dev package contains the device definitions necessary to run applications programs developed for Linux Fast-STREAMS. 9
streams-doc_0.7a.3-0_all.deb
The streams-doc package contains this manual in plaintext, postscript, PDF and HTML forms, along with the meta-information from the streams package. It also contains all of the manual pages necessary for developing Linux Fast-STREAMS applications and Linux Fast-STREAMS STREAMS modules or drivers.
streams-init_0.7a.3-0_all.deb
The streams-init package contains the init scripts and provides the postinst scripts necessary to create kernel module preloads and modules definitions for all kernel module `core' subpackages.
streams-source_0.7a.3-0_all.deb
The streams-source package contains the source code necessary for building the Linux Fast-STREAMS release. It includes the autoconf configuration utilities necessary to create and distribute tarballs, rpms and deb/dscs. !ignore 10 !end ignore
Architecture Dependent
streams-devel_0.7a.3-0_i386.deb
The streams-devel package contains library archives for static compilation, header files to develop Linux Fast-STREAMS modules and drivers. This also includes the header files and static libraries required to compile Linux Fast-STREAMS applications programs.
streams-lib_0.7a.3-0_i386.deb
The streams-lib package contains the run-time shared libraries necessary to run application programs and utilities developed for the streams package.
Kernel-Dependent DEB

Kernel-Dependent DEB are dependent on specific Linux Kernel Binary DEB releases. Packages are provided for popular released RedHat kernels. Packages dependent upon RedHat or other kernel DEB will have the `_kversion' kernel package version in the package name.

One of the following Kernel-Dependent packages is required for your architecture and kernel version. If your architecture or kernel version is not on the list, you can build binary DEB from the source DEB (see see Building from the Debian DSC).11

streams-core-2.4.20-28.7bigmem_0.7a.3-0_i386.deb
The streams-core package contains the loadable kernel modules that depend only on the kernel. This package is heavily tied to the kernel for which it was compiled. This particular package applies to kernel version `2.4.20-28.7bigmem'.12
streams-info-2.4.20-28.7bigmem_0.7a.3-0_i386.deb
The streams-info package13 contains the module symbol version information for the core subpackage, above. It is possible to load this subpackage and compile modules that use the exported symbols without loading the actual kernel modules (from the core subpackage above). This package is heavily tied to the kernel for which it was compiled. This particular package applies to kernel version `2.4.20-28.7bigmem'.14
Configuration and Installation

To configure, build and install the Debian DEB, See Configuring the Debian DEB.

6.1.3 Downloading the Source RPM

If you cannot obtain a binary RPM for your architecture, or would like to roll you own binary RPM, download the following source RPM.

streams-0.7a.3-1.src.rpm
This is the source RPM for the package. From this source RPM it is possible to build binary RPM for any supported architecture and for any 2.4 or 2.6 kernel.
Configuration

To configure the source RPM, See Configuring the Source RPM.

6.1.4 Downloading the Debian DSC

If you cannot obtain a binary DEB for your architecture, or would like to roll your own DEB, download the following Debian DSC.

streams_0.7a.3-0.dsc
streams_0.7a.3-0.tar.gz
This is the Debian DSC for the package. From this Debian DSC it is possible to build binary DEB for any supported architecture and for any 2.4 or 2.6 kernel.
Configuration

To configure the source RPM, See Configuring the Debian DSC.

6.1.5 Downloading the Tar Ball

For non-RPM architectures, such as NexusWare embedded target, download the tarball as follows:

streams-0.7a.3.tar.gz
streams-0.7a.3.tar.bz2
These are the tar balls for the release. These tar balls contain the autoconf distribution which includes all the source necessary for building and installing the package. These tarballs will even build Source RPM and Binary RPM on RPM architectures and Debian DSC and DEB on DPKG architectures.

The tar ball may be downloaded easily with wget as follows:

     

% wget http://www.openss7.org/streams-0.7a.3.tar.bz2

or

     

% wget http://www.openss7.org/streams-0.7a.3.tar.gz

Unpacking the Archive

After downloading one of the tar balls, unpack the archive using one of the following commands:

     

% wget http://www.openss7.org/streams-0.7a.3.tar.gz % tar -xzvf streams-0.7a.3.tar.gz

or

     

% wget http://www.openss7.org/streams-0.7a.3.tar.bz2 % tar -xjvf streams-0.7a.3.tar.bz2

Either will create a subdirectory name streams-0.7a.3 containing all of the files and subdirectories for the streams package.

Configuration

To configure and install the tar ball, See Configuring the Tar Ball.

6.1.6 Downloading from CVS

If you are a subscriber or sponsor of The OpenSS7 Project with CVS archive access privileges then you can download release or mid-release versions of the streams package from the project CVS archive.

The Linux Fast-STREAMS package is located in the streams subdirectory of /var/cvs. For release tag information, see Releases.

To access the archive from the project CVS pserver, use the following commands to check out a version from the archive:

     

% export CVSROOT='-d:pserver:username@cvs.openss7.com:2401/var/cvs' % cvs login Password: ********* % cvs co -r streams_0.7a.3 streams % cvs logout

It is, of course, possible to check out by date or by other criteria. For more information, see cvs(1).

Preparing the CVS Working Directory

Although public releases of the streams package do not require reconfiguration, creating a configurable directory from the CVS archive requires tools not normally distributed with the other releases.

The build host requires the following GNU tools:

It should be stressed that, in particular, the autoconf and automake must be at version releases 2.59 and 1.9. The versions normally distributed in mainstream GNU/Linux distributions are, in fact, much older than these versions.15 GNU version of these packages configured and installed to default directories will install in /usr/local/ allowing them to coexist with distribution installed versions.

In addition, the build host requires a complete tool chain for compiling for the target host, including kernel tools such as genksyms and others.

To generate a configuration script and the necessary scriptlets required by the GNU autoconf system, execute the following commands on the working directory:

     

% autoreconf -fiv streams

where, streams is the name of the directory to where the working copy was checked out under the previous step. This command generates the configure script and other missing pieces that are normally distributed with the release Tar Balls, SRPMs and DSCs.

Make sure that `autoreconf --version' returns `2.59'. Otherwise, you may need to perform something like the following:

     

% PATH="/usr/local/bin:$PATH" % autoreconf -fiv streams

After reconfiguring the directory, the package can then be configured and built using the same instructions as are used for the Tar Ball, see Configuring the Tar Ball, and Building from the Tar Ball.

Do note, however, that make will rebuild the documentation that is normally released with the package. Additional tools may be necessary for building the documentation.

When configuring the package in a working directory and while working a change-compile-test cycle that involves configuration macros or documentation, I find it of great advantage to invoke the GNU configure options --enable-maintainer-mode and --enable-dependency-tracking. The first of these two options will add maintainer-specific targets to any generated Makefile, and the later will invoke automatic dependency tracking within the Makefile so rebuilds after changes to macro, source or documentation files will be automatically rebuilt.

6.2 Configuration

6.2.1 Configuring the Binary RPM

In general the binary RPM do not require any configuration, however, during installation it is possible to relocate some of the installation directories. This allows some degree of customization. Relocations that are available on the binary RPM are as follows:

streams-core-2.4.20-28.7bigmem-0.7a.3-1.7.x.i686.rpm
/lib/modules/2.4.20-28.7bigmem
This relocatable directory contains the kernel modules that provide the streams core, drivers and modules.16

streams-info-2.4.20-28.7bigmem-0.7a.3-1.7.x.i686.rpm
/usr/include/streams/2.4.20-28.7bigmem
This relocatable directory contains the kernel module exported symbol information that allows other kernel modules to be compiled against the correct version of the streams package.17

streams-dev-0.7a.3-1.7.x.i686.rpm
(not relocatable)
streams-devel-0.7a.3-1.7.x.i686.rpm
/usr/lib
This relocatable directory contains streams libraries.
/usr/include/streams
This relocatable directory contains streams header files.

streams-doc-0.7a.3-1.7.x.i686.rpm
/usr/share/doc
This relocatable directory contains all package specific documentation (including this manual). The subdirectory in this directory is the streams-0.7a.3 directory.
/usr/share/info
This relocatable directory contains info files (including the info version of this manual).
/usr/share/man
This relocatable directory contains manual pages.

streams-lib-0.7a.3-1.7.x.i686.rpm
/usr/lib
This relocatable directory contains the run-time shared libraries necessary to run applications programs and utilities developed for Linux Fast-STREAMS.
/usr/share/locale
This relocatable directory contains the locale information for shared library files.

streams-source-0.7a.3-1.7.x.i686.rpm
/usr/src
This relocatable directory contains the source code.

streams-util-0.7a.3-1.7.x.i686.rpm
/usr/bin
This relocatable directory contains binary programs and utilities.
/usr/sbin
This relocatable directory contains system binary programs and utilities.
/usr/libexec
This relocatable directory contains test programs.
/etc
This relocatable directory contains init scripts and configuration information.
Installation

To install the binary RPM, See Installing the Binary RPM.

6.2.2 Configuring the Debian DEB

In general the binary DEB do not require any configuration.

Installation

To install the Debian DEB, See Installing the Debian DEB.

6.2.3 Configuring the Source RPM

When building from the source RPM (see Building from the Source RPM), the rebuild process uses a number of macros from the user's .rpmmacros file as described in rpm(8).

Following is an example of the ~/.rpmmacros file that I use for rebuilding RPMS:

     

# # RPM macros for building rpms # %_topdir /usr/src/openss7.rpms %vendor OpenSS7 Corporation %distribution OpenSS7 %disturl http://www.openss7.org/ %packager Brian Bidulock <bidulock@openss7.org> %url http://www.openss7.org/ %_signature gpg %_gpg_path /home/brian/.gnupg %_gpg_name openss7@openss7.org %_gpgbin /usr/bin/gpg %_source_payload w9.bzdio %_binary_payload w9.bzdio %_unpackaged_files_terminate_build 1 %_missing_doc_files_terminate_build 1 %_enable_debug_packages 1 # # Template for debug information sub-package. # with our little addition of release # %debug_package \ %ifnarch noarch\ %global __debug_package 1\ %package debug\ Summary: Debug information for package %{name}\ Group: Development/Debug\ AutoReqProv: 0\ %{?fullrelease:Release: %{fullrelease}}\ %description debug\ This package provides debug information for package %{name}.\ Debug information is useful when developing applications that use this\ package or when debugging this package.\ %files debug -f debugfiles.list\ %defattr(-,root,root)\ %endif\ %{nil}

When building from the source RPM (see Building from the Source RPM), it is possible to pass a number of additional configuration options to the rpmbuild process.

The additional configuration options are described below.

Note that distributions that use older versions of rpm do not have the `--with' or `--without' options defined. To acheive the same effect as:

     --with someparm=somearg

do:

     --define "_with_someparm --with-someparm=somearg"
--define "_kversion $PACKAGE_KVERSION"
Specifies the kernel version other than the running kernel for which to build. If _kversion is not defined when rebuilding, the environment variable PACKAGE_KVERSION is used. If the environment variable PACKAGE_KVERSION is not defined, then the version of the running kernel (i.e. discovered with `uname -r') is used as the target version for kernel-dependent packages. This option can also be defined in an .rpmspec file using the macro name `_kversion'.
--with checks
--without checks
Enable or disable preinstall checks. Each packages supports a number of preinstall checks that can be performed by invoking the `check' target with make. These currently consist of checking each kernel module for unresolved kernel symbols, checking for documentation for exported kernel module symbols, checking for documentation for exported library symbols, checking for standard options for build and installable programs, checking for documentation for built and installable programs. Normally these checks are only run in maintainer mode, but can be enabled and disabled with this option.
--with k-optimize=HOW
--without k-optimize
Specify `HOW' optimization, normal, size, speed or quick. size compiles kernel modules -Os, speed compiles kernel modules -O3, and quick compiles kernel modules -O0. The default is normal. Use with care.
--with cooked-manpages
--without cooked-manpages
Some systems do not like grefer references in manpages.18 This option will cook soelim, refer, tbl and pic commands from the manpages and also strip groff comments. The default is to leave manpages uncooked: they are actually smaller that way.
--with public
--without public
Release public packages or private packages. This option has no effect on the streams package. The default is to release public packages.
--with k-debug
--without k-debug
Specifies whether kernel debugging is to be performed on the build kernel modules. Mutually exclusive with test and safe below. This has the effect of removing static and inline attributes from functions and invoking all debugging macros in the code. The default is to not perform kernel debugging.
--with k-test
--without k-test
Specifies whether kernel testing is to be performed. Mutually exclusive with debug above and safe below. This has the effect of removing static and inline attributes from functions and invoking most debugging macros in the code. The default is to not perform kernel testing.
--with k-safe
--without k-safe
Specifies whether kernel saftey is to be performed. Mutually exclusive with debug and test above. This has the effect of invoking some more pedantic assertion macros in the code. The default is not to apply kernel safety.
--with k-inline
--without k-inline
Specifies whether kernel inline functions are to be place inline. This has the effect of adding the -finline-functions flag to CFLAGS for compiling kernel modules. Linux 2.4 kernels are normally compiled -O2 which does not respect the inline directive. This compiles kernel modules with -finline-functions to get closer to -O3 optimization. For better optimization controls, See Configuring the Tar Ball.
--with k-modversions
--without k-modversions
Specifies whether kernel symbol versioning is to be applied to symbols exported by package kernel modules. The default is to version exported module symbols. This package does not export symbols so this option has no effect.
--with devfs
--without devfs
Specifies whether the build is for a device filesystem daemon enabled system with autoloading, or not. The default is to build for devfsd autoloading when CONFIG_DEVFS_FS is defined in the target kernel. The reuild target uses this option to signal to the RPM spec file that the `dev' subpackage need not be built. This option does not appear when the package has no devices.
--with tools
--without tools
Specifies whether user space packages are to be built. The default is to build user space packages. This option can be useful when rebuilding for multiple architectures and target kernels. The rebuild automake target uses this feature when rebuilding for all available architectures and kernels, to rebuild user packages once per architecture instead of once per kernel.
--with modules
--without modules
Specifies whether kernel modules packages are to be built. The default is to build kernel module packages. This option can be useful when rebuilding for multiple architectures and target kernels. The rebuild automake target uses this feature to rebuild for all available architectures and kernels.

In addition, the following rpm options, specific to the Linux Fast-STREAMS package are available:

--without compat-svr4
Disable source compatibility with SVR 4.2 MP variants. This option disables the SVR 4.2 MP compatibility functions that are included in the separate kernel module streams-svr4compat.o. This option defaults to enabled.
--without compat-sol8
Disable source compatibility with Solaris 8 variants. This option disables the Solaris 8 compatibility functions that are included in the separate kernel module streams-suncompat.o. This option defaults to enabled.
--without compat-uw7
Disable source compatibility with UnixWare 7 variants. This option disables the UnixWare 7 compatibility functions that are included in the separate kernel module streams-uw7compat.o. This option defaults to enabled.
--without compat-osf
Disable source compatibility with OSF/1.2 variants. This option disables the OSF/1.2 compatibility functions that are included in the separate kernel module streams-osfcompat.o. This option defaults to enabled.
--without compat-aix
Disable source compatibility with AIX 4 variants. This option disables the AIX 4 compatibility functions that are included in the separate kernel module streams-aixcompat.o. This option defaults to enabled.
--without compat-hpux
Disable source compatibility with HPUX variants. This option disables the HPUX compatibility functions that are included in the separate kernel module streams-hpuxcompat.o. This option defaults to enabled.
--without compat-lis
Disable source compatibility with LiS variants. This option disables the LiS compatibility functions that are included in the separate kernel module streams-liscompat.o. This option defaults to enabled.
--with module-sth
--without module-sth
Enable building sth (stream head) module linked into streams object instead built as a separate loadable kernel module. The default is to create the module as a separate loadable kernel module.
--with module-pipemod
--without module-pipemod
Enable building pipemod module linked into streams object instead built as a separate loadable kernel module. The default is to create the module as a separate loadable kernel module.
--with module-connld
--without module-connld
Enable building connld module linked into streams object instead built as a separate loadable kernel module. The default is to create the module as a separate loadable kernel module.
--with module-sc
--without module-sc
Enable building sc module linked into streams object instead built as a separate loadable kernel module. The default is to create the module as a separate loadable kernel module.
--with driver-clone
--without driver-clone
Enable building clone driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with driver-fifo
--without driver-fifo
Enable building fifo driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with driver-loop
--without driver-loop
Enable building loop driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with driver-sad
--without driver-sad
Enable building sad driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with driver-nsdev
--without driver-nsdev
Enable building nsdev driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with driver-echo
--without driver-echo
Enable building echo driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with driver-nuls
--without driver-nuls
Enable building nuls driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with driver-pipe
--without driver-pipe
Enable building pipe driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with driver-log
--without driver-log
Enable building log driver linked into streams object instead built as a separate loadable kernel module. The default is to create the driver as a separate loadable kernel module.
--with streams-fifos
--without streams-fifos
Enable override of system fifos with STREAMS-based fifos. The default for this feature is disabled.

In general, the default values of these options are sufficient for most purposes and no options need be provided when rebuilding the Source RPMs.

Build

To build from the source RPM, See Building from the Source RPM.

6.2.4 Configuring the Debian DSC

The Debian DSC can be configured by passing options in the environment variable BUILD_DEBOPTIONS. The options placed in this variable take the same form as those passed to the configure script, See Configuring the Tar Ball. For an example, See Building from the Debian DSC.

Build

To build from the Debian DSC, See Building from the Debian DSC.

6.2.5 Configuring the Tar Ball

All of the normal GNU autoconf configuration options and environment variables apply. Additional options and environment variables are provided to tailor or customize the build and are described below.

6.2.5.1 Configure Options

Following are the additional configure options, their meaning and use:

--enable-checks
--disable-checks
Enable or disable preinstall checks. Each packages supports a number of preinstall checks that can be performed by invoking the `check' target with make. These currently consist of checking each kernel module for unresolved kernel symbols, checking for documentation for exported kernel module symbols, checking for documentation for exported library symbols, checking for standard options for build and installable programs, checking for documentation for built and installable programs. Normally these checks are only run in maintainer mode, but can be enabled and disabled with this option.
--disable-compress-manpages
Compress manpages with `gzip -9' or `bzip2 -9' or leave them uncompressed. The default is to compress manpages with `gzip -9' or `bzip2 -9' if a single compressed manpage exists in the target installation directory (--mandir). This disables automatic compression.
--disable-public
Disable public release. Has no effect on the streams release. No private components exist in streams releases.
--disable-initscripts
Disables the installation of init scripts. The default is to configure and install init scripts and their associated configuration files.
--enable-tools
Specifies whether user space programs and libraries are to be built and installed. The default is to build and install user space programs and libraries. This option can be useful when rebuilding for multiple architectures and target kernels, particularly under rpm. The rebuild target uses this feature when rebuilding RPMs for all available architectures and kernels, to rebuild user packages once per architecture instead of once per kernel.
--enable-modules
Specifies whether kernel modules are to be built and installed. The default is to build and install kernel modules. This option can be useful when rebuilding for multiple architectures and target kernels, particularly under rpm. The rebuild automake target uses this feature to rebuild for all available architectures and kernels.
--enable-arch
Specifies whether architectural dependent package components are to be built and installed. This option can be useful when rebuilding for multiple architectures and target kernels, particularly under dpkg. The default is to configure, build and install architecture dependent package components.
--enable-indep
Specifies whether architecture independent package components are to be built and installed. This option can be useful when rebuilding for multiple architectures and target kernels, particularly under dpkg. The default is to configure, build and install architecture independent package components.
--enable-k-inline
Enable kernel inline functions. Most Linux kernels build without -finline-functions. This option adds the -finline-functions and -Winline flags to the compilation of kernel modules. Use with care.
--enable-k-safe
Enable kernel module run-time safety checks. Specifies whether kernel safety is to be performed. This option is mutually exclusive with --enable-k-test and --enable-k-debug below. This has the effect of invoking some more pedantic assertion macros in the code. The default is not to apply kernel safety.
--enable-k-test
Enable kernel module run-teim testing. Specifies whether kernel testing is to be performed. This option is mutually exclusive with --enable-k-safe above and --enable-k-debug below. This has the effect of remove static and inline attributes from functions and invoking most non-performance affecting debugging macros in the code. The default is not to perform kernel testing.
--enable-k-debug
Enable kernel module run-time debugging. Specifies whether kernel debugging is to be performed. This option is mutuallly exclusive with --enable-k-safe and --enable-k-test above. This has the effect of removing static and inline attributes from functions and invoking all debuggin macros in the code (including performance-affecting debug macros). The default is to not perform kernel debugging.
--enable-devfs
--disable-devfs
Specifies whether the build is for a device filesystem daemon enabled system with autoloading, or not. The default is to build for devfsd autoloading when CONFIG_DEVFS_FS is defined in the target kernel. The reuild target uses this option to signal to the RPM spec file that the `dev' subpackage need not be built. This option does not appear when the package has no devices.
--with-gpg-user=GNUPGUSER
Specify the gpg `GNUPGUSER' for signing RPMs and tarballs. The default is the content of the environment variable GNUPGUSER. If unspecified, the gpg program will normally use the user name of the account invoking the gpg program. For building source RPMs, the RPM macro `_gpg_name' will override this setting.
--with-gpg-home=GNUPGHOME
Specify the `GNUPGHOME' directory for signing RPMs and tarballs. The default is the user's ~/.gpg directory. For building source RPMs, the RPM macro `_gpg_path' will override this setting.
--with-pkg-epoch=EPOCH
Specifies the epoch for the package. This is neither used for RPM nor Debian packages, it applies to the tarball release as a whole. The default is the contents of the .pkgepoch file in the source directory or, if that file does not exist, zero (0).
--with-pkg-release=RELEASE
Specifies the release for the package. This is neither used for RPM nor Debian packages, it applies to the tarball release as a whole. The default is the contents of the .pkgrelease file in the source directory or, if that file does not exist, one (1). This is the number after the last point in ther package version number.
--with-pkg-distdir=DIR
Specifies the distribution directory for the package. This is used by the maintainer for building distributions of tarballs. This is the directory into which archives are copied for distribution. The default is the top build directory.
--with-cooked-manpages
Convert manual pages to remove macro dependencies and grefer references. Some systems do not like grefer references in manpages.19 This option will cook soelim, refer, tbl and pic commands from the manpages and also strip groff comments. The default is to leave manpages uncooked (they are actually smaller that way).
--with-rpm-epoch=PACKAGE_EPOCH
Specify the `PACKAGE_EPOCH' for the RPM spec file. The default is to use the RPM epoch conatined in the file .rpmepoch.
--with-rpm-release=PACKAGE_RPMRELEASE
Specify the `PACKAGE_RPMRELEASE' for the RPM rspec file. The default is to use the RPM release contained in the file .rpmrelease.
--with-rpm-extra=PACKAGE_RPMEXTRA
Specify the `PACKAGE_RPMEXTRA' extra release information for the RPM spec file. The default is to use the RPM extra release information contained in the file .rpmextra. Otherwise, this value will be determined from automatic detection of the RPM distribution.
--with-rpm-topdir=PACKAGE_RPMTOPDIR
Specify the `PACKAGE_RPMTOPDIR' top directory for RPMs. If specified with a null `PACKAGE_RPMTOPDIR', the default directory for the RPM distribution will be used. If this option is not provided on the command line, the top build directory will be used as the RPM top directory as well.
--with-deb-epoch=EPOCH
Specify the `PACKAGE_DEBEPOCH' for the DEB control file. The default is to use the DEB epoch contained int he file .debepoch.
--with-deb-release=RELEASE
Specify the `PACKAGE_DEBRELEASE' for the DEB control file. The default is to use the DEB release contained in the file .debrelease.
--with-deb-topdir=DIR
Specify the `PACKAGE_DEBTOPDIR' top directory for DEBs. If specified with a null `PACKAGE_DEBTOPDIR', the default directory for the DEB distribution will be used. If this option is not provided on the command line, the top build directory will be used as the DEB top directory as well.
--with-k-release=PACKAGE_KRELEASE
Specify the `PACKAGE_KRELEASE' release of the Linux kernel for which the build is targeted. When not cross compiling, if this option is not set, the build will be targeted at the kernel running in the build environment (e.g., `uname -r'). When cross-compiling this option must be specified or the configure script will generate an error and terminate.
--with-k-linkage=PACKAGE_KLINKAGE
Specify the `PACKAGE_KLINKAGE' for kernel module linkage. This can be one of the following: The default is to build loadable kernel modules.
--with-k-modules=K-MODULES-DIR
Specify the `K-MODULES-DIR' directory to which kernel modules will be installed. The default is based on the option --with-k-release, --with-k-prefix and --with-k-rootdir. The default is DESTDIR/K-MODULES-DIR which is typically DESTDIR/lib/modules/PACKAGE_KRELEASE/. This directory is normally located by the configure script and need only be provided for special cross-build environments or when requested by a configure script error message.
--with-k-build=K-BUILD-DIR
Specify the `K-BUILD-DIR' base kernel build directory in which configured kernel source resides. The default is DESTDIR/K-MODULES-DIR/build. This directory is normally located by the configure script and need only be provided for special cross-build environments or when requested by a configure script error message.
--with-k-source=K-SOURCE-DIR
Specify the `K-SOURCE-DIR' base kernel build directory in which configured kernel source resides. The default is DESTDIR/K-MODULES-DIR/source. This directory is normally located by the configure script and need only be provided for special cross-build environments or when requested by a configure script error message.
--with-k-modver=K-MODVER-FILE
Specify the `K-MODVER-FILE' kernel module versions file. The default is K-BUILD-DIR/Module.symvers. This file is normally located by the configure script and need only be provided for special cross-build environments or when requested by a configure script error message.
--with-k-sysmap=K-SYSMAP-FILE
Specify the `K-SYSMAP-FILE' kernel system map file. The default is K-BUILD-DIR/System.map. This file is normally located by the configure script and need only be provided for special cross-build environments or when requested by a configure script error message.
--with-k-archdir=K-ARCHDIR
Specify the `K-ARCHDIR' kernel source architecture specific directory. The default is DESTDIR/K-SOURCE-DIR/arch. This directory is normally located by the configure script and need only be provided for special cross-build environments or when requested by a configure script error message.
--with-k-machdir=K-MACHDIR
Specify the `K-MACHDIR' kernel source machine specific directory. The default is DESTDIR/K-SOURCE-DIR/target_cpu. This directory is normally located by the configure script and need only be provided for special cross-build environments or when requested by a configure script error message.
--with-k-config=K-CONFIG
Specify the `K-CONFIG' kernel configuration file. The default is BOOT/config-K-RELEASE. This configuration file is normally located by the configure script and need only be provided forspecial cross-build environments or when requested by a configure script error message.
--with-k-optimize=HOW
--without-k-optimize
Specify `HOW' optimization, normal, size, speed or quick. size compiles kernel modules -Os, speed compiles kernel modules -O3, and quick compiles kernel modules -O0. The default is normal. Use with care.
--with-strconf-master=STRCONF_CONFIG
Specify the `STRCONF_CONFIG' file name to which the configuration master file is written. The default is Config.master.
--with-base-major=STRCONF_MAJBASE
Start numbering for major devices at `STRCONF_MAJBASE'. The default is `230'.

In addition, the following configure options, specific to the Linux Fast-STREAMS package are available:

--enable-module-sth
Enable sth (stream head) module linked into streams object. The default is to create the module as a separate loadable kernel module.
--enable-module-pipemod
Enable pipemod module linked into streams object. The default is to create the module as a separate loadable kernel module.
--enable-module-connld
Enable connld module linked into streams object. The default is to create the module as a separate loadable kernel module.
--enable-module-sc
Enable sc module linked into streams object. The default is to create the module as a separate loadable kernel module.
--enable-driver-clone
Enable clone driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--enable-driver-fifo
Enable fifo driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--enable-driver-loop
Enable loop driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--enable-driver-sad
Enable sad driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--enable-driver-nsdev
Enable nsdev driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--enable-driver-echo
Enable echo driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--enable-driver-nuls
Enable nuls driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--enable-driver-pipe
Enable pipe driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--enable-driver-log
Enable log driver linked into streams object. The default is to create the driver as a separate loadable kernel module.
--disable-compat-svr4
Disable source compatibility with SVR 4.2 MP variants. This option disables the SVR 4.2 MP compatibility functions that are included in the separate kernel module streams-svr4compat.o. The default for this feature is enabled.
--disable-compat-sol8
Disable source compatibility with Solaris 8 variants. This option disables the Solaris 8 compatibility functions that are included in the separate kernel module streams-suncompat.o. The default for this feature is enabled.
--disable-compat-uw7
Disable source compatibility with UnixWare 7 variants. This option disables the UnixWare 7 compatibility functions that are included in the separate kernel module streams-uw7compat.o. The default for this feature is enabled.
--disable-compat-osf
Disable source compatibility with OSF/1.2 variants. This option disables the OSF/1.2 compatibility functions that are included in the separate kernel module streams-osfcompat.o. The default for this feature is enabled.
--disable-compat-aix
Disable source compatibility with AIX 4 variants. This option disables the AIX 4 compatibility functions that are included in the separate kernel module streams-aixcompat.o. The default for this feature is enabled.
--disable-compat-hpux
Disable source compatibility with HPUX variants. This option disables the HPUX compatibility functions that are included in the separate kernel module streams-hpuxcompat.o. The default for this feature is enabled.
--disable-compat-lis
Disable source compatibility with LiS variants. This option disables the LiS compatibility functions that are included in the separate kernel module streams-liscompat.o. The default for this feature is enabled.
--enable-streams-fifos
Enable override of system fifos with STREAMS-based fifos. The default for this feature is disabled.

6.2.5.2 Environment Variables

Following are additional environment variables to configure, their meaning and use:

GPG
GPG signature command. This is used for signing distributions by the maintainer. By default, configure will search for this tool.
GNUPGUSER
GPG user name. This is used for signing distributions by the maintainer.
GNUPGHOME
GPG home directory. This is used for signing distributions by the maintainer.
GPGPASSWD
GPG password for signing. This is used for signing distributions by the maintainer. This environment variable is not maintained by the configure script and should only be used on an isolated system.
SOELIM
Roff source elimination command. This is only necessary when the option --with-cooked-manpages has been specified and configure cannot find the proper soelim command. By default, configure will search for this tool.
REFER
Roff references command. This is only necessary when the option --with-cooked-manpages has been specified and configure cannot find the proper refer command. By default, configure will search for this tool.
TBL
Roff table command. This is only necessary when the option --with-cooked-manpages has been specified and configure cannot find the proper tbl command. By default, configure will search for this tool.
PIC
Roff picture command. This is only necessary when the option --with-cooked-manpages has been specified and configure cannot find the proper pic command. By default, configure will search for this tool.
GZIP
Default compression options provided to GZIP_CMD.
GZIP_CMD
Manpages (and kernel modules) compression commands. This is only necessary when the option --without-compressed-manpages has not been specified and configure cannot find the proper gzip command. By default, configure will search for this tool.
BZIP2
Default compression options provided to BZIP2_CMD
BZIP2_CMD
Manpages compression commands. This is only necessary when the option --without-compressed-manpages has not been specified and configure cannot find the proper bzip2 command. By default, configure will search for this tool.
MAKEWHATIS
Manpages apropros database rebuild command. By default, configure will search for this tool. By default, configure will search for this tool.
CHKCONFIG
Chkconfig command. This was used for installation of init scripts. All pacakges now come with init_install and init_remove scripts used to install and remove init scripts on both RPM and debian systems.
RPM
Rpm command. This is only necessary for RPM builds. By default, configure will search for this tool.
RPMBUILD
Build RPM command. This is only necessary for RPM builds. By default, configure will search for this tool. rpm will be used instead of rpmbuild only if rpmbuild cannot be found.
DPKG
Dpkg comand. This command is used for building debian packages. By default, configure will search for this tool.
DPKG_SOURCE
Dpkg-source command. This command is used for building debian dsc packages. By default, configure will search for this tool.
DPKG_BUILDPACKAGE
Dpkg-buildpackage command. This command is used for building debian deb packages. By default, configure will search for this tool.
DEB_BUILD_ARCH
Debian build architecture. This variable is used for building debian packages. The default is the autoconf build architecutre.
DEB_BUILD_GNU_CPU
Debian build cpu. This variable is used for building debian packages. The default is the autoconf build cpu.
DEB_BUILD_GNU_SYSTEM
Debian build os. This variable is used for building debian packages. The default is the autoconf build os.
DEB_BUILD_GNU_TYPE
Debian build alias. This variable is used for building debian packages. The default is the autoconf build alias.
DEB_HOST_ARCH
Debian host architecture. This variable is used for building debian packages. The default is the autoconf host architecture.
DEB_HOST_GNU_CPU
Debian host cpu. This variable is used for building debian packages. The default is the autoconf host cpu.
DEB_HOST_GNU_SYSTEM
Debian host os. This variable is used for building debian packages. The default is the autoconf host os.
DEB_HOST_GNU_TYPE
Debian host alias. This variable is used for building debian packages. The default is the autoconf host alias.
LDCONFIG
Configure loader command. Command used to configure the loader when libraries are installed. By default, configure will search for this tool.
DESTDIR
Cross build root directory. Specifies the root directory for build and installation. For example, for NexusWare cross-builds, this is set to environment variable NEXUSWARE_PREFIX on configuration to point to the root of the cross-build tree for both configuration and installation.
DEPMOD
Build kernel module dependencies command. This is used during installation of kernel modules to a running kernel to rebuild the modules dependency database. By default, configure will search for this tool.
MODPROBE
Probe kernel module dependencies command. This is used during installation of kernel modules to a running kernel to remove old modules. By default, configure will search for this tool.
LSMOD
List kernel modules command. This is used during installation of kernel modules to a running kernel to detect old modules for removal. By default, configure will search for this tool.
LSOF
List open files command. This is used during installation of kernel modules to a running kernel to detect old modules for removal. Processes owning the old kernel modules will be killed and the module removed. If the process restarts, the new module will be demand loaded. By default, configure will search for this tool.
GENKSYMS
Generate kernel symbols command. This is used for generating module symbol versions during build. By default, configure will search for this tool.
KGENKSYMS
Linux 2.6 generate kernel symbols command. This is used for generating module symbol version during build. By default, configure will search for this tool.
OBJDUMP
Object dumping command. This is used for listing information about object files. By default, configure will search for this tool.
NM
Object symbol listing command. This is used for listing information about object files. By default, configure will search for this tool.
MODPOST_CACHE
Cache file for modpost. The version of the modpost.sh script that ships with each package can cache information to a cache file to speed multiple builds. This environment variable is used to specify a cache file.
AUTOM4TE
Autom4te command. This is the executable used by autotest for pre- and post-installation checks. By default, configure will search for this tool.
AUTOTEST
Autotest macro build command. This is the executable used by autotest for pre- and post-installation checks. By default, configure will search for this tool.
6.2.5.3 Build

To build from the tar ball, See Building from the Tar Ball.

6.3 Building

6.3.1 Building from the Source RPM

If you have downloaded the necessary source RPM (see Downloading the Source RPM), then the following instructions will rebuild the binary RPMs on your system. Once the binary RPMs are rebuilt, you may install them as described above (see Installing the Binary RPM).

The source RPM is rebuilt to binary RPMs as follows:

     

% wget http://www.openss7.org/rpms/SRPMS/streams-0.7a.3-1.src.rpm % rpmbuild --rebuild -vv streams-0.7a.3-1.src.rpm

The rebuild process can also recognize a number of options that can be used to tweak the resulting binaries, See Configuring the Source RPM. These options are provided on the rpm command line. For example:

     

% rpmbuild --rebuild -vv --target athlon-redhat-linux \ --define "_kversion 2.4.20-28.7bigmem" \ -- streams-0.7a.3-1.src.rpm

will rebuild binary RPM for the `2.4.20-28.7bigmem' kernel for the `athlon' architecture. 20

Installation

To install the resulting binary RPM, See Installing the Binary RPM.

6.3.2 Building from the Debian DSC

If you have downloaded the necessary Debian DSC (see Downloading the Debian DSC), then the following instructions will rebuild the binary DEBs on your system. Once the binary DEBs are rebuilt, you may install them as described above (see Installing the Debian DEB).

The Debian DSC is rebuilt to binary DEBs as follows:

     

% wget http://www.openss7.org/debian/streams_0.7a.3-0.dsc % wget http://www.openss7.org/debian/streams_0.7a.3-0.tar.gz % dpkg-buildpackage -v streams_0.7a.3-0.dsc

The rebuild process can also recognize a number of options that can be used to tweak the resulting binaries, See Configuring the Debian DSC. These options are provided in the environment variable BUILD_DPKGOPTIONS and have the same form as the options to configure, See Configuring the Tar Ball. For example:

     

% BUILD_DEBOPTIONS=' --with-k-release=2.4.20-28.7bigmem --host=athlon-debian-linux-gnu' dpkg-buildpackage -v \ streams_0.7a.3-0.dsc

will rebuild binary DEB for the `2.4.20-28.7bigmem' kernel for the `athlon' architecture. 21

Installation

To install the resulting binary DEB, See Installing the Debian DEB.

6.3.3 Building from the Tar Ball

If you have downloaded the tar ball (see Downloading the Tar Ball), then the following instructions will rebuild the package on your system. (Note that the build process does not required root privilege.)

6.3.3.1 Native Build

Folowing is an example of a native build against the running kernel:

     

% wget http://www.openss7.org/streams-0.7a.3.tar.bz2 % tar -xjvf streams-0.7a.3.tar.bz2 % pushd streams-0.7a.3 % ./configure % make % popd

6.3.3.2 Cross-Build

Following is an example for a cross-build. The kernel release version must always be specified for a cross-build.22 If you are cross-building, specify the root for the build with environment variable DESTDIR. The cross-compile host must also be specified if different from the build host. Either the compiler and other tools must be in the usual places where GNU autoconf can find them, or they must be specified with declarations such as `CC=/u5/NexusWare24/ppc-linux/gcc' on the configure command line. Look in the file configure.nexusware in the release package for an example.

     

% wget http://www.openss7.org/streams-0.7a.3.tar.bz2 % tar -xjvf streams-0.7a.3.tar.bz2 % pushd streams-0.7a.3 % ./configure DESTDIR="/some/other/root" \ --with-k-release=2.4.18 --host sparc-linux % make % popd

6.3.3.3 NexusWare Build

Additional support is provided for cross-building for the Performance Technologies Inc. NexusWare embedded target for the CPC-384, CPC-388 and CPC-396 cards. A configuration script wrapper (configure.nexusware) is provided to simplify the cross-build operation for these targets. The following steps describe the process:

  1. Follow the normal NexusWare instructions for rebuilding a generic kernel and flash image as follows: (Note that I keep my NexusWare build in /u5/NexusWare24.)
              

    % pushd /u5/NexusWare24 % source SETUP.sh % make % popd

  2. Next download, unpack (see Downloading the Tar Ball) and configure (see Configuring the Tar Ball) using the provided configure.nexusware wrapper for configure. This wrapper simply tells the configure script where to find the NexusWare sources and which NexusWare cross-building tools to use for a cross-compile.23

    Any of the normal configure script options (see Configuring the Tar Ball) can be used on the same line as `./configure.nexusware'. One of particular interest to embedded targets is `--with-k-optimize=size' to attempt to reduce the size of the kernel modules.

  3. Install as normal (see Installing the Tar Ball), however, for embedded targets the install-strip target should be used instead of the install target. The install-strip target will strip unnecessary symbols from kernel modules and further reduce the size in the root file system flash image.

Following is what I use for configuration and installation: (My NexusWare tree is rooted at /u5/NexusWare.)

     

% pushd /u5/NexusWare24 % source SETUP.sh % make % popd % wget http://www.openss7.org/streams-0.7a.3.tar.bz2 % tar -xjvf streams-0.7a.3.tar.bz2 % pushd streams-0.7a.3 % ./configure.nexusware --with-k-optimize=size % make % make install-strip % popd

Once built and installed in the NexusWare directory, you will have to (currently) hand edit a .spec file to include the components you want in the NexusWare root file system. If you are cross-building for NexusWare you should already know what that means. Objects that you might be interested in copying to the root file system are kernel modules that were installed in $NEXUSWARE_PREFIX/lib/modules/2.4.18/streams, libraries installed in $NEXUSWARE_PREFIX/usr/lib and utility functions installed in $NEXUSWARE_PREFIX/usr/bin and $NEXUSWARE_PREFIX/usr/sbin and test programs in $NEXUSWARE_PREFIX/usr/libexec. If you would prefer that these programs be installed in $NEXUSWARE_PREFIX/lib, $NEXUSWARE_PREFIX/bin, $NEXUSWARE_PREFIX/sbin and $NEXUSWARE_PREFIX/libexec, (say because you want to remote mount the /usr directory after boot), then specify the `--exec-prefix=/' option to `./configure.nexusware'.

In addition, because NexusWare does not include an /etc/modules.conf file by default, it will be necessary to add one or edit your rc.4 file to insmod the necessary streams modules at boot time.

Once you have completed the necessary .spec and rc.4 file entries, you need to rebuild the `generic' kernel flash image once more for these objects to be included in the flash file system. It is important that this second build of the kernel image be the same as the first.

When modifying and rebuilding a NexusWare kernel, it will be necessary to rebuild and install streams. Simply perform the last `make install-strip' stage or start again with `./configure.nexusware'. You can place the unpacked tarball in $NEXUSWARE_PREFIX/usr/src/streams, and add the following to the top-level NexusWare Makefile to make the build process a single step process instead of dual pass:

     

all: ... (cd kernels/generic; $(MAKE) depend) (cd usr/src/pcmcia-cs-3.2.1; $(MAKE) config) (cd kernels/generic; $(MAKE)) (cd usr/src/pcmcia-cs-3.2.1; $(MAKE) pti) (cd usr/src/pti; $(MAKE)) (cd drivers; $(MAKE)) (cd utility; $(MAKE)) # uncomment for streams build # (cd usr/src/streams; ./configure.nexusware; $(MAKE) install-strip) (cd build/generic; $(MAKE)) ...

Another, perhaps simpler approach, is to make the necessary edits to the NexusWare top-level Makefile and .spec and rc.4 files, download and unpack the tar ball into the NexusWare directory, and build the NexusWare flash image as normal:

     

% wget http://www.openss7.org/streams-0.7a.3.tar.bz2 % pushd /u5/NexusWare24 % source SETUP.sh % pushd usr/src % tar -xjvf ${DIRSTACK[2]}/streams-0.7a.3.tar.bz2 % ln -sf streams-0.7a.3 streams % popd % make % popd

6.4 Installing

6.4.1 Installing the Binary RPM

If you have downloaded the necessary binary RPMs (see Downloading the Binary RPM), or have rebuilt binary RPMs using the source RPM (see Building from the Source RPM), then the following instructions will install the RPMs on your system. For additional information on rpm, see rpm(8).

     

% pushd RPMS/i686 % rpm -ihv streams-*-0.7a.3-1.7.x.i686.rpm

You must have the correct binary RPMs downloaded or built for this to be successful.

Some of the packages are relocatable and can have final installation directories altered with the `--relocate' option to rpm, see rpm(8) The Manual Pages. For example, the following will relocate the documentation and info directories:

     

% pushd RPMS/i686 % rpm -ihv \ --relocate '/usr/share/doc=/usr/local/share/doc' \ --relocate '/usr/share/info=/usr/local/share/info' \ -- streams-doc-0.7a.3-1.7.x.i686.rpm

The previous example will install the streams-doc package by will relocate the documentation an info directory contents to the /usr/local version.

6.4.2 Installing the Debian DEB

If you have downloaded the necessary Debian DEBs (see Downloading the Debian DEB), or have rebuild binary DEBs using the Debian DSC (see Building from the Debian DSC), then the following instructions will install the DEBs on your system. For additional information on dpkg, see dpkg(8).

     

% pushd debian % dpkg -iv streams-*_0.7a.3-0_*.deb

You must have the correct .deb files downloaded or build for this to be successful.

6.4.3 Installing the Tar Ball

After the build process (see Building from the Tar Ball), installation only requires execution of one of two make targets:

`make install'
The `install' make target will install all the components of the package. Root privilege is required to successfully invoke this target.
`make install-strip'
The `install-strip' make target will install all the components of the package, but will strip unnecessary information out of the objects and compress manual pages. Root privilege is required to successfully invoke this target.

6.5 Removing

6.5.1 Removing the Binary RPM

To remove an installed version of the binary RPMs (whether obtained from the OpenSS7 binary RPM releases, or whether created by the source RPM), execute the following command:

     

% rpm -evv `rpm -qa | grep '^streams-'`

For more information on rpm, see rpm(8).

6.5.2 Removing the Debian DEB

To remove and installed version of the debian DEB (whether obtained from the OpenSS7 binary DEB releases, or whether created by the Debian DSC), execute the following command:

     

% dpkg -ev `dpkg -l | grep '^streams-'`

For more information on dpkg, see dpkg(8).

6.5.3 Removing the Source RPM

To remove all the installed binary RPM build from the source RPM, see Removing the Binary RPM. Then simply remove the binary RPM package files and source RPM file. A command such as:

     

% find / -name 'streams-*.rpm' -type f -print0 | xargs --null rm -f

should remove all streams RPMs from your system.

6.5.4 Removing the Debian DSC

To remove all the installed binary DEB build from the Debian DSC, see Removing the Debian DEB. Then simply remove the binary DEB package files and Debian DSC file. A command such as:

     

% find / \( -name 'streams-*.deb' \ -o -name 'streams-*.dsc' \ -o -name 'streams-*.tar.* \ \) -type f -print0 | xargs --null rm -f

should remove all streams DEBs, DSCs and TARs from your system.

6.5.5 Removing the Tar Ball

To remove a version installed from tar ball, change to the build directory where the package was built and use the `uninstall' make target as follows:

     

% cd /usr/src/streams % make uninstall % cd .. % rm -fr streams-0.7a.3 % rm -f streams-0.7a.3.tar.gz % rm -f streams-0.7a.3.tar.bz2

If you have inadvertently removed the build directory and, therefore, no longer have a configured directory from which to execute `make uninstall', then perform all of the steps for configuration and installation (see Installing the Tar Ball) except the final installation and then perform the steps above.

6.6 Loading

6.6.1 Normal Module Loading

When streams installs, modules and drivers are normally configured for demand loading. The `install' and `install-strip' make targets will make the necessary changes to the /etc/modules.conf file and place the modules in an appropriate place in /lib/modules/2.4.20-28.7bigmem/streams. The `make install' process should have copied the kernel module files streams-*.o to the directory /lib/modules/2.4.20-28.7bigmem/streams. This means that to load any of these modules, you can simply execute, for example, `modprobe stream-somedriver'.24

6.6.1.1 Linux STREAMS Module Loading

The streams demand load system supports both the old kerneld and the new kmod mechanisms for demand loading kernel modules.

The convention for streams kernel loadable object files is:

If your kernel has been built using the kerneld daemon, then streams kernel modules will automatically load as soon as the STREAMS module is pushed or the driver is opened. The `make install' process makes the necessary changes to the /etc/modules.conf file. After the install, you will see lines like the following added to your /etc/modules.conf file:

     

prune modules.streams if -f /lib/modules/`uname -r`/modules.streams include /lib/modules/`uname -r`/modules.streams endif

which will provide for demand loading of the modules if they have been built and installed for the running kernel. The /lib/modules/`uname -r`/modules.streams file looks like this:

     

alias char-major-245 streams-some_driver alias char-major-246 streams-other_driver

Note that STREAMS modules are not listed in this file, but will be loaded by name using kerneld if available.

6.6.1.2 Linux Fast-STREAMS Module Loading

Linux Fast-STREAMS has a wider range of kernel module loading mechanisms than is provided by LiS. For mechanisms used for kernel module loading under Linux Fast-STREAMS, See About This Manual.

6.6.2 NexusWare Module Loading

Under exceptional circumstances, such as a NexusWare build, it is necessary to hand-edit a .spec and rc.4 file to load the modules at boot time.25

7 Troubleshooting

7.1 Test Suites

7.2 Running Test Suites

7.3 Problem Reports

7.4 Known Bugs

Appendix A Copying

A.1 GNU General Public License



GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
     Copyright © 1989, 1991 Free Software Foundation, Inc.
     675 Mass Ave, Cambridge, MA 02139, USA
     
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

A.1.1 Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software—to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  1. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The “Program”, below, refers to any such program or work, and a “work based on the Program” means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term “modification”.) Each licensee is addressed as “you”.

    Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

  2. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

    You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

  3. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:
    1. You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
    2. You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
    3. If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

    These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

    Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

    In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

  4. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:
    1. Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    2. Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
    3. Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

    The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

    If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

  5. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
  6. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.
  7. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.
  8. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

    If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

    It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

    This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

  9. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.
  10. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

    Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and “any later version”, you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

  11. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.
    NO WARRANTY
  12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS

A.1.2 How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found.

     one line to give the program's name and an idea of what it does.
     Copyright (C) 19yy  name of author
     
     This program is free software; you can redistribute it and/or
     modify it under the terms of the GNU General Public License
     as published by the Free Software Foundation; either version 2
     of the License, or (at your option) any later version.
     
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
     
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this when it starts in an interactive mode:

     Gnomovision version 69, Copyright (C) 19yy name of author
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
     type `show w'.  This is free software, and you are welcome
     to redistribute it under certain conditions; type `show c'
     for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items—whatever suits your program.

You should also get your employer (if you work as a programmer) or your school, if any, to sign a “copyright disclaimer” for the program, if necessary. Here is a sample; alter the names:

     Yoyodyne, Inc., hereby disclaims all copyright
     interest in the program `Gnomovision'
     (which makes passes at compilers) written
     by James Hacker.
     
     signature of Ty Coon, 1 April 1989
     Ty Coon, President of Vice

This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.

Appendix B Documentation License

B.1 GNU Free Documentation License



GNU FREE DOCUMENTATION LICENSE
Version 1.1, March 2000
     Copyright © 2000 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307, USA
     
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.

B.1.1 Preamble

The purpose of this License is to make a manual, textbook, or other written document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.

This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.

We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  1. APPLICABILITY AND DEFINITIONS

    This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The “Document”, below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as “you”.

    A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.

    A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.

    The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License.

    The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License.

    A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not “Transparent” is called “Opaque”.

    Examples of suitable formats for Transparent copies include plain ascii without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML produced by some word processors for output purposes only.

    The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, “Title Page” means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.

  2. VERBATIM COPYING

    You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.

    You may also lend copies, under the same conditions stated above, and you may publicly display copies.

  3. COPYING IN QUANTITY

    If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.

    If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.

    If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessible computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.

    It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.

  4. MODIFICATIONS

    You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:

    1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
    2. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five).
    3. State on the Title page the name of the publisher of the Modified Version, as the publisher.
    4. Preserve all the copyright notices of the Document.
    5. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
    6. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
    7. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
    8. Include an unaltered copy of this License.
    9. Preserve the section entitled “History”, and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
    10. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
    11. In any section entitled “Acknowledgments” or “Dedications”, preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgments and/or dedications given therein.
    12. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
    13. Delete any section entitled “Endorsements”. Such a section may not be included in the Modified Version.
    14. Do not retitle any existing section as “Endorsements” or to conflict in title with any Invariant Section.

    If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.

    You may add a section entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.

    You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.

    The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.

  5. COMBINING DOCUMENTS

    You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice.

    The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.

    In the combination, you must combine any sections entitled “History” in the various original documents, forming one section entitled “History”; likewise combine any sections entitled “Acknowledgments”, and any sections entitled “Dedications”. You must delete all sections entitled “Endorsements.”

  6. COLLECTIONS OF DOCUMENTS

    You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.

    You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.

  7. AGGREGATION WITH INDEPENDENT WORKS

    A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an “aggregate”, and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document.

    If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate.

  8. TRANSLATION

    Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail.

  9. TERMINATION

    You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

  10. FUTURE REVISIONS OF THIS LICENSE

    The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.

    Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.

END OF TERMS AND CONDITIONS

B.1.2 How to use this License for your documents

To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page:

       Copyright (C)  year  your name.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.1
       or any later version published by the Free Software Foundation;
       with the Invariant Sections being list their titles, with the
       Front-Cover Texts being list, and with the Back-Cover Texts being list.
       A copy of the license is included in the section entitled ``GNU
       Free Documentation License''.

If you have no Invariant Sections, write “with no Invariant Sections” instead of saying which ones are invariant. If you have no Front-Cover Texts, write “no Front-Cover Texts” instead of “Front-Cover Texts being list”; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.

Indices

Index of Concepts

Index of Data Types

Index of Functions and Macros

Index of Variables and Constants

Index of Files and Prorams

Index of Configuration Options

Short Contents

Table of Contents


Footnotes

[1] See GNU/Linux Distributions, for more information.

[2] If you are using a Debian release, please make sure to install the groff extension package (`groff_ext'), as it contains the refer or grefer commands necessary for including references in the manual pages.

[3] See section NO WARRANY under GNU General Public License.

[4] Not all distributions support the `%dev' RPM macro: a case in point is the SuSE 8.0 distribution which uses an older version of rpm. Distributions that do not support the `%dev' macro will build devices as a `%post' operation. Note also that not all release packages contain devices. Only packages that provide STREAMS character device drivers need devices, and then only when the `specfs' or `devfsd' is not being used.

[5] Note that on Mandrakelinux, unlike other RPM kernel distributions, kernel packages for the ix86 architectures are always placed in i586 architecture packages regardless of the true processor architecture of the kernel package. configure detects this and builds the appropriate packages.

[6] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example. Note also that only release packages that contain kernel modules will contain a core subpackage.

[7] Note that only release packages that contain kernel modules and that export versioned symbols will contain a info subpackage. Also, this subpackage is only applicable to 2.4 series kernels and is not necessary and not built for 2.6 series kernels.

[8] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example.

[9] Note that not all release packages contain devices. Only packages that provide STREAMS character device drivers need devices, and then only when the `specfs' or `devfsd' is not being used.

[10] Note that not all releases have source DEB packages. Release packages that do not contain kernel modules do not generate a source DEB package.

[11] Note that on Mandrakelinux, unlike other DEB kernel distributions, kernel packages for the ix86 architectures are always placed in i586 architecture packages regardless of the true processor architecture of the kernel package. configure detects this and builds the appropriate packages.

[12] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example. Note also that only release packages that contain kernel modules will contain a core subpackage.

[13] Note that only release packages that contain kernel modules and that export versioned symbols will contain a info subpackage. Also, this subpackage is only applicable to 2.4 series kernels and is not necessary and not built for 2.6 series kernels.

[14] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example.

[15] A notable exception is Debian.

[16] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example.

[17] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example. Also, note that the `info' subpackage is only applicable to the 2.4 kernel series.

[18] In particular, some Debian systems do not load the groff extensions package and do not have grefer installed. Although this is an oversight on the configuration of the particular Debian system, we accomodate such misconfiguration with this feature.

[19] In particular, some Debian systems do not load the groff extensions package and do not have grefer installed. Although this is an oversight on the configuration of the particular Debian system, we accomodate such misconfiguration with this feature.

[20] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example.

[21] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example.

[22] Because it is a cross-build, the kernel version on the build machine is unlikely to be the kernel version of the target machine, except by coincidence.

[23] Although I have not tried it, because we use GNU autoconf for configuration, these instructions should work equally well for the Solaris NexusWare cross-building environment as it does for the Linux NexusWare cross-building environment.

[24] Note that the `_kversion' of `2.4.20-28.7bigmem' is only an example.

[25] At some time I expect to create an `install-nexusware' target that will make the necessary modifications to the .spec and rc.4 files automatically.