This topic details the creation and population of a brand new
architecture tree in CIS.
For the purposes of example,
imagine we are adding support for a new operating system called
PhobOS.
Creation
First, a new filesystem containing the architecture needs to
exist on some server.
Traditionally, mount points for physically mounted filesystems
are made under a
/local tree in CIS.
mkdir /local/phobos
Tru64 systems with
AdvFS? would typically do something like this:
mkfset sys phobos
mount 'sys#phobos' /local/phobos
While systems with traditional filesystems (e.g. Solaris) would do this instead:
newfs /dev/dsk/cxtxdxsx
mount /dev/dsk/cxtxdxsx /local/phobos
Exporting
The new filesystem needs to be made available to client systems in the Center
over NFS.
Solaris DFS systems would add the following line to
/etc/dfs/dfstab:
share -F nfs -o rw=cis-unix /local/phobos
While systems using
/etc/exports (e.g. Tru64) would add this line to their
exports file:
/local/phobos -access=cis-unix
Typically, you would use the
showmount command from another
system to check that the filesystems are being exported correctly.
For example, if
saturn is the fileserver being tweaked above,
from another system you might run the following command to ensure
that the new
/local/phobos tree is being exported correctly.
showmount -e saturn.cis.rit.edu
Directories
Note much of the information in this section is "how it should be",
not "how it is".
There's a lot of history and cruft in the system, and for that reason existing
file tree may not look exactly as you see below.
Directories may be called
NEW and
GNU instead of
cis and
gnu,
for example.
Mount points may be an extra level deep.
Things like that.
Keep your eyes open.
There are two trees supported within each filesystem: a CIS tree and a GNU tree.
cd /local/phobos
mkdir cis gnu
Each new tree needs a set of directories created within it.
The set is listed below; each directory should be owned by
root,
part of group
support, and mode
0775.
for tree in cis gnu; do
for dir in bin etc include lib libexec openssl opt share sbin var; do
mkdir -m 0775 $tree/$dir
chown root:support $tree/$dir
done
done
Each tree also has some convenience symlinks at the top.
These are convenient both for users as well as older software
packages that don't understand things like
share.
for tree in cis gnu; do
ln -s share/doc $tree/doc
ln -s share/man $tree/man
ln -s share/info $tree/info
ln -s openssl $tree/ssl
done
Finally, for IDL, ENVI, and other related tools, we need one more symlink
in the
/cis tree.
ln -s /cis/common/rsi cis/rsi
Automount Maps
Over on
leeloo, there are three maps of interest.
auto.master
There needs to be a couple lines pointing
at the CIS and GNU filesystems in the master automounter map (
auto.master).
Typically, these only need to be added once, ever; but make sure
they're there.
They should look something like
/cis auto.cis -rw,hard,intr,nosuid,nodev,noquota
/gnu auto.gnu -rw,hard,intr,nosuid,nodev,noquota
auto.gnu
This is an easy file; unlike the
/cis filesystem, which supports
home directories and all sorts of other things in the Center,
the
/gnu tree is just for programs. The mount map for this
file should contain just the following.
bin -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
doc -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
etc -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
include -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
info -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
lib -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
libexec -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
openssl -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
opt -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
man -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
sbin -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
share -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
ssl -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
var -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/gnu/&
auto.cis
Somewhere in the auto.cis file, there should be a section
that resembles the GNU map above.
The difference is that, instead of
GNU in each line,
it should specify
cis.
Note the addition of
rsi.
bin -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
doc -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
etc -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
include -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
info -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
lib -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
libexec -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
openssl -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
opt -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
man -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
rsi -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
sbin -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
share -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
ssl -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
var -rw,hard,intr,nosuid,nodev,noquota saturn:/local/$ARCH/cis/&
Software Builds
Starting with these two clean, fresh filesystems, what order do we
start putting things out there?
This assumes that you've got a native set of language tools available,
somewhere, on your system.
This also assumes that
/cis and
/gnu both work as above.