[43] in DCNS Development

home help back first fref pref prev next nref lref last post

Filesystem Reorganization for release 7.3

daemon@ATHENA.MIT.EDU (Mark Rosenstein)
Tue Jul 2 18:27:42 1991

Date: Tue, 2 Jul 91 18:25:03 -0400
From: Mark Rosenstein <mar@MIT.EDU>
To: developers@MIT.EDU, release-73@MIT.EDU, acmg@MIT.EDU,

[For a formatted copy, print /mit/mar/txt/filsys.PS.]



                      FILESYSTEM CLEANLINESS ACT OF 1991
                                      or
                   FILESYSTEM REORGANIZATION FOR RELEASE 7.3

``No Problem!''
                                        Athena Faculty Liason

``Everyone will know where everything is; it will be wonderful!''
                                        Athena Systems Support Supervisor

With  this  release,  we  are supporting three new platforms: RS/6000 with AIX,
Macintosh with A/UX, and DECstations with Ultrix 4.2.  One of the  difficulties
in  Athenizing  a  vendor  operating system is deciding where to put the Athena
additions and replacements of vendor-supplied programs.

This topic is  properly  part  of  the  VOSAP  (vendor  operating  systems  and
platforms)  discussion  which  we  have not had time to start yet.  However, it
impacts on the release we are building now, so release engineering  would  like
public feedback on this before the release is finalized.

1 Motivation
By  making this change now, there are no backward-compatibility requirements on
the three new platforms.  If we delay this change, we will have  such  problems
on all of our platforms.

It should be possible to layer Athena software on a machine already running the
vendor operating system.  For this reason, Athena files should be  added  to  a
small number of places, not scattered across the entire operating system.  Even
for machines where Athena operations controls the system software,  it  is  far
easier  for  release-engineering  to  put  together  the  release if the Athena
changes are limited.  This is also an important  issue  in  re-integrating  our
changes when vendor updates are received.

2 Proposal
Nearly  all  Athena  additions will go under /usr/athena, making this the mount
point for the eventual layered Athena system.

   1. Athena software, that is systems written and maintained here will go
      on level under /usr/athena.

         - User binaries will go in /usr/athena/bin.

         - Libraries will go in /usr/athena/lib.

         - Include files will go in /usr/athena/include.

         - Man pages will go in /usr/athena/man.

         - System binaries will go in /usr/athena/etc.

         - The imake configuration files will go in /usr/athena/config.

   2. Third  party  software  will  go under /usr/athena/third (we are not
      completely sold on the name ``third'', if someone can come  up  with
      something better).  In this case, third party software is defined as
      software written and/or maintained elsewhere, even if we  have  made
      small  changes  to  incorporate it into the Athena environment.  The
      notable  exception  to  this   is   X11,   which   will   go   under
      /usr/athena/X11/... since it is such a large subsystem.

         - User binaries will go in /usr/athena/third/bin.

         - Libraries will go in /usr/athena/third/lib.

         - Include files will go in /usr/athena/third/include.

         - Man pages will go in /usr/athena/third/man.

         - System binaries will go in /usr/athena/third/etc.

   3. Some  Athena  additions must be on the root partition for use before
      the  machine  has  come  up  on  the  network  and  mounted   remote
      filesystems.    Other  Athena  additions  must  be on the local disk
      because  they  are  configuration  files  that   may   differ   from
      workstation to workstation.

         - User binaries that must be local go in /bin/athena.

         - System binaries that must be local go in /etc/athena.

         - System configuration files also go in /etc/athena.

   4. In  some cases Athena must replace a vendor binary with an Athenized
      version.  In most cases we will leave the vendor  binary  in  place,
      and put our version in /usr/athena.  The order of directories in the
      user's PATH will ensure that they  get  the  proper  version.    For
      replaced programs that are invoked by absolute pathname (login, lpr,
      inetd, named, snmpd) we will rename the vendor version and leave  it
      in the directory next to our own version.

3 Discussion
The  following  issues  are  examined with three audiences in mind: the student
user in a public cluster, the faculty/staff person owning  a  workstation,  and
the software developer.



3.1 User Visibility
These  changes  should  not be visible to the naive user.  Someone who has only
the dotfiles we give new users and very simple customizations  in  the  way  we
recommend  should  not  notice  that we've changed things on the new platforms.
This can  be  done  by  properly  setting  the  PATH  and  MANPATH  environment
variables, and the compatibility links described below.

