.nr H1 3
.nr H2 0
.ds RH "Device and file system configuration
.bp
.LG
.B
.ce
3. DEVICE AND FILE SYSTEM CONFIGURATION
.sp 2
.R
.NL
.PP
This section will describe ways in which the file systems
can be set up for the disks available.
It will then describe the files and directories that will be set up
for the local configuration.  These are the \fI/dev\fP directory,
with special files for each peripheral device,
and the tables in \fI/etc\fP that contain configuration-dependent data.
Some of these files should be edited after reading this section,
and others can wait until later if you choose.
The disk configuration should be chosen before the rest of the distribution
tape is read onto disk to minimize the work of reconfiguration.
.NH 2
Disk configuration
.PP
This section describes how to lay out file systems to make use
of the available space and to balance disk load for better system
performance.
The steps described in this section (3.1) are optional.
.NH 3
Disk naming and divisions
.PP
Each large physical disk drive can be divided into up to 8 partitions;
UNIX typically
uses only 3 to 5 partitions.  For instance, on an RM03
the first partition, rm0a,
is used for a root file system, a backup thereof, or a small file system like
/tmp;
the second partition,
rm0b, is used for swapping or a small file system; and
the third partition, rm0c,
holds a user file system.
Many disks can be divided in different ways;
for example, the third section (\fBc\fP) of the RM03
could instead be divided into two file systems,
using the rm0d
and rm0e
partitions instead, perhaps holding /usr and the user's files.
The disk partition tables are specified in the \fIioconf.c\fP file
for each system, and may be changed if necessary.
The last partition (\fBh\fP) always describes the entire disk, and
can be used for disk-to-disk copies.
.PP
\fBWarning:\fP  for disks on which DEC standard 144 bad sector forwarding
is supported, the last track and up to 126 preceeding sectors
contain replacement sectors and bad sector lists.
Disk-to-disk copies should be careful to avoid overwriting this information.
See \fIbad144\fP\|(8).
Bad sector forwarding is optional in the \fBhk\fP, \fBhp\fP, \fBrm\fP,
and \fBxp\fP drivers.  It has been only lightly tested in the latter
three cases.
.NH 3
Space available
.PP
The space available on a disk varies per device.  The amount of space
available on the common disk partitions for /usr
is listed in the following table.
Not shown in the table are the partitions of each drive devoted
to the root file system and the swapping area.
.DS
.TS
center;
l l n.
Type	Name	Size
_
RK06	hk?d	9.2 Mb
RK07	hk?c	22.4 Mb
RM02, RM03	rm?c	60.2 Mb
RM02, RM03	rm?d	30.9 Mb
RP03	rp?c	33.3 Mb
RP04, RP05, RP06	hp?c	74.9 Mb
RP06	hp?d	158.9 Mb
RM05	xp?c	115.4 Mb
RM05	xp?e	80.9 Mb
.TE
.DE
.PP
Each disk also has a swapping area and a root file system.
.\"CHECK
The distributed system binaries and sources occupy about 38 megabytes.
.PP
The sizes and offsets of all of the disk partitions are in the
manual pages for the disks; see section 4 of the Berkeley PDP-11
\s-2UNIX\s0
Programmer's manual.
Be aware that the disks have their sizes
measured in ``sectors'' of 512 bytes each, while the UNIX file
system blocks are 1024 bytes each.  Thus if a disk partition has
10000 sectors (disk blocks), it will have only 5000 UNIX file system
blocks, and you \fBmust\fP divide by 2 to use 5000 when
specifying the size to the \fImkfs\fP command.
The sizes and offsets in the kernel (ioconf.c) and the manual pages
are in 512-byte blocks.
If bad sector forwarding is supported for your disk, be sure to leave
sufficient room to contain the bad sector information when making
new file systems.
.NH 3
Layout considerations
.PP
There are several considerations in deciding how to adjust the arrangement
of things on your disks:
the most important is making sure there is adequate space
for what is required;
secondarily, throughput should be maximized.
Swapping space is an important parameter.
Since running out of swap space often causes the system to
panic, it must be large enough that this does not happen.
.PP
Many common system programs (the C compiler, the editor, the assembler etc.)
create intermediate files in the /tmp directory,
so the file system where this is stored also should be made
large enough to accommodate
most high-water marks; if you have several disks, it makes
sense to mount this in a ``root'' or ``swap'' (i.e. first or
second partition) file system on another disk.
On RK06 and RK07 systems, where there is little space in the
hk?c or hk?d file systems to store the system source,
it is normal to mount /tmp on /dev/hk1a.
.PP
The efficiency with which UNIX is able to use the CPU
is often strongly affected by the configuration of disks.
For general time-sharing applications,
the best strategy is to try to split the most actively-used sections
among several disk arms.
There are at least five components of the disk load that you can
divide between the available disks:
.DS
1. The root file system.
2. The swap area.
3. The /tmp file system.
4. The /usr file system.
5. The user files.
.DE
Here are several possibilities for utilizing 2, 3 and 4 disks:
.TS
center box;
l | c s s
l | cw(5) | cw(5) | cw(5).
	disks
	_	_	_
