@device(PostScript) @make(Plan) @begin(comment) $Source: /mit/t/r/treese/ASEM/RCS/athena_changes.mss,v $ $Author: treese $ $Header: athena_changes.mss,v 1.2 86/10/31 15:34:22 treese Exp $ @end(comment) @planhead(versiondate="Draft@Y4 November 1986", plansection="Section G.1.1", title="Athena Changes to Berkeley 4.3 UNIX@+<@Y>", footingtitle="Athena Changes to Berkeley 4.3 UNIX", copyrightdate="1986", author="by Win Treese") @Majorsection(Introduction) This document describes the changes made by Project Athena to the 4.3 Berkeley Software Distribution (4.3BSD) of the UNIX@foot[UNIX is a registered trademark of AT&T Bell Laboratories] operating system. Athena began with 4.2BSD, served as a beta-test site for 4.3BSD, and is now converting to the released version of 4.3BSD. Many of the changes and bug fixes that Athena found necessary for 4.2BSD were incorporated into the 4.3 release. Hence, the number and magnitude of the changes described here are much smaller than before. Most of the changes now reflect the special environment Athena has developed, as we attempt to use UNIX in a distributed workstation environment. This version of the document primarily addresses changes that have been made for use on the Athena timesharing systems (currently, approximately 40 VAX 11/750's). Later revisions will discuss more of the changes necessary to support workstations. Later revisions will also include details of specific changes as well as appendices describing which files have changed. It is likely that the configuration changes mentioned below will be described in a separate document instead of this one. @Majorsection(Kinds of Changes) Athena modifications to 4.3BSD fall into the following categories: @begin[itemize] Directory hierarchy Necessary system changes Configuration changes Bug fixes New software Minor additional features @end[itemize] Athena has made several changes to the @i[directory hierarchy]. These are primarily to isolate software that Athena has added to the system. @i[Necessary system changes] are modifications to the software that are required by the Athena environment. For example, it was necessary to add the client device driver for the Remote Virtual Disk (RVD) system to the Berkeley kernel. @i[Configuration changes] are those made to various configuration files (e.g., @i[/usr/lib/sendmail.cf]). Most of these files are altered by most sites, but the Athena modifications are often more extensive, so some of them are described here. @i[Bug fixes] are exactly that; most of them are reported to Berkeley. Many of the Athena fixes to 4.2BSD were included in 4.3. @i[New software] includes both software developed by Project Athena and that acquired from third-party vendors. Athena-developed software tends to be system software necessary for the Athena environment (e.g., the Kerberos authentication system). Most of the third-party software packages are user applications, such as the @i[gnuemacs] text editor from the Free Software Foundation or the @i[scribe] text formatter from Unilogic, Inc. @i[Minor additional features] are changes made to make life easier, such as filename completion in the C shell. In a sense, these categories also define the criteria by which proposed changes are judged. The Athena approach to software has been to buy it when possible, and write it only if it cannot be bought and is necessary for the operation of our system. For the most part, gratuitous changes are avoided, though there are several on the system. The success of this approach is demonstrated by the relatively small number of changes that were necessary for the released version of 4.3BSD. @Section(Directory Hierarchy) Athena has added the following directories to the standard system: @i[/usr/athena, /usr/athena/lib, /etc/athena, and /usr/unsupported]. In addition, we will soon be adding a directory @i[/bin/athena]. These directories hold the expected classes of software: @i[/usr/athena] contains Athena user applications, @i[/usr/athena/lib] contains Athena-specific library files, and @i[/etc/athena] contains special system maintenance commands. @i[/usr/unsupported] is used for a few pieces of software that are not supported by Athena, but that we distribute for use. Generally, a program there is supported by a specific Athena staff member who wishes to make it available. The directory @i[/bin/athena] will be used for commands that need to be available on the root filesystem, but which are also accessed by normal users. User directories are placed in @i[/mit], which is a mounted filesystem on the timesharing machines. @MajorSection(Necessary System Changes) Changes to the system software from Berkeley fall naturally into two categories: those made to the kernel and those made to user software. Although we do not relish changing the kernel, it has often been necessary. With the arrival of 4.3BSD, our changes have become more modular, since many of the bugs from 4.2 have been fixed. The three sets of changes necessary for 4.3 support the RVD system, the RTI Ingres database system, and the CHAOSnet, a network system developed at MIT. The RVD system, in its current implementation, consists primarily of a device driver. Hence, the installation is much like that of any other device driver. It also requires, however, an addition to the network protocols table, since RVD uses its own protocol. The RTI Ingres database, from Relational Technologies, Inc., uses a pseudo-device and an associated driver for database locking. This installation is a simple device driver change. The MIT CHAOSnet system requires a somewhat more extensive set of changes. It is used, however, on only a few of our machines that serve as gateways between the MIT campus network and the existing CHAOSnet. We expect that this will not be a permanent feature of our system. The most common use of the software is for mail routing and occasional transfer of files between a CHAOSnet host and an Athena host. Modifications to the user software, unfortunately, have not been so modular. They do not fall into any convenient groups, so they are simply listed here in no particular order. The line printer system (@b[lpr]) was changed to give a remote printer specification in @i[/etc/printcap] a higher priority than a specification for a printer connected to a tty port. This allows us to construct an @i[/etc/printcap] file that can be used on all hosts, since the local printer is used only if the remote hostname matches the local hostname. In addition, we currently use the environment variable APRINTER instead of PRINTER to specify the desired default printer. (Note: I would like to back out of this for the January release.) The standard printer filters were also modified to support the LN01 and LN03 laser printers. In addition, the line printer system used the @i[clustertab] system discussed below for translation of printer names. The utility @b[df] was extended to understand filesystems on RVD disk partitions. The directory @i[/usr/athena/lib] was added to the list of library directories searched by @b[ld]. For some reason, 4.3BSD did not include the network version of @b[write]. Because of its usefulness in our environment, we re-installed the 4.2 version. Various manual pages were updated to reflect these changes. @MajorSection(Configuration Changes) 4.3BSD contains many files that control the configuration of the system. Some of these, such as @i[/etc/passwd] and @i[/etc/group], are changed by every site using 4.3. Others, such as @i[/etc/syslog.conf] are used by a specific program and are locally modified as necessary. There are also system data files such as @i[/etc/services] that are used by several programs. Finally, there are files such as @i[/etc/rc] that control the system configuration at boot time. @Section[Normally Local Files] For timesharing systems, the files @i[/etc/passwd] and @i[/etc/group] for each machine are generated periodically from the Athena User Registration database. This database contains the necessary information for each user and group at Athena. @Section[Program Data Files] Various programs, particularly daemons, use configuration files to control their behavior. These are described here, in no particular order: The @i[sendmail] system is controlled by @i[/usr/lib/sendmail.cf]. This file has been extensively modified at Athena. All mail from an Athena machine is sent to a central mail server (currently the machine "athena"). This server then routes the mail to the appropriate machine, whether the destination is an Athena host or not. Mail to another Athena machine is tagged to indicate that it should not be forwarded to the mail server. On most machines, therefore, the file @i[/usr/lib/aliases] is not used, since no alias translation takes place locally. Instead, the mail server maintains a global aliases file, which contains the home mail machine of each Athena user as well as all mailing lists that Athena maintains. This file is generated from the user database, which also stores information about mailing lists. Workstations are not configured to receive mail at all; users of workstations can get their mail on a timesharing system (for now) or from a "post office" server. The file @i[/etc/disktab] is a concatenation of the 4.3BSD version and the IBM ACIS 4.2A version. This allows us to maintain one master file, as well as create RVD partitions for IBM and DEC machines on the other vendor's physical disks. @i[/etc/shells], which lists shells acceptable to @b[chsh], now includes the @b[tcsh] shell. @b[tcsh] is a shell that supports EMACS-style command line editing. It is not currently a supported part of the Athena system. The @b[syslog] daemon routes logging messages based on the file @i[/etc/syslog.conf]. Athena uses the @b[syslog] facilities to log various messages, particularly from RVD. We plan to experiment with using @b[syslog] to log messages to a remote machine for workstations. Athena uses the file @i[/etc/named.ca] to initialize the cache of the nameserver @b[/etc/named]. The standard file @i[/etc/named.boot] points to this file. The program @b[/etc/inetd] watches for connections to ports as specified by @i[/etc/inetd.conf]. Athena added an entry for the @b[write] daemon, as well as for the Kerberos utilities (described below). The files @i[/etc/X?.hosts] list hosts allowed to create windows on a display controlled by the X window system. In addition to these files, Athena has added threeconfiguration files: @i[/etc/rvdtab] lists information about RVD packs that a workstation may wish to access, @i[/etc/athena/lib/clustertab] contains the database for the clustertab system described below, and @i[/etc/hosts.login] lists hosts that may be accessed through the login server (described below). @Section[System Data Files] Some configuration files are used by a number of programs. The file @i[/etc/services] contains a list of network services and port numbers for them. Athena has extended this file for several network services, including RVD and Kerberos. The hosts database, @i[/etc/hosts], is no longer maintained on every Athena host. Its function has been assumed by the nameserver, @b[/etc/named], except for the initial setting of the host name and address. We plan to extend the program @b[/bin/hostname] to take the Internet address as an argument, so we can eliminate use of this file completely. @Section[System Startup] Athena has extensively modified the files @i[/etc/rc] and @i[/etc/rc.local] to handle several configuration issues without having to carefully customize the files on each machine. This issue is discussed in "System Configuration at Boot Time" (Athena System Engineering Memo #?). @MajorSection(Bug Fixes) Fortunately, 4.3BSD has fewer bugs for us to deal with locally (at least, so far). In the beta test version, it was necessary to fix some problems with @b[sendmail] and the nameserver @b[/etc/named]. We have not fully tested the final versions at this time. In addition, we have modified the gethostbyname() function in the C library to accept a "dotted quad" Internet address and return the appropriate host structure without accessing the nameserver. This enables several programs to accept an Internet address as an argument and perform their function without calling the nameserver. In particular, @b[/etc/route] can now establish a default gateway without first having to look up the name from a nameserver outside the local Ethernet. @MajorSection(New Software) There are two classes of software added to the system by Athena: those packages acquired from third-party vendors and those developed locally at Athena. Since third-party software packages are generally standalone applications, they required no changes to the system (with the exception of RTI Ingres, as discussed above). Most of the system software developed at Athena is necessary to the Athena environment of distributed workstations. Other pieces were important for the programming or user environment, though not strictly necessary for the system. These packages are listed here in no particular order: The "clustertab" (for cluster table) system is used primarily for translating printer names. In the timesharing environment, Athena had several "clusters" of VAXen. Each cluster might have its own laser printer, so the real name of a laser printer might differ from cluster to cluster. In order to simplify the system configuration, clustertab was developed to handle the name translation. In the workstation environment, the current implementation of clustertab is not sufficiently flexible. We expect to replace it with a generalized name translation service. The X window system was developed to take advantage of high-resolution bitmapped displays. X is one of the most successful of the Athena-developed packages, as it was distributed with 4.3BSD and is being supported by DEC and, to some extent, IBM. Since Athena is still the focus of X development, the latest system available at Athena is usually installed on our systems, instead of that from 4.3 Implementation of the Remote Virtual Disk (RVD) system was originally done at the MIT Laboratory for Computer Science, though Athena has done much development since acquiring it from LCS. This system is described in detail elsewhere. To support it, we have added several commands for manipulating an RVD server and controlling client use of RVD packs. The Kerberos authentication system, also discussed elsewhere, is being integrated into many applications, including some standard programs from 4.3BSD such as @b[rlogin]. For the most part, these changes are not visible to users of the system. The CHAOSnet user software and servers are installed on those machines connected to CHAOS. All Athena timesharing machines run a modified version of @b[/etc/getty] called a "login server". This version first prompts for a machine name, and then a username and password. If necessary, @b[/etc/getty] executes an @b[rlogin] to a remote host. This function enables users in a timesharing cluster to use a terminal connected to any other machine in the cluster without needing an accounted on each machine. The Athena User Registration system consists of a database of all users, as well as several tools for managing users, groups, and mailing lists. In the early days of Athena, the Penplot graphics package was adopted as an interim graphics library until a good implementation of the Graphics Kernel Standard (GKS) became available. Penplot was developed at the MIT Joint Computer Facility (JCF). Athena will be phasing out the use of Penplot, though we are now responsible for its maintenance since the JCF closed. @MajorSection(Minor Additional Features) Finally, there are some minor changes that Athena has made simply because we prefer that the software works in a certain way. The C shell, for example, has been modified to handle TOPS-20-style command filename completion. @MajorSection[Conclusion] The Athena changes to 4.3BSD primarily consist of a new "layer" of software on top of the standard Berkeley distribution. We modify many configuration files, but that simplifies identifying where changes need to be made. When possible, changes and bug fixes for software are shipped back to Berkeley for inclusion in later releases. This worked well for Athena with 4.2BSD and the beta-test version of 4.3, and we expect it to continue to be successful in the future. @Majorsection[Changes to this document] @begin[verbatim] $Log: athena_changes.mss,v $ Revision 1.2 86/10/31 15:34:22 treese Modified for inclusion in the Technical Plan. Added discussion of expected changes to this document. @end[verbatim]