For  people  with  dotfile customizations, there are three ways we expect users
might lose.  One is by using explicit paths, i.e.  invoking  /usr/bin/X11/xterm
instead  of  just  xterm.    The most universal solution is not to use explicit
paths and to relay on the PATH  environment  variable  to  find  the  programs.
Another  solution  is to update the paths to the new locations, which will work
on all supported platforms.    We  have  yet  to  investigate  the  performance
difference  of  using explicit paths versus using the PATH environment variable
in dotfiles.

Another way people with customizations may lose is by setting  their  own  PATH
variable  rather than by modifying the default one.  People who just add to the
end of athena_path will have no problems.  People who set their own  path  will
have to be educated to fix this.

The  third  way  we  expect  that some people have have problems is by invoking
features that are not on every platform.  For example, people have been told to
put  unlimit  coredumpsize  in  their  dotfiles  if they want to get coredumps.
Other people have put stty dec in their dotfiles.  These commands will not work
on  some  of  the  new platforms.  We must educate the users and provide sample
dotfiles which have examples of machine-specific  initializations.    Something
else  we  could do to combat all three of these problems is to provide a script
which analyzes the user's dotfiles and suggests changes.

For programmers, there will be other visible changes.  Existing binaries on the
Vax  and  RT  platforms will continue to work.  We will also have compatibility
symlinks on Vaxen and RTs for recompiling working code.   However,  to  compile
anything  on  other  platforms  additional flags will need to be given to cc to
account for the move of include files and  libraries.    These  flags  will  be
forwards  compatible  on  the  Vaxen  and  RTs.    We  will  be recommending to
developers that they use imake to avoid  these  problems.    Documentation  for
developers will be available by the time the release hits the field.



3.2 Backwards compatibility on existing platforms.
Compatibility  for  Vaxen  and  RTs will be forwards compatible symlinks rather
than actually re-arranging  the  filesystems  and  putting  in  many  backwards
compatible  symlinks.    In  this way, references to the old locations of files
will still work, and through these symlinks references  to  the  new  locations
will work as well.  The required links are:

    /usr/athena/bin -> /usr/athena
    /usr/athena/include -> /usr/include
    /usr/athena/etc -> /etc/athena
    /usr/athena/third/bin -> /usr/new
    /usr/athena/third/lib -> /usr/lib
    /usr/athena/X11/bin -> /usr/bin/X11
    /usr/athena/X11/lib -> /usr/lib/X11
    /usr/athena/X11/include -> /usr/include/X11

The  remainder  of  this proposal will not affect users on these platforms.  It
may not ever be worth re-arranging these two platforms.

Because the DECstation release is moving to a new version of Ultrix,  backwards
compatibility support will be minimal on this platform.



3.3 User dotfile support for RIOS.
Several  of  the proposed changes will prohibit people with even simple dotfile
customizations from logging in on a RS/6000.    To  reduce  this  problem,  the
following compatibility symlinks will be installed on this platform only:

/usr/etc/zwgc   Anyone with their own .xsession will have this reference.

/bin/athena/delete
                This is in users' .mh_profile.

/usr/athena/zmailnotify
                This is in users' .zwgc.desc, usually commented out, but anyone
                wanting mail notification is using it.

/usr/athena/session_gate
                Again, anyone with their own .xsession will invoke this.

/usr/athena/emacs
                There are several  ways  that  emacs  is  often  referenced  by
                absolute  pathname,  such as the EDITOR environment variable or
                .mh_profile.

Each of these programs will have a symlink from the old locations  to  the  new
location.



3.4 Man Pages
We  have  moved  the  Athena  man  pages,  and  mention the MANPATH environment
variable.  As of this writing, the only platform we have that does not  support
MANPATH  is  the  DECstation.   On the platform, we have our own version of man
installed earlier in the search path than the Ultrix  man.    Keeping  the  man
pages  separate  means  that  it  is  still possible to look at the original OS
documentation, and our Athena layering will  not  interfere  with  what  is  an
optional subset on many platforms.
3.5 X Integration
Where  to put X is a difficult choice.  One argument says that there is already
a standard location for X binaries: /usr/bin/X11.  But if the vendor puts their
own  version of X there, we have a conflict.  And some third party software may
depend on the vendor's version of X clients.  So we put our X  in  a  different
place.   Some vendors already put their X somewhere other than /usr/bin/X11, so
this is not a major departure from standard practice.    To  avoid  having  any
directories  with too many files in them, we do not put them in /usr/athena/bin
or /usr/athena/third/bin, but in its own place: /usr/athena/X11/bin.

home help back first fref pref prev next nref lref last post