what	2	3	4
_
root	1	1	1
tmp	1	3	4
usr	1	2	2
swapping	2	3	4
users	2	1+3	1+3
archive	x	x	4
.TE
.PP
The most important consideration is to
even out the disk load as much as possible, and to do this by
decoupling file systems (on separate arms) between which heavy copying occurs.
Note that a long term average balanced load is not important; it is
much more important to have instantaneously balanced
load when the system is busy.
When placing several busy file systems on the same disk,
it is helpful to group them together to minimize arm movement,
with less active file systems off to the side.
.PP
Intelligent experimentation with a few file system arrangements can
pay off in much improved performance.  It is particularly easy to
move the root, the
/tmp
file system and the swapping areas.  Note, though, that the disks
containing the root and swapping area can never be removed while UNIX is
running.  Place the
user files and the
/usr
directory as space needs dictate and experiment
with the other, more easily moved file systems.
.PP
As an example, consider a system with RM03s.  On the first RM03, \fBrm0\fP,
we will put the root file system in \fBrm0a\fP, and the \fB/usr\fP
file system in \fBrm0c\fP, which has enough space to hold it and then some.
If we had only one RM03, we would put user files
in the \fBrm0c\fP partition with the system source and binaries,
or split them between \fBrm0d\fP and \fBrm0e\fP.
The /tmp directory will be part of the root file system,
as no file system will be mounted on /tmp.
.PP
If we had a second RM03, we would create a file system in \fBrm1c\fP
and put user files there, calling the file system /mnt.
We would keep a backup copy of the root
file system in the \fBrm1a\fP disk partition, a file system
for /tmp on \fBrm0b\fP, and swap on \fBrm1b\fP.
.NH 3
Implementing a layout
.PP
Once a disk layout has been chosen,
the appropriate special files for the disk partitions must be created
(see Setting up the /dev directory, below).
Empty file systems will then be created in the appropriate partitions
with 
.IR mkfs (8),
and the files belonging in the file system can then be restored from tape.
The section on setting up the /usr file system contains detailed information
on this process.
The swap device is specified when the kernel is configured,
which is also discussed later.  At that time, you may also
want to consider whether to use the root device or another
file system (e.g. /tmp) for the pipe device (the pipe device
is a file system where the kernel keeps temporary files
related to pipe I/O; it should be \fImount\fP\^ed before any
I/O through pipes is attempted).
.NH 2
Setting up the /dev directory
.PP
Devices are accessed through special
files in the file system, made by the
.IR mknod (8)
program and normally kept in the /dev directory.
Devices to be supported by UNIX are implemented in the kernel
by drivers; the proper driver is selected by the major device number
and type specified to
.IR mknod .
All devices
supported by the distribution system already have nodes in /dev.
They were created by the /dev/MAKE shell script.
It is easiest to rebuild this directory from the beginning
with the correct devices for your configuration.
First, determine the UNIX names of the devices on your system
(e.g. \fIdh\fP, \fIlp\fP, \fIxp\fP).
Some will be the same as the names of devices on the generic
system.  Others need not be.  See section 4 of the UNIX Programmer's
Manual.
Next create a new directory
/newdev, copy /dev/MAKE into it, edit MAKE
to provide an entry for local needs, replacing the case LOCAL,
and run it to generate the desired devices in the /newdev directory.
The LOCAL entry can be used for any unusual devices, and to rename
standard devices as desired.
It should also move the node for the disk partition being used
as the swap area to \fIswap\fP (or, if swap is after a file system
as on RK05 or RL disks, link the other node to \fIswap\fP).
Different devices are specified to MAKE in various ways.
Terminal multiplexors (DZ and DH) are specified by boards,
and 8 or 16 nodes will be made, as appropriate.
Disks are made by partition, for example xp0c,
so that you may make the nodes corresponding to the file systems
that you intend to use.
Note that \fIhp\fP, \fIrm\fP and \fIxp\fP are actually synonyms,
but you should use the name corresponding to the driver you plan
to use.
The kernel configuration section (section 5.4.1) has more information.
For tape drives, there are different invocations for different types of
controllers, although the nodes produced will have the same names.
The different types are \fIht\fP, \fItm\fP and \fIts\fP, as above,
and also \fIut\fP, which is used for the Emulex TC-11 and other
TM-11 emulations that are also capable of selecting 1600 or 800 bpi
under software control.
Making \fIht0\fP or \fIut0\fP will result in nodes \fImt0\fP and \fImt1\fP
(800 and 1600 bpi, respectively) and parallel nodes for other options;
\fIht1\fP uses the names \fImt2\fP and \fImt3\fP.
See
.IR ht (4)
and
.IR tm (4).
In contrast, the MAKE script makes only one set of nodes for
\fItm\fP or \fIts\fP, without changing the unit number specified.
Different sites use different naming conventions for tapes;
you could use the LOCAL entry in MAKE to move the tape files
to your favorite names.
.PP
As an example, if your machine had a single DZ-11, two
DH-11s, an RP03 disk, two RP06 disks, and a TM03 tape formatter you would do:
.DS
\fB#\fP cd /
\fB#\fP mkdir newdev
\fB#\fP cp /dev/MAKE /newdev/MAKE
\fB#\fP cd newdev
\fB#\fP ./MAKE dz0 dh1 ht0 std LOCAL
\fB#\fP ./MAKE rp0a rp0b rp0c hp0a hp0b hp0c hp1a hp1b hp1d hp1e
.DE
Note the ``std'' argument here that causes standard devices
such as \fIconsole\fP, the console terminal, to be created.
.PP
You can then do
.DS
\fB#\fP cd /
\fB#\fP mv dev genericdev ; mv newdev dev
\fB#\fP sync
.DE
to install the new device directory.
Once you are confident that the new directory is set up properly,
you can remove /genericdev.
.NH 2
Editing system-dependent configuration files
.PP
There are a number of small files in /\fIetc\fP that are used
by various programs to determine things about the local configuration.
At this point, several of these should be edited to describe the
local configuration.  You may have old versions of some of them
which you may want to use, or you may edit the files that are provided
as examples.  Some of this may be done later at your convenience,
but is presented here for organization.
Both \fB/etc/dtab\fP and \fB/etc/fstab\fP should be edited now.
.NH 3
/etc/dtab
.PP
This file contains the list of devices which will be checked at boot time by
.IR autoconfig (8).
The devices that are listed are tested to see whether
they exist and have the correct register addresses and interrupt vectors.
If they do, and the kernel has a corresponding driver routine,
\fIautoconfig\fP notifies the driver that the device exists at that address.
In this way, the addresses and vectors of most devices do not
need to be compiled into the operating system.
The exception is that disks must be preconfigured if they
are to be used as root file systems.
.PP
This file should be edited to include all of the devices on
the system with the exception of the clock and console device.
Other device entries can be deleted or commented out with a '#'
at the beginning of the line.
The format of the entries is defined in
.IR dtab (5).
.IR Autoconfig (8)
describes the autoconfiguration process.
One word of caution:  if a device fails to interrupt as expected,
and if its unit number is specified (not a '?' wildcard),
\fIautoconfig\fP will notify the driver that the device is
\fBnot\fP present, and preconfigured devices (like root disks)
could be disconnected.  Thus, it is probably best to use a '?'
instead of a unit number for your root disks until you
are confident that the probe always finds that disk,
especially if your disk controller is an emulation of another disk type.
Disks that are not used as boot devices for UNIX
can be properly listed with unit numbers.
.NH 3
/etc/fstab
.PP
This file contains the list of file systems normally mounted on the system.
Its format is defined in
.IR fstab (5).
Programs like
.IR df (1)
and
.IR fsck (8)
use this list to control their actions.
Each disk partition that has been assigned a function should be listed
here.
See the manual pages for specifics on how to configure this file.
.NH 3
/etc/ident
.PP
The banner printed by
.IR getty (8)
is read from /etc/ident.
Edit this file to the banner you wish to use.
It may contain special characters to clear terminal screens, etc.,
but note that the same file is used for all terminals.
.NH 3
/etc/motd
.PP
The contents of /etc/motd, the ``message of the day,''
is displayed at the terminal when a user is logged in by
.IR login (1).
.NH 3
/etc/passwd, /etc/group
.PP
These files obviously need local modifications.
See the section on adding new users.
Entries for pseudo-users (user IDs that are not used for logins)
have password fields containing ``***'', since encrypted passwords
never not contain asterisks.
.NH 3
/etc/rc
.PP
As the system begins multiuser operations, it
executes the commands in /etc/rc (see
.IR init (8)).
Most of the commands in this file are standard and should not
be changed, including the section for checking file systems
after a reboot.  These commands will be ignored if autoreboot
is not enabled.
You should edit /etc/rc to set your machine's name.
Look for the line
.DS
	/etc/hostname hostnameunknown
