diff options
author | Ted Unangst <tedu@cvs.openbsd.org> | 2010-07-01 20:02:30 +0000 |
---|---|---|
committer | Ted Unangst <tedu@cvs.openbsd.org> | 2010-07-01 20:02:30 +0000 |
commit | 7c9275d132808298c9c7fbfdd44770f4ff8a32ac (patch) | |
tree | ae05c69c16053c2466e4db56db1c66a713fdffc0 /share/doc/smm/01.setup/3.t | |
parent | 353fe33baaaf517f4f383f29c4d858aaf34b18f9 (diff) |
delete a bunch of stale documentation. in theory ok deraadt
Diffstat (limited to 'share/doc/smm/01.setup/3.t')
-rw-r--r-- | share/doc/smm/01.setup/3.t | 1999 |
1 files changed, 0 insertions, 1999 deletions
diff --git a/share/doc/smm/01.setup/3.t b/share/doc/smm/01.setup/3.t deleted file mode 100644 index 0263f3ad1b9..00000000000 --- a/share/doc/smm/01.setup/3.t +++ /dev/null @@ -1,1999 +0,0 @@ -.\" $OpenBSD: 3.t,v 1.4 2003/06/02 23:30:11 millert Exp $ -.\" -.\" Copyright (c) 1980, 1986, 1988, 1993 -.\" The Regents of the University of California. All rights reserved. -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" @(#)3.t 8.1 (Berkeley) 7/27/93 -.\" -.ds lq `` -.ds rq '' -.ds RH "Upgrading a \*(Ps System -.ds CF \*(Dy -.Sh 1 "Upgrading a \*(Ps system" -.PP -This section describes the procedure for upgrading a \*(Ps -system to \*(4B. This procedure may vary according to the version of -the system running before conversion. -If you are converting from a -System V system, some of this section will still apply (in particular, -the filesystem conversion). However, many of the system configuration -files are different, and the executable file formats are completely -incompatible. -.PP -In particular be wary when using this information to upgrade -a \*(Ps HP300 system. -There are at least four different versions of ``\*(Ps'' out there: -.IP 1) -HPBSD 1.x from Utah. -.br -This was the original version of \*(Ps for HP300s from which the -other variants (and \*(4B) are derived. -It is largely a \*(Ps system with Sun's NFS 3.0 filesystem code and -some \*(Ps-Tahoe features (e.g. networking code). -Since the filesystem code is 4.2/4.3 vintage and the filesystem -hierarchy is largely \*(Ps, most of this section should apply. -.IP 2) -MORE/bsd from Mt. Xinu. -.br -This is a \*(Ps-Tahoe vintage system with Sun's NFS 4.0 filesystem code -upgraded with Tahoe UFS features. -The instructions for \*(Ps-Tahoe should largely apply. -.IP 3) -\*(Ps-Reno from CSRG. -.br -At least one site bootstrapped HP300 support from the Reno distribution. -The Reno filesystem code was somewhere between \*(Ps and \*(4B: the VFS switch -had been added but many of the UFS features (e.g. ``inline'' symlinks) -were missing. -The filesystem hierarchy reorganization first appeared in this release. -Be extremely careful following these instructions if you are -upgrading from the Reno distribution. -.IP 4) -HPBSD 2.0 from Utah. -.br -As if things were not bad enough already, -this release has the \*(4B filesystem and networking code -as well as some utilities, but still has a \*(Ps hierarchy. -No filesystem conversions are necessary for this upgrade, -but files will still need to be moved around. -.Sh 2 "Installation overview" -.PP -If you are running \*(Ps, upgrading your system -involves replacing your kernel and system utilities. -In general, there are three possible ways to install a new \*(Bs distribution: -(1) boot directly from the distribution tape, use it to load new binaries -onto empty disks, and then merge or restore any existing configuration files -and filesystems; -(2) use an existing \*(Ps or later system to extract the root and -.Pn /usr -filesystems from the distribution tape, -boot from the new system, then merge or restore existing -configuration files and filesystems; or -(3) extract the sources from the distribution tape onto an existing system, -and use that system to cross-compile and install \*(4B. -For this release, the second alternative is strongly advised, -with the third alternative reserved as a last resort. -In general, older binaries will continue to run under \*(4B, -but there are many exceptions that are on the critical path -for getting the system running. -Ideally, the new system binaries (root and -.Pn /usr -filesystems) should be installed on spare disk partitions, -then site-specific files should be merged into them. -Once the new system is up and fully merged, the previous root and -.Pn /usr -filesystems can be reused. -Other existing filesystems can be retained and used, -except that (as usual) the new -.Xr fsck -should be run before they are mounted. -.PP -It is \fBSTRONGLY\fP advised that you make full dumps of each filesystem -before beginning, especially any that you intend to modify in place -during the merge. -It is also desirable to run filesystem checks -of all filesystems to be converted to \*(4B before shutting down. -This is an excellent time to review your disk configuration -for possible tuning of the layout. -Most systems will need to provide a new filesystem for system use -mounted on -.Pn /var -(see below). -However, the -.Pn /tmp -filesystem can be an MFS virtual-memory-resident filesystem, -potentially freeing an existing disk partition. -(Additional swap space may be desirable as a consequence.) -See -.Xr mount_mfs (8). -.PP -The recommended installation procedure includes the following steps. -The order of these steps will probably vary according to local needs. -.IP \(bu -Extract root and -.Pn /usr -filesystems from the distribution tapes. -.IP \(bu -Extract kernel and/or user-level sources from the distribution tape -if space permits. -This can serve as the backup documentation as needed. -.IP \(bu -Configure and boot a kernel for the local system. -This can be delayed if the generic kernel from the distribution -supports enough hardware to proceed. -.IP \(bu -Build a skeletal -.Pn /var -filesystem (see -.Xr mtree (8)). -.IP \(bu -Merge site-dependent configuration files from -.Pn /etc -and -.Pn /usr/lib -into the new -.Pn /etc -directory. -Note that many file formats and contents have changed; see section 3.4 -of this document. -.IP \(bu -Copy or merge files from -.Pn /usr/adm , -.Pn /usr/spool , -.Pn /usr/preserve , -.Pn /usr/lib , -and other locations into -.Pn /var . -.IP \(bu -Merge local macros, dictionaries, etc. into -.Pn /usr/share . -.IP \(bu -Merge and update local software to reflect the system changes. -.IP \(bu -Take off the rest of the morning, you've earned it! -.PP -Section 3.2 lists the files to be saved as part of the conversion process. -Section 3.3 describes the bootstrap process. -Section 3.4 discusses the merger of the saved files back into the new system. -Section 3.5 gives an overview of the major -bug fixes and changes between \*(Ps and \*(4B. -Section 3.6 provides general hints on possible problems to be -aware of when converting from \*(Ps to \*(4B. -.Sh 2 "Files to save" -.PP -The following list enumerates the standard set of files you will want to -save and suggests directories in which site-specific files should be present. -This list will likely be augmented with non-standard files you -have added to your system. -If you do not have enough space to create parallel -filesystems, you should create a -.Xr tar -image of the following files before the new filesystems are created. -The rest of this subsection describes where theses files -have moved and how they have changed. -.TS -lfC c l. -/.cshrc \(dg root csh startup script (moves to \f(CW/root/.cshrc\fP) -/.login \(dg root csh login script (moves to \f(CW/root/.login\fP) -/.profile \(dg root sh startup script (moves to \f(CW/root/.profile\fP) -/.rhosts \(dg for trusted machines and users (moves to \f(CW/root/.rhosts\fP) -/etc/disktab \(dd in case you changed disk partition sizes -/etc/fstab * disk configuration data -/etc/ftpusers \(dg for local additions -/etc/gettytab \(dd getty database -/etc/group * group data base -/etc/hosts \(dg for local host information -/etc/hosts.equiv \(dg for local host equivalence information -/etc/hosts.lpd \(dg printer access file -/etc/inetd.conf * Internet services configuration data -/etc/named* \(dg named configuration files -/etc/netstart \(dg network initialization -/etc/networks \(dg for local network information -/etc/passwd * user data base -/etc/printcap * line printer database -/etc/protocols \(dd in case you added any local protocols -/etc/rc * for any local additions -/etc/rc.local * site specific system startup commands -/etc/remote \(dg auto-dialer configuration -/etc/services \(dd for local additions -/etc/shells \(dd list of valid shells -/etc/syslog.conf * system logger configuration -/etc/securettys * merged into ttys -/etc/ttys * terminal line configuration data -/etc/ttytype * merged into ttys -/etc/termcap \(dd for any local entries that may have been added -/lib \(dd for any locally developed language processors -/usr/dict/* \(dd for local additions to words and papers -/usr/include/* \(dd for local additions -/usr/lib/aliases * mail forwarding data base (moves to \f(CW/etc/aliases\fP) -/usr/lib/crontab * cron daemon data base (moves to \f(CW/etc/crontab\fP) -/usr/lib/crontab.local * local cron daemon data base (moves to \f(CW/etc/crontab.local\fP) -/usr/lib/lib*.a \(dg for local libraries -/usr/lib/mail.rc \(dg system-wide mail(1) initialization (moves to \f(CW/etc/mail.rc\fP) -/usr/lib/sendmail.cf * sendmail configuration (moves to \f(CW/etc/sendmail.cf\fP) -/usr/lib/tmac/* \(dd for locally developed troff/nroff macros (moves to \f(CW/usr/share/tmac/*\fP) -/usr/lib/uucp/* \(dg for local uucp configuration files -/usr/man/manl * for manual pages for locally developed programs (moves to \f(CW/usr/local/man\fP) -/usr/spool/* \(dg for current mail, news, uucp files, etc. (moves to \f(CW/var/spool\fP) -/usr/src/local \(dg for source for locally developed programs -/sys/conf/HOST \(dg configuration file for your machine (moves to \f(CW/sys/<arch>/conf\fP) -/sys/conf/files.HOST \(dg list of special files in your kernel (moves to \f(CW/sys/<arch>/conf\fP) -/*/quotas * filesystem quota files (moves to \f(CW/*/quotas.user\fP) -.TE -.DS -\(dg\|Files that can be used from \*(Ps without change. -\(dd\|Files that need local changes merged into \*(4B files. -*\|Files that require special work to merge and are discussed in section 3.4. -.DE -.Sh 2 "Installing \*(4B" -.PP -The next step is to build a working \*(4B system. -This can be done by following the steps in section 2 of -this document for extracting the root and -.Pn /usr -filesystems from the distribution tape onto unused disk partitions. -For the SPARC, the root filesystem dump on the tape could also be -extracted directly. -For the HP300 and DECstation, the raw disk image can be copied -into an unused partition and this partition can then be dumped -to create an image that can be restored. -The exact procedure chosen will depend on the disk configuration -and the number of suitable disk partitions that may be used. -It is also desirable to run filesystem checks -of all filesystems to be converted to \*(4B before shutting down. -In any case, this is an excellent time to review your disk configuration -for possible tuning of the layout. -Section 2.5 and -.Xr config (8) -are required reading. -.LP -The filesystem in \*(4B has been reorganized in an effort to -meet several goals: -.IP 1) -The root filesystem should be small. -.IP 2) -There should be a per-architecture centrally-shareable read-only -.Pn /usr -filesystem. -.IP 3) -Variable per-machine directories should be concentrated below -a single mount point named -.Pn /var . -.IP 4) -Site-wide machine independent shareable text files should be separated -from architecture specific binary files and should be concentrated below -a single mount point named -.Pn /usr/share . -.LP -These goals are realized with the following general layouts. -The reorganized root filesystem has the following directories: -.TS -lfC l. -/etc (config files) -/bin (user binaries needed when single-user) -/sbin (root binaries needed when single-user) -/local (locally added binaries used only by this machine) -/tmp (mount point for memory based filesystem) -/dev (local devices) -/home (mount point for AMD) -/var (mount point for per-machine variable directories) -/usr (mount point for multiuser binaries and files) -.TE -.LP -The reorganized -.Pn /usr -filesystem has the following directories: -.TS -lfC l. -/usr/bin (user binaries) -/usr/contrib (software contributed to \*(4B) -/usr/games (binaries for games, score files in \f(CW/var\fP) -/usr/include (standard include files) -/usr/lib (lib*.a from old \f(CW/usr/lib\fP) -/usr/libdata (databases from old \f(CW/usr/lib\fP) -/usr/libexec (executables from old \f(CW/usr/lib\fP) -/usr/local (locally added binaries used site-wide) -/usr/old (deprecated binaries) -/usr/sbin (root binaries) -/usr/share (mount point for site-wide shared text) -/usr/src (mount point for sources) -.TE -.LP -The reorganized -.Pn /usr/share -filesystem has the following directories: -.TS -lfC l. -/usr/share/calendar (various useful calendar files) -/usr/share/dict (dictionaries) -/usr/share/doc (\*(4B manual sources) -/usr/share/games (games text files) -/usr/share/groff_font (groff font information) -/usr/share/man (typeset manual pages) -/usr/share/misc (dumping ground for random text files) -/usr/share/mk (templates for \*(4B makefiles) -/usr/share/skel (template user home directory files) -/usr/share/tmac (various groff macro packages) -/usr/share/zoneinfo (information on time zones) -.TE -.LP -The reorganized -.Pn /var -filesystem has the following directories: -.TS -lfC l. -/var/account (accounting files, formerly \f(CW/usr/adm\fP) -/var/at (\fIat\fP\|(1) spooling area) -/var/backups (backups of system files) -/var/crash (crash dumps) -/var/db (system-wide databases, e.g. tags) -/var/games (score files) -/var/log (log files) -/var/mail (users mail) -/var/obj (hierarchy to build \f(CW/usr/src\fP) -/var/preserve (preserve area for vi) -/var/quotas (directory to store quota files) -/var/run (directory to store *.pid files) -/var/rwho (rwho databases) -/var/spool/ftp (home directory for anonymous ftp) -/var/spool/mqueue (sendmail spooling directory) -/var/spool/news (news spooling area) -/var/spool/output (printer spooling area) -/var/spool/uucp (uucp spooling area) -/var/tmp (disk-based temporary directory) -/var/users (root of per-machine user home directories) -.TE -.PP -The \*(4B bootstrap routines pass the identity of the boot device -through to the kernel. -The kernel then uses that device as its root filesystem. -Thus, for example, if you boot from -.Pn /dev/\*(Dk1a , -the kernel will use -.Pn \*(Dk1a -as its root filesystem. If -.Pn /dev/\*(Dk1b -is configured as a swap partition, -it will be used as the initial swap area, -otherwise the normal primary swap area (\c -.Pn /dev/\*(Dk0b ) -will be used. -The \*(4B bootstrap is backward compatible with \*(Ps, -so you can replace your old bootstrap if you use it -to boot your first \*(4B kernel. -However, the \*(Ps bootstrap cannot access \*(4B filesystems, -so if you plan to convert your filesystems to \*(4B, -you must install a new bootstrap \fIbefore\fP doing the conversion. -Note that SPARC users cannot build a \*(4B compatible version -of the bootstrap, so must \fInot\fP convert their root filesystem -to the new \*(4B format. -.PP -Once you have extracted the \*(4B system and booted from it, -you will have to build a kernel customized for your configuration. -If you have any local device drivers, -they will have to be incorporated into the new kernel. -See section 4.1.3 and ``Building 4.3BSD UNIX Systems with Config'' (SMM:2). -.PP -If converting from \*(Ps, your old filesystems should be converted. -If you've modified the partition -sizes from the original \*(Ps ones, and are not already using the -\*(4B disk labels, you will have to modify the default disk partition -tables in the kernel. Make the necessary table changes and boot -your custom kernel \fBBEFORE\fP trying to access any of your old -filesystems! After doing this, if necessary, the remaining filesystems -may be converted in place by running the \*(4B version of -.Xr fsck (8) -on each filesystem and allowing it to make the necessary corrections. -The new version of -.Xr fsck -is more strict about the size of directories than -the version supplied with \*(Ps. -Thus the first time that it is run on a \*(Ps filesystem, -it will produce messages of the form: -.DS -\fBDIRECTORY ...: LENGTH\fP xx \fBNOT MULTIPLE OF 512 (ADJUSTED)\fP -.DE -Length ``xx'' will be the size of the directory; -it will be expanded to the next multiple of 512 bytes. -The new -.Xr fsck -will also set default \fIinterleave\fP and -\fInpsect\fP (number of physical sectors per track) values on older -filesystems, in which these fields were unused spares; this correction -will produce messages of the form: -.DS -\fBIMPOSSIBLE INTERLEAVE=0 IN SUPERBLOCK (SET TO DEFAULT)\fP\** -\fBIMPOSSIBLE NPSECT=0 IN SUPERBLOCK (SET TO DEFAULT)\fP -.DE -.FS -The defaults are to set \fIinterleave\fP to 1 and -\fInpsect\fP to \fInsect\fP. -This is correct on most drives; -it affects only performance (usually virtually unmeasurably). -.FE -Filesystems that have had their interleave and npsect values -set will be diagnosed by the old -.Xr fsck -as having a bad superblock; the old -.Xr fsck -will run only if given an alternate superblock -(\fIfsck \-b32\fP), -in which case it will re-zero these fields. -The \*(4B kernel will internally set these fields to their defaults -if fsck has not done so; again, the \fI\-b32\fP option may be -necessary for running the old -.Xr fsck . -.PP -In addition, \*(4B removes several limits on filesystem sizes -that were present in \*(Ps. -The limited filesystems -continue to work in \*(4B, but should be converted -as soon as it is convenient -by running -.Xr fsck -with the \fI\-c 2\fP option. -The sequence \fIfsck \-p \-c 2\fP will update them all, -fix the interleave and npsect fields, -fix any incorrect directory lengths, -expand maximum uid's and gid's to 32-bits, -place symbolic links less than 60 bytes into their inode, -and fill in directory type fields all at once. -The new filesystem formats are incompatible with older systems. -If you wish to continue using these filesystems with the older -systems you should make only the compatible changes using -\fIfsck \-c 1\fP. -.Sh 2 "Merging your files from \*(Ps into \*(4B" -.PP -When your system is booting reliably and you have the \*(4B root and -.Pn /usr -filesystems fully installed you will be ready -to continue with the next step in the conversion process, -merging your old files into the new system. -.PP -If you saved the files on a -.Xr tar -tape, extract them into a scratch directory, say -.Pn /usr/convert : -.DS -\fB#\fP \fImkdir /usr/convert\fP -\fB#\fP \fIcd /usr/convert\fP -\fB#\fP \fItar xp\fP -.DE -.PP -The data files marked in the previous table with a dagger (\(dg) -may be used without change from the previous system. -Those data files marked with a double dagger (\(dd) have syntax -changes or substantial enhancements. -You should start with the \*(4B version and carefully -integrate any local changes into the new file. -Usually these local changes can be incorporated -without conflict into the new file; -some exceptions are noted below. -The files marked with an asterisk (*) require -particular attention and are discussed below. -.PP -As described in section 3.3, -the most immediately obvious change in \*(4B is the reorganization -of the system filesystems. -Users of certain recent vendor releases have seen this general organization, -although \*(4B takes the reorganization a bit further. -The directories most affected are -.Pn /etc , -that now contains only system configuration files; -.Pn /var , -a new filesystem containing per-system spool and log files; and -.Pn /usr/share, -that contains most of the text files shareable across architectures -such as documentation and macros. -System administration programs formerly in -.Pn /etc -are now found in -.Pn /sbin -and -.Pn /usr/sbin . -Various programs and data files formerly in -.Pn /usr/lib -are now found in -.Pn /usr/libexec -and -.Pn /usr/libdata , -respectively. -Administrative files formerly in -.Pn /usr/adm -are in -.Pn /var/account -and, similarly, log files are now in -.Pn /var/log . -The directory -.Pn /usr/ucb -has been merged into -.Pn /usr/bin , -and the sources for programs in -.Pn /usr/bin -are in -.Pn /usr/src/usr.bin . -Other source directories parallel the destination directories; -.Pn /usr/src/etc -has been greatly expanded, and -.Pn /usr/src/share -is new. -The source for the manual pages, in general, are with the source -code for the applications they document. -Manual pages not closely corresponding to an application program -are found in -.Pn /usr/src/share/man . -The locations of all man pages is listed in -.Pn /usr/src/share/man/man0/man[1-8] . -The manual page -.Xr hier (7) -has been updated and made more detailed; -it is included in the printed documentation. -You should review it to familiarize yourself with the new layout. -.PP -A new utility, -.Xr mtree (8), -is provided to build and check filesystem hierarchies -with the proper contents, owners and permissions. -Scripts are provided in -.Pn /etc/mtree -(and -.Pn /usr/src/etc/mtree ) -for the root, -.Pn /usr -and -.Pn /var -filesystems. -Once a filesystem has been made for -.Pn /var , -.Xr mtree -can be used to create a directory hierarchy there -or you can simply use tar to extract the prototype from -the second file of the distribution tape. -.Sh 3 "Changes in the \f(CW/etc\fP directory" -.PP -The -.Pn /etc -directory now contains nearly all the host-specific configuration -files. -Note that some file formats have changed, -and those configuration files containing pathnames are nearly all affected -by the reorganization. -See the examples provided in -.Pn /etc -(installed from -.Pn /usr/src/etc ) -as a guide. -The following table lists some of the local configuration files -whose locations and/or contents have changed. -.TS -l l l -lfC lfC l. -\*(Ps and Earlier \*(4B Comments -_ _ _ -/etc/fstab /etc/fstab new format; see below -/etc/inetd.conf /etc/inetd.conf pathnames of executables changed -/etc/printcap /etc/printcap pathnames changed -/etc/syslog.conf /etc/syslog.conf pathnames of log files changed -/etc/ttys /etc/ttys pathnames of executables changed -/etc/passwd /etc/master.passwd new format; see below -/usr/lib/sendmail.cf /etc/sendmail.cf changed pathnames -/usr/lib/aliases /etc/aliases may contain changed pathnames -/etc/*.pid /var/run/*.pid - -.T& -l l l -lfC lfC l. -New in \*(Ps-Tahoe \*(4B Comments -_ _ _ -/usr/games/dm.config /etc/dm.conf configuration for games (see \fIdm\fP\|(8)) -/etc/zoneinfo/localtime /etc/localtime timezone configuration -/etc/zoneinfo /usr/share/zoneinfo timezone configuration -.TE -.ne 1.5i -.TS -l l l -lfC lfC l. - New in \*(4B Comments -_ _ _ - /etc/aliases.db database version of the aliases file - /etc/amd-home location database of home directories - /etc/amd-vol location database of exported filesystems - /etc/changelist \f(CW/etc/security\fP files to back up - /etc/csh.cshrc system-wide csh(1) initialization file - /etc/csh.login system-wide csh(1) login file - /etc/csh.logout system-wide csh(1) logout file - /etc/disklabels directory for saving disklabels - /etc/exports NFS list of export permissions - /etc/ftpwelcome message displayed for ftp users; see ftpd(8) - /etc/kerberosIV Kerberos directory; see below - /etc/man.conf lists directories searched by \fIman\fP\|(1) - /etc/mtree directory for local mtree files; see mtree(8) - /etc/netgroup NFS group list used in \f(CW/etc/exports\fP - /etc/pwd.db non-secure hashed user data base file - /etc/spwd.db secure hashed user data base file - /etc/security daily system security checker -.TE -.PP -System security changes require adding several new ``well-known'' groups to -.Pn /etc/group . -The groups that are needed by the system as distributed are: -.TS -l n l. -name number purpose -_ -wheel 0 users allowed superuser privilege -daemon 1 processes that need less than wheel privilege -kmem 2 read access to kernel memory -sys 3 access to kernel sources -tty 4 access to terminals -operator 5 read access to raw disks -bin 7 group for system binaries -news 8 group for news -wsrc 9 write access to sources -games 13 access to games -staff 20 system staff -guest 31 system guests -nobody 39 the least privileged group -utmp 45 access to utmp files -dialer 117 access to remote ports and dialers -.TE -Only users in the ``wheel'' group are permitted to -.Xr su -to ``root''. -Most programs that manage directories in -.Pn /var/spool -now run set-group-id to ``daemon'' so that users cannot -directly access the files in the spool directories. -The special files that access kernel memory, -.Pn /dev/kmem -and -.Pn /dev/mem , -are made readable only by group ``kmem''. -Standard system programs that require this access are -made set-group-id to that group. -The group ``sys'' is intended to control access to kernel sources, -and other sources belong to group ``wsrc.'' -Rather than make user terminals writable by all users, -they are now placed in group ``tty'' and made only group writable. -Programs that should legitimately have access to write on user terminals -such as -.Xr talkd -and -.Xr write -now run set-group-id to ``tty''. -The ``operator'' group controls access to disks. -By default, disks are readable by group ``operator'', -so that programs such as -.Xr dump -can access the filesystem information without being set-user-id to ``root''. -The -.Xr shutdown (8) -program is executable only by group operator -and is setuid to root so that members of group operator may shut down -the system without root access. -.PP -The ownership and modes of some directories have changed. -The -.Xr at -programs now run set-user-id ``root'' instead of ``daemon.'' -Also, the uucp directory no longer needs to be publicly writable, -as -.Xr tip -reverts to privileged status to remove its lock files. -After copying your version of -.Pn /var/spool , -you should do: -.DS -\fB#\fP \fIchown \-R root /var/spool/at\fP -\fB#\fP \fIchown \-R uucp:daemon /var/spool/uucp\fP -\fB#\fP \fIchmod \-R o\-w /var/spool/uucp\fP -.DE -.PP -The format of the cron table, -.Pn /etc/crontab , -has been changed to specify the user-id that should be used to run a process. -The userid ``nobody'' is frequently useful for non-privileged programs. -Local changes are now put in a separate file, -.Pn /etc/crontab.local . -.PP -Some of the commands previously in -.Pn /etc/rc.local -have been moved to -.Pn /etc/rc ; -several new functions are now handled by -.Pn /etc/rc , -.Pn /etc/netstart -and -.Pn /etc/rc.local . -You should look closely at the prototype version of these files -and read the manual pages for the commands contained in it -before trying to merge your local copy. -Note in particular that -.Xr ifconfig -has had many changes, -and that host names are now fully specified as domain-style names -(e.g., vangogh.CS.Berkeley.EDU) for the benefit of the name server. -.PP -Some of the commands previously in -.Pn /etc/daily -have been moved to -.Pn /etc/security , -and several new functions have been added to -.Pn /etc/security -to do nightly security checks on the system. -The script -.Pn /etc/daily -runs -.Pn /etc/security -each night, and mails the output to the super-user. -Some of the checks done by -.Pn /etc/security -are: -.DS -\(bu Syntax errors in the password and group files. -\(bu Duplicate user and group names and id's. -\(bu Dangerous search paths and umask values for the superuser. -\(bu Dangerous values in various initialization files. -\(bu Dangerous .rhosts files. -\(bu Dangerous directory and file ownership or permissions. -\(bu Globally exported filesystems. -\(bu Dangerous owners or permissions for special devices. -.DE -In addition, it reports any changes to setuid and setgid files, special -devices, or the files in -.Pn /etc/changelist -since the last run of -.Pn /etc/security . -Backup copies of the files are saved in -.Pn /var/backups . -Finally, the system binaries are checksummed and their permissions -validated against the -.Xr mtree (8) -specifications in -.Pn /etc/mtree . -.PP -The C-library and system binaries on the distribution tape -are compiled with new versions of -.Xr gethostbyname -and -.Xr gethostbyaddr -that use the name server, -.Xr named (8). -If you have only a small network and are not connected -to a large network, you can use the distributed library routines without -any problems; they use a linear scan of the host table -.Pn /etc/hosts -if the name server is not running. -If you are on the Internet or have a large local network, -it is recommend that you set up -and use the name server. -For instructions on how to set up the necessary configuration files, -refer to ``Name Server Operations Guide for BIND'' (SMM:10). -Several programs rely on the host name returned by -.Xr gethostname -to determine the local domain name. -.PP -If you are using the name server, your -.Xr sendmail -configuration file will need some updates to accommodate it. -See the ``Sendmail Installation and Operation Guide'' (SMM:8) and -the sample -.Xr sendmail -configuration files in -.Pn /usr/src/usr.sbin/sendmail/cf . -The aliases file, -.Pn /etc/aliases -has also been changed to add certain well-known addresses. -.Sh 3 "Shadow password files" -.PP -The password file format adds change and expiration fields -and its location has changed to protect -the encrypted passwords stored there. -The actual password file is now stored in -.Pn /etc/master.passwd . -The hashed dbm password files do not contain encrypted passwords, -but contain the file offset to the entry with the password in -.Pn /etc/master.passwd -(that is readable only by root). -Thus, the -.Fn getpwnam -and -.Fn getpwuid -functions will no longer return an encrypted password string to non-root -callers. -An old-style passwd file is created in -.Pn /etc/passwd -by the -.Xr vipw (8) -and -.Xr pwd_mkdb (8) -programs. -See also -.Xr passwd (5). -.PP -Several new users have also been added to the group of ``well-known'' users in -.Pn /etc/passwd . -The current list is: -.DS -.TS -l c. -name number -_ -root 0 -daemon 1 -operator 2 -bin 3 -games 7 -uucp 66 -nobody 32767 -.TE -.DE -The ``daemon'' user is used for daemon processes that -do not need root privileges. -The ``operator'' user-id is used as an account for dumpers -so that they can log in without having the root password. -By placing them in the ``operator'' group, -they can get read access to the disks. -The ``uucp'' login has existed long before \*(4B, -and is noted here just to provide a common user-id. -The password entry ``nobody'' has been added to specify -the user with least privilege. The ``games'' user is a pseudo-user -that controls access to game programs. -.PP -After installing your updated password file, you must run -.Xr pwd_mkdb (8) -to create the password database. -Note that -.Xr pwd_mkdb (8) -is run whenever -.Xr vipw (8) -is run. -.Sh 3 "The \f(CW/var\fP filesystem" -.PP -The spooling directories saved on tape may be restored in their -eventual resting places without too much concern. Be sure to -use the `\-p' option to -.Xr tar (1) -so that files are recreated with the same file modes. -The following commands provide a guide for copying spool and log files from -an existing system into a new -.Pn /var -filesystem. -At least the following directories should already exist on -.Pn /var : -.Pn output , -.Pn log , -.Pn backups -and -.Pn db . -.LP -.DS -.ft CW -SRC=/oldroot/usr - -cd $SRC; tar cf - msgs preserve | (cd /var && tar xpf -) -.DE -.DS -.ft CW -# copy $SRC/spool to /var -cd $SRC/spool -tar cf - at mail rwho | (cd /var && tar xpf -) -tar cf - ftp mqueue news secretmail uucp uucppublic | \e - (cd /var/spool && tar xpf -) -.DE -.DS -.ft CW -# everything else in spool is probably a printer area -mkdir .save -mv at ftp mail mqueue rwho secretmail uucp uucppublic .save -tar cf - * | (cd /var/spool/output && tar xpf -) -mv .save/* . -rmdir .save -.DE -.DS -.ft CW -cd /var/spool/mqueue -mv syslog.7 /var/log/maillog.7 -mv syslog.6 /var/log/maillog.6 -mv syslog.5 /var/log/maillog.5 -mv syslog.4 /var/log/maillog.4 -mv syslog.3 /var/log/maillog.3 -mv syslog.2 /var/log/maillog.2 -mv syslog.1 /var/log/maillog.1 -mv syslog.0 /var/log/maillog.0 -mv syslog /var/log/maillog -.DE -.DS -.ft CW -# move $SRC/adm to /var -cd $SRC/adm -tar cf - . | (cd /var/account && tar xpf -) -cd /var/account -rm -f msgbuf -mv messages messages.[0-9] ../log -mv wtmp wtmp.[0-9] ../log -mv lastlog ../log -.DE -.Sh 2 "Bug fixes and changes between \*(Ps and \*(4B" -.PP -The major new facilities available in the \*(4B release are -a new virtual memory system, -the addition of ISO/OSI networking support, -a new virtual filesystem interface supporting filesystem stacking, -a freely redistributable implementation of NFS, -a log-structured filesystem, -enhancement of the local filesystems to support -files and filesystems that are up to 2^63 bytes in size, -enhanced security and system management support, -and the conversion to and addition of the IEEE Std1003.1 (``POSIX'') -facilities and many of the IEEE Std1003.2 facilities. -In addition, many new utilities and additions to the C -library are present as well. -The kernel sources have been reorganized to collect all machine-dependent -files for each architecture under one directory, -and most of the machine-independent code is now free of code -conditional on specific machines. -The user structure and process structure have been reorganized -to eliminate the statically-mapped user structure and to make most -of the process resources shareable by multiple processes. -The system and include files have been converted to be compatible -with ANSI C, including function prototypes for most of the exported -functions. -There are numerous other changes throughout the system. -.Sh 3 "Changes to the kernel" -.PP -This release includes several important structural kernel changes. -The kernel uses a new internal system call convention; -the use of global (``u-dot'') variables for parameters and error returns -has been eliminated, -and interrupted system calls no longer abort using non-local goto's (longjmp's). -A new sleep interface separates signal handling from scheduling priority, -returning characteristic errors to abort or restart the current system call. -This sleep call also passes a string describing the process state, -that is used by the ps(1) program. -The old sleep interface can be used only for non-interruptible sleeps. -The sleep interface (\fItsleep\fP) can be used at any priority, -but is only interruptible if the PCATCH flag is set. -When interrupted, \fItsleep\fP returns EINTR or ERESTART. -.PP -Many data structures that were previously statically allocated -are now allocated dynamically. -These structures include mount entries, file entries, -user open file descriptors, the process entries, the vnode table, -the name cache, and the quota structures. -.PP -To protect against indiscriminate reading or writing of kernel -memory, all writing and most reading of kernel data structures -must be done using a new ``sysctl'' interface. -The information to be accessed is described through an extensible -``Management Information Base'' (MIB) style name, -described as a dotted set of components. -A new utility, -.Xr sysctl (8), -retrieves kernel state and allows processes with appropriate -privilege to set kernel state. -.Sh 3 "Security" -.PP -The kernel runs with four different levels of security. -Any superuser process can raise the security level, but only -.Fn init (8) -can lower it. -Security levels are defined as follows: -.IP \-1 -Permanently insecure mode \- always run system in level 0 mode. -.IP " 0" -Insecure mode \- immutable and append-only flags may be turned off. -All devices may be read or written subject to their permissions. -.IP " 1" -Secure mode \- immutable and append-only flags may not be cleared; -disks for mounted filesystems, -.Pn /dev/mem , -and -.Pn /dev/kmem -are read-only. -.IP " 2" -Highly secure mode \- same as secure mode, plus disks are always -read-only whether mounted or not. -This level precludes tampering with filesystems by unmounting them, -but also inhibits running -.Xr newfs (8) -while the system is multi-user. -See -.Xr chflags (1) -and the \-\fBo\fP option to -.Xr ls (1) -for information on setting and displaying the immutable and append-only -flags. -.PP -Normally, the system runs in level 0 mode while single user -and in level 1 mode while multiuser. -If the level 2 mode is desired while running multiuser, -it can be set in the startup script -.Pn /etc/rc -using -.Xr sysctl (1). -If it is desired to run the system in level 0 mode while multiuser, -the administrator must build a kernel with the variable -.Li securelevel -in the kernel source file -.Pn /sys/kern/kern_sysctl.c -initialized to \-1. -.Sh 4 "Virtual memory changes" -.PP -The new virtual memory implementation is derived from the Mach -operating system developed at Carnegie-Mellon, -and was ported to the BSD kernel at the University of Utah. -It is based on the 2.0 release of Mach -(with some bug fixes from the 2.5 and 3.0 releases) -and retains many of its essential features such as -the separation of the machine dependent and independent layers -(the ``pmap'' interface), -efficient memory utilization using copy-on-write -and other lazy-evaluation techniques, -and support for large, sparse address spaces. -It does not include the ``external pager'' interface instead using -a primitive internal pager interface. -The Mach virtual memory system call interface has been replaced with the -``mmap''-based interface described in the ``Berkeley Software -Architecture Manual'' (see UNIX Programmer's Manual, -Supplementary Documents, PSD:5). -The interface is similar to the interfaces shipped -by several commercial vendors such as Sun, USL, and Convex Computer Corp. -The integration of the new virtual memory is functionally complete, -but still has serious performance problems under heavy memory load. -The internal kernel interfaces have not yet been completed -and the memory pool and buffer cache have not been merged. -Some additional caveats: -.IP \(bu -Since the code is based on the 2.0 release of Mach, -bugs and misfeatures of the BSD version should not be considered -short-comings of the current Mach virtual memory system. -.IP \(bu -Because of the disjoint virtual memory (page) and IO (buffer) caches, -it is possible to see inconsistencies if using both the mmap and -read/write interfaces on the same file simultaneously. -.IP \(bu -Swap space is allocated on-demand rather than up front and no -allocation checks are performed so it is possible to over-commit -memory and eventually deadlock. -.IP \(bu -The semantics of the -.Xr vfork (2) -system call are slightly different. -The synchronization between parent and child is preserved, -but the memory sharing aspect is not. -In practice this has been enough for backward compatibility, -but newer code should just use -.Xr fork (2). -.Sh 4 "Networking additions and changes" -.PP -The ISO/OSI Networking consists of a kernel implementation of -transport class 4 (TP-4), -connectionless networking protocol (CLNP), -and 802.3-based link-level support (hardware-compatible with Ethernet\**). -.FS -Ethernet is a trademark of the Xerox Corporation. -.FE -We also include support for ISO Connection-Oriented Network Service, -X.25, TP-0. -The session and presentation layers are provided outside -the kernel using the ISO Development Environment by Marshall Rose, -that is available via anonymous FTP -(but is not included on the distribution tape). -Included in this development environment are file -transfer and management (FTAM), virtual terminals (VT), -a directory services implementation (X.500), -and miscellaneous other utilities. -.PP -Kernel support for the ISO OSI protocols is enabled with the ISO option -in the kernel configuration file. -The -.Xr iso (4) -manual page describes the protocols and addressing; -see also -.Xr clnp (4), -.Xr tp (4) -and -.Xr cltp (4). -The OSI equivalent to ARP is ESIS (End System to Intermediate System Routing -Protocol); running this protocol is mandatory, however one can manually add -translations for machines that do not participate by use of the -.Xr route (8) -command. -Additional information is provided in the manual page describing -.Xr esis (4). -.PP -The command -.Xr route (8) -has a new syntax and several new capabilities: -it can install routes with a specified destination and mask, -and can change route characteristics such as hop count, packet size -and window size. -.PP -Several important enhancements have been added to the TCP/IP -protocols including TCP header prediction and -serial line IP (SLIP) with header compression. -The routing implementation has been completely rewritten -to use a hierarchical routing tree with a mask per route -to support the arbitrary levels of routing found in the ISO protocols. -The routing table also stores and caches route characteristics -to speed the adaptation of the throughput and congestion avoidance -algorithms. -.PP -The format of the -.I sockaddr -structure (the structure used to describe a generic network address with an -address family and family-specific data) -has changed from previous releases, -as have the address family-specific versions of this structure. -The -.I sa_family -family field has been split into a length, -.Pn sa_len , -and a family, -.Pn sa_family . -System calls that pass a -.I sockaddr -structure into the kernel (e.g. -.Fn sendto -and -.Fn connect ) -have a separate parameter that specifies the -.I sockaddr -length, and thus it is not necessary to fill in the -.I sa_len -field for those system calls. -System calls that pass a -.I sockaddr -structure back from the kernel (e.g. -.Fn recvfrom -and -.Fn accept ) -receive a completely filled-in -.I sockaddr -structure, thus the length field is valid. -Because this would not work for old binaries, -the new library uses a different system call number. -Thus, most networking programs compiled under \*(4B are incompatible -with older systems. -.PP -Although this change is mostly source and binary compatible -with old programs, there are three exceptions. -Programs with statically initialized -.I sockaddr -structures -(usually the Internet form, a -.I sockaddr_in ) -are not compatible. -Generally, such programs should be changed to fill in the structure -at run time, as C allows no way to initialize a structure without -assuming the order and number of fields. -Also, programs with use structures to describe a network packet format -that contain embedded -.I sockaddr -structures also require change; a definition of an -.I osockaddr -structure is provided for this purpose. -Finally, programs that use the -.Sm SIOCGIFCONF -ioctl to get a complete list of interface addresses -need to check the -.I sa_len -field when iterating through the array of addresses returned, -as not all the structures returned have the same length -(this variance in length is nearly guaranteed by the presence of link-layer -address structures). -.Sh 4 "Additions and changes to filesystems" -.PP -The \*(4B distribution contains most of the interfaces -specified in the IEEE Std1003.1 system interface standard. -Filesystem additions include IEEE Std1003.1 FIFOs, -byte-range file locking, and saved user and group identifiers. -.PP -A new virtual filesystem interface has been added to the -kernel to support multiple filesystems. -In comparison with other interfaces, -the Berkeley interface has been structured for more efficient support -of filesystems that maintain state (such as the local filesystem). -The interface has been extended with support for stackable -filesystems done at UCLA. -These extensions allow for filesystems to be layered on top of each -other and allow new vnode operations to be added without requiring -changes to existing filesystem implementations. -For example, -the umap filesystem (see -.Xr mount_umap (8)) -is used to mount a sub-tree of an existing filesystem -that uses a different set of uids and gids than the local system. -Such a filesystem could be mounted from a remote site via NFS or it -could be a filesystem on removable media brought from some foreign -location that uses a different password file. -.PP -Other new filesystems that may be stacked include the loopback filesystem -.Xr mount_lofs (8), -the kernel filesystem -.Xr mount_kernfs (8), -and the portal filesystem -.Xr mount_portal (8). -.PP -The buffer cache in the kernel is now organized as a file block cache -rather than a device block cache. -As a consequence, cached blocks from a file -and from the corresponding block device would no longer be kept consistent. -The block device thus has little remaining value. -Three changes have been made for these reasons: -.IP 1) -block devices may not be opened while they are mounted, -and may not be mounted while open, so that the two versions of cached -file blocks cannot be created, -.IP 2) -filesystem checks of the root now use the raw device -to access the root filesystem, and -.IP 3) -the root filesystem is initially mounted read-only -so that nothing can be written back to disk during or after change to -the raw filesystem by -.Xr fsck . -.LP -The root filesystem may be made writable while in single-user mode -with the command: -.DS -.ft CW -mount \-uw / -.DE -The mount command has an option to update the flags on a mounted filesystem, -including the ability to upgrade a filesystem from read-only to read-write -or downgrade it from read-write to read-only. -.PP -In addition to the local ``fast filesystem'', -we have added an implementation of the network filesystem (NFS) -that fully interoperates with the NFS shipped by Sun and its licensees. -Because our NFS implementation was implemented -by Rick Macklem of the University of Guelph -using only the publicly available NFS specification, -it does not require a license from Sun to use in source or binary form. -By default it runs over UDP to be compatible with Sun's implementation. -However, it can be configured on a per-mount basis to run over TCP. -Using TCP allows it to be used quickly and efficiently through -gateways and over long-haul networks. -Using an extended protocol, it supports Leases to allow a limited -callback mechanism that greatly reduces the network traffic necessary -to maintain cache consistency between the server and its clients. -Its use will be familiar to users of other implementations of NFS. -See the manual pages -.Xr mount (8), -.Xr mountd (8), -.Xr fstab (5), -.Xr exports (5), -.Xr netgroup (5), -.Xr nfsd (8), -.Xr nfsiod (8), -and -.Xr nfssvc (8). -and the document ``The 4.4BSD NFS Implementation'' (SMM:6) -for further information. -The format of -.Pn /etc/fstab -has changed from previous \*(Bs releases -to a blank-separated format to allow colons in pathnames. -.PP -A new local filesystem, the log-structured filesystem (LFS), -has been added to the system. -It provides near disk-speed output and fast crash recovery. -This work is based, in part, on the LFS filesystem created -for the Sprite operating system at Berkeley. -While the kernel implementation is almost complete, -only some of the utilities to support the -filesystem have been written, -so we do not recommend it for production use. -See -.Xr newlfs (8), -.Xr mount_lfs (8) -and -.Xr lfs_cleanerd (8) -for more information. -For a in-depth description of the implementation and performance -characteristics of log-structured filesystems in general, -and this one in particular, see Dr. Margo Seltzer's doctoral thesis, -available from the University of California Computer Science Department. -.PP -We have also added a memory-based filesystem that runs in -pageable memory, allowing large temporary filesystems without -requiring dedicated physical memory. -.PP -The local ``fast filesystem'' has been enhanced to do -clustering that allows large pieces of files to be -allocated contiguously resulting in near doubling -of filesystem throughput. -The filesystem interface has been extended to allow -files and filesystems to grow to 2^63 bytes in size. -The quota system has been rewritten to support both -user and group quotas (simultaneously if desired). -Quota expiration is based on time rather than -the previous metric of number of logins over quota. -This change makes quotas more useful on fileservers -onto which users seldom login. -.PP -The system security has been greatly enhanced by the -addition of additional file flags that permit a file to be -marked as immutable or append only. -Once set, these flags can only be cleared by the super-user -when the system is running in insecure mode (normally, single-user). -In addition to the immutable and append-only flags, -the filesystem supports a new user-settable flag ``nodump''. -(File flags are set using the -.Xr chflags (1) -utility.) -When set on a file, -.Xr dump (8) -will omit the file from incremental backups -but retain them on full backups. -See the ``-h'' flag to -.Xr dump (8) -for details on how to change this default. -The ``nodump'' flag is usually set on core dumps, -system crash dumps, and object files generated by the compiler. -Note that the flag is not preserved when files are copied -so that installing an object file will cause it to be preserved. -.PP -The filesystem format used in \*(4B has several additions. -Directory entries have an additional field, -.Pn d_type , -that identifies the type of the entry -(normally found in the -.Pn st_mode -field of the -.Pn stat -structure). -This field is particularly useful for identifying -directories without the need to use -.Xr stat (2). -.PP -Short (less than sixty byte) symbolic links are now stored -in the inode itself rather than in a separate data block. -This saves disk space and makes access of symbolic links faster. -Short symbolic links are not given a special type, -so a user-level application is unaware of their special treatment. -Unlike pre-\*(4B systems, symbolic links do -not have an owner, group, access mode, times, etc. -Instead, these attributes are taken from the directory that contains the link. -The only attributes returned from an -.Xr lstat (2) -that refer to the symbolic link itself are the file type (S_IFLNK), -size, blocks, and link count (always 1). -.PP -An implementation of an auto-mounter daemon, -.Xr amd , -was contributed by Jan-Simon Pendry of the -Imperial College of Science, Technology & Medicine. -See the document ``AMD \- The 4.4BSD Automounter'' (SMM:13) -for further information. -.PP -The directory -.Pn /dev/fd -contains special files -.Pn 0 -through -.Pn 63 -that, when opened, duplicate the corresponding file descriptor. -The names -.Pn /dev/stdin , -.Pn /dev/stdout -and -.Pn /dev/stderr -refer to file descriptors 0, 1 and 2. -See -.Xr fd (4) -and -.Xr mount_fdesc (8) -for more information. -.Sh 4 "POSIX terminal driver changes" -.PP -The \*(4B system uses the IEEE P1003.1 (POSIX.1) terminal interface -rather than the previous \*(Bs terminal interface. -The terminal driver is similar to the System V terminal driver -with the addition of the necessary extensions to get the -functionality previously available in the \*(Ps terminal driver. -Both the old -.Xr ioctl -calls and old options to -.Xr stty (1) -are emulated. -This emulation is expected to be unavailable in many vendors releases, -so conversion to the new interface is encouraged. -.PP -\*(4B also adds the IEEE Std1003.1 job control interface, -that is similar to the \*(Ps job control interface, -but adds a security model that was missing in the -\*(Ps job control implementation. -A new system call, -.Fn setsid , -creates a job-control session consisting of a single process -group with one member, the caller, that becomes a session leader. -Only a session leader may acquire a controlling terminal. -This is done explicitly via a -.Sm TIOCSCTTY -.Fn ioctl -call, not implicitly by an -.Fn open -call. -The call fails if the terminal is in use. -Programs that allocate controlling terminals (or pseudo-terminals) -require change to work in this environment. -The versions of -.Xr xterm -provided in the X11R5 release includes the necessary changes. -New library routines are available for allocating and initializing -pseudo-terminals and other terminals as controlling terminal; see -.Pn /usr/src/lib/libutil/pty.c -and -.Pn /usr/src/lib/libutil/login_tty.c . -.PP -The POSIX job control model formalizes the previous conventions -used in setting up a process group. -Unfortunately, this requires that changes be made in a defined order -and with some synchronization that were not necessary in the past. -Older job control shells (csh, ksh) will generally not operate correctly -with the new system. -.PP -Most of the other kernel interfaces have been changed to correspond -with the POSIX.1 interface, although that work is not complete. -See the relevant manual pages and the IEEE POSIX standard. -.Sh 4 "Native operating system compatibility" -.PP -Both the HP300 and SPARC ports feature the ability to run binaries -built for the native operating system (HP-UX or SunOS) by emulating -their system calls. -Building an HP300 kernel with the HPUXCOMPAT and COMPAT_OHPUX options -or a SPARC kernel with the COMPAT_SUNOS option will enable this feature -(on by default in the generic kernel provided in the root filesystem image). -Though this native operating system compatibility was provided by the -developers as needed for their purposes and is by no means complete, -it is complete enough to run several non-trivial applications including -those that require HP-UX or SunOS shared libraries. -For example, the vendor supplied X11 server and windowing environment -can be used on both the HP300 and SPARC. -.PP -It is important to remember that merely copying over a native binary -and executing it (or executing it directly across NFS) does not imply -that it will run. -All but the most trivial of applications are likely to require access -to auxiliary files that do not exist under \*(4B (e.g. -.Pn /etc/ld.so.cache ) -or have a slightly different format (e.g. -.Pn /etc/passwd ). -However, by using system call tracing and -through creative use of symlinks, -many problems can be tracked down and corrected. -.PP -The DECstation port also has code for ULTRIX emulation -(kernel option ULTRIXCOMPAT, not compiled into the generic kernel) -but it was used primarily for initially bootstrapping the port and -has not been used since. -Hence, some work may be required to make it generally useful. -.Sh 3 "Changes to the utilities" -.PP -We have been tracking the IEEE Std1003.2 shell and utility work -and have included prototypes of many of the proposed utilities -based on draft 12 of the POSIX.2 Shell and Utilities document. -Because most of the traditional utilities have been replaced -with implementations conformant to the POSIX standards, -you should realize that the utility software may not be as stable, -reliable or well documented as in traditional Berkeley releases. -In particular, almost the entire manual suite has been rewritten to -reflect the POSIX defined interfaces, and in some instances -it does not correctly reflect the current state of the software. -It is also worth noting that, in rewriting this software, we have generally -been rewarded with significant performance improvements. -Most of the libraries and header files have been converted -to be compliant with ANSI C. -The shipped compiler (gcc) is a superset of ANSI C, -but supports traditional C as a command-line option. -The system libraries and utilities all compile -with either ANSI or traditional C. -.Sh 4 "Make and Makefiles" -.PP -This release uses a completely new version of the -.Xr make -program derived from the -.Xr pmake -program developed by the Sprite project at Berkeley. -It supports existing makefiles, although certain incorrect makefiles -may fail. -The makefiles for the \*(4B sources make extensive use of the new -facilities, especially conditionals and file inclusion, and are thus -completely incompatible with older versions of -.Xr make -(but nearly all the makefiles are now trivial!). -The standard include files for -.Xr make -are in -.Pn /usr/share/mk . -There is a -.Pn bsd.README -file in -.Pn /usr/src/share/mk . -.PP -Another global change supported by the new -.Xr make -is designed to allow multiple architectures to share a copy of the sources. -If a subdirectory named -.Pn obj -is present in the current directory, -.Xr make -descends into that directory and creates all object and other files there. -We use this by building a directory hierarchy in -.Pn /var/obj -that parallels -.Pn /usr/src . -We then create the -.Pn obj -subdirectories in -.Pn /usr/src -as symbolic links to the corresponding directories in -.Pn /var/obj . -(This step is automated. -The command ``make obj'' in -.Pn /usr/src -builds both the local symlink and the shadow directory, -using -.Pn /usr/obj , -that may be a symbolic link, as the root of the shadow tree. -The use of -.Pn /usr/obj -is for historic reasons only, and the system make configuration files in -.Pn /usr/share/mk -can trivially be modified to use -.Pn /var/obj -instead.) -We have one -.Pn /var/obj -hierarchy on the local system, and another on each -system that shares the source filesystem. -All the sources in -.Pn /usr/src -except for -.Pn /usr/src/contrib -and portions of -.Pn /usr/src/old -have been converted to use the new make and -.Pn obj -subdirectories; -this change allows compilation for multiple -architectures from the same source tree -(that may be mounted read-only). -.Sh 4 "Kerberos" -.PP -The Kerberos authentication server from MIT (version 4) -is included in this release. -See -.Xr kerberos (1) -for a general, if MIT-specific, introduction. -If it is configured, -.Xr login (1), -.Xr passwd (1), -.Xr rlogin (1) -and -.Xr rsh (1) -will all begin to use it automatically. -The file -.Pn /etc/kerberosIV/README -describes the configuration. -Each system needs the file -.Pn /etc/kerberosIV/krb.conf -to set its realm and local servers, -and a private key stored in -.Pn /etc/kerberosIV/srvtab -(see -.Xr ext_srvtab (8)). -The Kerberos server should be set up on a single, physically secure, -server machine. -Users and hosts may be added to the server database manually with -.Xr kdb_edit (8), -or users on authorized hosts can add themselves and a Kerberos -password after verification of their ``local'' (passwd-file) password -using the -.Xr register (1) -program. -.PP -Note that by default the password-changing program -.Xr passwd (1) -changes the Kerberos password, that must exist. -The -.Li \-l -option to -.Xr passwd (1) -changes the ``local'' password if one exists. -.PP -Note that Version 5 of Kerberos will be released soon; -Version 4 should probably be replaced at that time. -.Sh 4 "Timezone support" -.PP -The timezone conversion code in the C library uses data files installed in -.Pn /usr/share/zoneinfo -to convert from ``GMT'' to various timezones. The data file for the default -timezone for the system should be copied to -.Pn /etc/localtime . -Other timezones can be selected by setting the TZ environment variable. -.PP -The data files initially installed in -.Pn /usr/share/zoneinfo -include corrections for leap seconds since the beginning of 1970. -Thus, they assume that the -kernel will increment the time at a constant rate during a leap second; -that is, time just keeps on ticking. The conversion routines will then -name a leap second 23:59:60. For purists, this effectively means that -the kernel maintains TAI (International Atomic Time) rather than UTC -(Coordinated Universal Time, aka GMT). -.PP -For systems that run current NTP (Network Time Protocol) implementations -or that wish to conform to the letter of the POSIX.1 law, it is possible -to rebuild the timezone data files so that leap seconds are not counted. -(NTP causes the time to jump over a leap second, and POSIX effectively -requires the clock to be reset by hand when a leap second occurs. -In this mode, the kernel effectively runs UTC rather than TAI.) -.PP -The data files without leap second information -are constructed from the source directory, -.Pn /usr/src/share/zoneinfo . -Change the variable REDO in Makefile -from ``right'' to ``posix'', and then do -.DS -make obj (if necessary) -make -make install -.DE -.PP -You will then need to copy the correct default zone file to -.Pn /etc/localtime , -as the old one would still have used leap seconds, and because the Makefile -installs a default -.Pn /etc/localtime -each time ``make install'' is done. -.PP -It is possible to install both sets of timezone data files. This results -in subdirectories -.Pn /usr/share/zoneinfo/right -and -.Pn /usr/share/zoneinfo/posix . -Each contain a complete set of zone files. -See -.Pn /usr/src/share/zoneinfo/Makefile -for details. -.Sh 4 "Additions and changes to the libraries" -.PP -Notable additions to the libraries include functions to traverse a -filesystem hierarchy, database interfaces to btree and hashing functions, -a new, faster implementation of stdio and a radix and merge sort -functions. -.PP -The -.Xr fts (3) -functions will do either physical or logical traversal of -a file hierarchy as well as handle essentially infinite depth -filesystems and filesystems with cycles. -All the utilities in \*(4B which traverse file hierarchies -have been converted to use -.Xr fts (3). -The conversion has always resulted in a significant performance -gain, often of four or five to one in system time. -.PP -The -.Xr dbopen (3) -functions are intended to be a family of database access methods. -Currently, they consist of -.Xr hash (3), -an extensible, dynamic hashing scheme, -.Xr btree (3), -a sorted, balanced tree structure (B+tree's), and -.Xr recno (3), -a flat-file interface for fixed or variable length records -referenced by logical record number. -Each of the access methods stores associated key/data pairs and -uses the same record oriented interface for access. -.PP -The -.Xr qsort (3) -function has been rewritten for additional performance. -In addition, three new types of sorting functions, -.Xr heapsort (3), -.Xr mergesort (3) -and -.Xr radixsort (3) -have been added to the system. -The -.Xr mergesort -function is optimized for data with pre-existing order, -in which case it usually significantly outperforms -.Xr qsort . -The -.Xr radixsort (3) -functions are variants of most-significant-byte radix sorting. -They take time linear to the number of bytes to be -sorted, usually significantly outperforming -.Xr qsort -on data that can be sorted in this fashion. -An implementation of the POSIX 1003.2 standard -.Xr sort (1), -based on -.Xr radixsort , -is included in -.Pn /usr/src/contrib/sort . -.PP -Some additional comments about the \*(4B C library: -.IP \(bu -The floating point support in the C library has been replaced -and is now accurate. -.IP \(bu -The C functions specified by both ANSI C, POSIX 1003.1 and -1003.2 are now part of the C library. -This includes support for file name matching, shell globbing -and both basic and extended regular expressions. -.IP \(bu -ANSI C multibyte and wide character support has been integrated. -The rune functionality from the Bell Labs' Plan 9 system is provided -as well. -.IP \(bu -The -.Xr termcap (3) -functions have been generalized and replaced with a general -purpose interface named -.Xr getcap (3). -.IP \(bu -The -.Xr stdio (3) -routines have been replaced, and are usually much faster. -In addition, the -.Xr funopen (3) -interface permits applications to provide their own I/O stream -function support. -.PP -The -.Xr curses (3) -library has been largely rewritten. -Important additional features include support for scrolling and -.Xr termios (3). -.PP -An application front-end editing library, named libedit, has been -added to the system. -.PP -A superset implementation of the SunOS kernel memory interface library, -libkvm, has been integrated into the system. -.PP -.Sh 4 "Additions and changes to other utilities" -.PP -There are many new utilities, offering many new capabilities, -in \*(4B. -Skimming through the section 1 and section 8 manual pages is sure -to be useful. -The additions to the utility suite include greatly enhanced versions of -programs that display system status information, implementations of -various traditional tools described in the IEEE Std1003.2 standard, -new tools not previous available on Berkeley UNIX systems, -and many others. -Also, with only a very few exceptions, all the utilities from -\*(Ps that included proprietary source code have been replaced, -and their \*(4B counterparts are freely redistributable. -Normally, this replacement resulted in significant performance -improvements and the increase of the limits imposed on data by -the utility as well. -.PP -A summary of specific additions and changes are as follows: -.TS -lfC l. -amd An auto-mounter implementation. -ar Replacement of the historic archive format with a new one. -awk Replaced by gawk; see /usr/src/old/awk for the historic version. -bdes Utility implementing DES modes of operation described in FIPS PUB 81. -calendar Addition of an interface for system calendars. -cap_mkdb Utility for building hashed versions of termcap style databases. -cc Replacement of pcc with gcc suite. -chflags A utility for setting the per-file user and system flags. -chfn An editor based replacement for changing user information. -chpass An editor based replacement for changing user information. -chsh An editor based replacement for changing user information. -cksum The POSIX 1003.2 checksum utility; compatible with sum. -column A columnar text formatting utility. -cp POSIX 1003.2 compatible, able to copy special files. -csh Freely redistributable and 8-bit clean. -date User specified formats added. -dd New EBCDIC conversion tables, major performance improvements. -dev_mkdb Hashed interface to devices. -dm Dungeon master. -find Several new options and primaries, major performance improvements. -fstat Utility displaying information on files open on the system. -ftpd Connection logging added. -hexdump A binary dump utility, superseding od. -id The POSIX 1003.2 user identification utility. -inetd Tcpmux added. -jot A text formatting utility. -kdump A system-call tracing facility. -ktrace A system-call tracing facility. -kvm_mkdb Hashed interface to the kernel name list. -lam A text formatting utility. -lex A new, freely redistributable, significantly faster version. -locate A database of the system files, by name, constructed weekly. -logname The POSIX 1003.2 user identification utility. -mail.local New local mail delivery agent, replacing mail. -make Replaced with a new, more powerful make, supporting include files. -man Added support for man page location configuration. -mkdep A new utility for generating make dependency lists. -mkfifo The POSIX 1003.2 FIFO creation utility. -mtree A new utility for mapping file hierarchies to a file. -nfsstat An NFS statistics utility. -nvi A freely redistributable replacement for the ex/vi editors. -pax The POSIX 1003.2 replacement for cpio and tar. -printf The POSIX 1003.2 replacement for echo. -roff Replaced by groff; see /usr/src/old/roff for the historic versions. -rs New utility for text formatting. -shar An archive building utility. -sysctl MIB-style interface to system state. -tcopy Fast tape-to-tape copying and verification. -touch Time and file reference specifications. -tput The POSIX 1003.2 terminal display utility. -tr Addition of character classes. -uname The POSIX 1003.2 system identification utility. -vis A filter for converting and displaying non-printable characters. -xargs The POSIX 1003.2 argument list constructor utility. -yacc A new, freely redistributable, significantly faster version. -.TE -.PP -The new versions of -.Xr lex (1) -(``flex'') and -.Xr yacc (1) -(``zoo'') should be installed early on if attempting to -cross-compile \*(4B on another system. -Note that the new -.Xr lex -program is not completely backward compatible with historic versions of -.Xr lex , -although it is believed that all documented features are supported. -.PP -The -.Xr find -utility has two new options that are important to be aware of if you -intend to use NFS. -The ``fstype'' and ``prune'' options can be used together to prevent -find from crossing NFS mount points. -See -.Pn /etc/daily -for an example of their use. -.Sh 2 "Hints on converting from \*(Ps to \*(4B" -.PP -This section summarizes changes between -\*(Ps and \*(4B that are likely to -cause difficulty in doing the conversion. -It does not include changes in the network; -see section 5 for information on setting up the network. -.PP -Since the stat st_size field is now 64-bits instead of 32, -doing something like: -.DS -.ft CW -foo(st.st_size); -.DE -and then (improperly) defining foo with an ``int'' or ``long'' parameter: -.DS -.ft CW -foo(size) - int size; -{ - ... -} -.DE -will fail miserably (well, it might work on a little endian machine). -This problem showed up in -.Xr emacs (1) -as well as several other programs. -A related problem is improperly casting (or failing to cast) -the second argument to -.Xr lseek (2), -.Xr truncate (2), -or -.Xr ftruncate (2) -ala: -.DS -.ft CW -lseek(fd, (long)off, 0); -.DE -or -.DS -.ft CW -lseek(fd, 0, 0); -.DE -The best solution is to include -.Pn <unistd.h> -which has prototypes that catch these types of errors. -.PP -Determining the ``namelen'' parameter for a -.Xr connect (2) -call on a unix domain socket should use the ``SUN_LEN'' macro from -.Pn <sys/un.h> . -One old way that was used: -.DS -.ft CW -addrlen = strlen(unaddr.sun_path) + sizeof(unaddr.sun_family); -.DE -no longer works as there is an additional -.Pn sun_len -field. -.PP -The kernel's limit on the number of open files has been -increased from 20 to 64. -It is now possible to change this limit almost arbitrarily. -The standard I/O library -autoconfigures to the kernel limit. -Note that file (``_iob'') entries may be allocated by -.Xr malloc -from -.Xr fopen ; -this allocation has been known to cause problems with programs -that use their own memory allocators. -Memory allocation does not occur until after 20 files have been opened -by the standard I/O library. -.PP -.Xr Select -can be used with more than 32 descriptors -by using arrays of \fBint\fPs for the bit fields rather than single \fBint\fPs. -Programs that used -.Xr getdtablesize -as their first argument to -.Xr select -will no longer work correctly. -Usually the program can be modified to correctly specify the number -of bits in an \fBint\fP. -Alternatively the program can be modified to use an array of \fBint\fPs. -There are a set of macros available in -.Pn <sys/types.h> -to simplify this. -See -.Xr select (2). -.PP -Old core files will not be intelligible by the current debuggers -because of numerous changes to the user structure -and because the kernel stack has been enlarged. -The -.Xr a.out -header that was in the user structure is no longer present. -Locally-written debuggers that try to check the magic number -will need to be changed. -.PP -Files may not be deleted from directories having the ``sticky'' (ISVTX) bit -set in their modes -except by the owner of the file or of the directory, or by the superuser. -This is primarily to protect users' files in publicly-writable directories -such as -.Pn /tmp -and -.Pn /var/tmp . -All publicly-writable directories should have their ``sticky'' bits set -with ``chmod +t.'' -.PP -The following two sections contain additional notes about -changes in \*(4B that affect the installation of local files; -be sure to read them as well. |