.DE
and change \fIhostnameunknown\fP to the name of your machine.
This name will be used by
.IR Mail (1)
and
.IR uucp (1)
(among others) and should correspond to the name by which your machine is
known to external networks (if any).
At this time you may wish to add additional commands to this file
if you need to start additional daemons, remove old lock files,
or perform any other cleanup as the system comes up.
.NH 3
Configuring terminals
.PP
If UNIX is to support simultaneous
access from more than just the console terminal,
the file /etc/ttys (\fIttys\fP\|(5)) has to be edited.
.PP
Terminals connected via DZ interfaces are conventionally named \fBtty\fP\fIdd\fP
where \fIdd\fP is a decimal number, the ``minor device'' number.
The lines on dz0 are named /dev/tty00, /dev/tty01, ... /dev/tty07.
Lines on DH interfaces are conventionally named \fBttyh\fP\fIx\fP, where \fIx\fP
is a hexadecimal digit.  If more than one DH interface is present
in a configuration, successive terminals would be named
\fBttyi\fP\fIx\fP, \fBttyj\fP\fIx\fP, etc.
.PP
To add a new terminal be sure the device is configured into the system,
that the special file for the device has been made by /dev/MAKE,
and the special file exists. Then set
the first character of the appropriate line of /etc/ttys to 1
(or add a new line).
The first character may also be 3 if the line is also to be used
in maintenance mode (see \fIinit\fP\|(8)).
.PP
The second character of each line in the /etc/ttys file lists
the speed and initial parameter settings for the terminal.
The most common choices, from
.IR getty (8),
are:
.DS
0	300-1200-150-110
3	1200-300
4	300 (e.g. console)
5	300-1200
6	1200
7	2400
8	4800
9	9600
B	autobaud
.DE
Here the first speed is the speed a terminal starts at, and
``break'' switches speeds.
Thus a newly added terminal /dev/tty00 could be added as
.DS
19tty00
.DE
if it was wired to run at 9600 baud.
The ``B'' indicates that \fIgetty\fP should attempt to
guess a line's speed when the user types a carriage return or control-C.
Note that this requires kernel support.  See section 5.3.6 below.
.PP
Dialup terminals should be wired so that the carrier is asserted only when the
phone line is dialed up.
For non-dialup terminals from which modem control
is not available, you must either wire back the signals so that
the carrier always appears to be present, or (for lines on a DH-11 or DZ-11)
add 0200 to the minor device number to indicate that carrier is to be ignored.  See
.IR dh (4)
and
.IR dz (4)
for details.
.PP
You should also edit the file
/etc/ttytype
placing the type of each terminal there (see \fIttytype\fP\|(5)).
.PP
When the system starts running multi-user, all terminals that are listed
in /etc/ttys having a 1 or 3 as the first character of
their line are enabled.  If, during normal operations, it is desired
to disable a terminal line, the super-user can edit the file /etc/ttys,
change the first character of the corresponding line to 0 and
then send a hangup signal to the \fIinit\fP process, by typing (see
.IR kill (1))
.DS
\fB#\fP kill \-1 1
   or
\fB#\fP kill \-HUP 1
.DE
Terminals can similarly be enabled by changing the first character of a line
from a 0 to a 1 and sending a hangup to \fIinit\fP.
.PP
Note that if a special file is inaccessible when \fIinit\fP tries
to create a process for it, init will print a message on the console
and try to reopen the terminal every minute, reprinting the warning
message every 10 minutes.
.PP
Finally note that you should change the names of any dialup
terminals to ttyd?
where ? is in [0-9a-f] since some programs use this property of the
names to decide whether a terminal is a dialup.
Shell commands to do this should be put in the /dev/MAKE
script under case LOCAL.
