bostic@OKEEFFE.BERKELEY.EDU (Keith Bostic) (04/19/89)
BSD4.3-tahoe VAX Installation Installing 4.3BSD-tahoe on VAXen running 4.3BSD has turned out to be more complicated than we had anticipated. The following is intended to be a simple guide to some of the things that must be done to upgrade the commands and libraries on your 4.3BSD VAX system. It is not intended to replace a careful reading of the document ``Installing and Operating 4.3BSD-tahoe UNIX on the VAX'', nor should it be followed blindly. For further information, clarification, or help with related problems, please contact our technical office at +1-415-642-4948. The rest of this document assumes that your VAX is run- ning 4.3BSD; upgrading from 4.2BSD is similar, but will be more difficult. It is suggested that you upgrade in two steps, i.e. to 4.3BSD and from there to 4.3BSD-tahoe. The suggested procedure is to bring up 4.3BSD-tahoe on a separate disk (or at the very least a separate file sys- tem) from your regular system, minimizing the risk of catas- trophic failure. You will need approximately 160 megabytes for building the entire source tree; for the purposes of this document we will assume that it's mounted on /tahoe. Once you have mounted /tahoe, extract /usr, /usr/src, and /sys into it. If you have a 6250 bpi distribution, they are the fourth, fifth, and sixth files respectively. If you have a 1600 bpi distribution, they are the fourth file on the first tape and the first two files on the second tape, respectively. All three files are tar(1) files, and are blocked at 40, i.e. use the ``b'' option for tar, with an argument of 40, to extract them: cd /tahoe; mkdir /usr /usr/src /usr/src/sys ln -s /usr/src/sys /sys cd /usr # position the tape to the appropriate file for /usr tar xbf 40 whatever_device_you're_using # position the tape to the appropriate file for /usr/src/sys cd /usr/src/sys tar xbf 40 whatever_device_you're_using # position the tape to the appropriate file for /usr/src cd /usr/src tar xbf 40 whatever_device_you're_using Since any binaries you have just placed into /tahoe are for the tahoe processor, you must replace them with your 4.3BSD VAX binaries. You must also copy a few other of your 4.3BSD directories into /tahoe. The directories /etc, /lib, /bin, /usr/bin, /usr/lib, and /usr/ucb should all be copied into /tahoe. DON'T replace /usr/include! cp -p -r /etc /tahoe/etc cp -p -r /lib /tahoe/lib cp -p -r /bin /tahoe/bin cp -p -r /usr/bin /tahoe/usr/bin cp -p -r /usr/lib /tahoe/usr/lib cp -p -r /usr/ucb /tahoe/usr/ucb You will also need the chroot program -- if you don't already have it, it's at the end of this document. Compile and install it in /etc on your system. Chroot changes its root directory (``/'') to its first argument and forks an interactive copy of your shell. Now, change root to the tahoe system; note that all full pathnames will now be relative to ``/tahoe''! The ``setenv'' command is necessary, as the source tree now sup- ports two architectures. If you're using Bourne shell (``/bin/sh'') or ksh, use ``MACHINE=vax; export MACHINE'' instead: chroot /tahoe setenv MACHINE vax Change directory to /usr/src/sys and relink ``machine'' to the vax directory: cd /usr/src/sys rm machine ln -s vax machine Change directory to vax/inline; build the inline pro- gram: cd /usr/src/sys/vax/inline make Make and install the install program: cd /usr/src/ucb/xinstall make mv xinstall /usr/ucb/install strip /usr/ucb/install chmod 775 /usr/ucb/install Make and install make(1): cd /usr/src/bin/make make make install Install the include files: cd /usr/src/include make install Remake and re-install the make program: cd /usr/src/bin/make make clean make make install Make and install the dependency generating program, mkdep(1): cd /usr/src/ucb/mkdep make make install Make and install egrep: cd /usr/src/ucb/grep make make install Make and install the world (this takes quite awhile): cd /usr/src make clean make depend make build make install At this point you should have the libraries and utili- ties installed for 4.3BSD-tahoe. Of course, they are some- what intermixed with your old libraries and binaries, how- ever, using the modification times, it should be fairly easy to determine which is which and clean up. # This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # Makefile # chroot.8 # chroot.c # pathnames.h # strerror.c # echo x - Makefile sed 's/^X//' >Makefile << 'END-of-Makefile' X# X# Copyright (c) 1989 The Regents of the University of California. X# All rights reserved. X# X# Redistribution and use in source and binary forms are permitted X# provided that the above copyright notice and this paragraph are X# duplicated in all such forms and that any documentation, X# advertising materials, and other materials related to such X# distribution and use acknowledge that the software was developed X# by the University of California, Berkeley. The name of the X# University may not be used to endorse or promote products derived X# from this software without specific prior written permission. X# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. X# X# @(#)Makefile 5.2 (Berkeley) 4/18/89 X# X XCFLAGS= -O XLIBC= /lib/libc.a XSRCS= chroot.c XOBJS= XMAN= chroot.0 X Xall: chroot X Xchroot: ${LIBC} X ${CC} -o $@ ${CFLAGS} $@.c X Xclean: X rm -f ${OBJS} core chroot X Xcleandir: clean X rm -f ${MAN} tags .depend X Xdepend: ${SRCS} X mkdep -p ${CFLAGS} ${SRCS} X Xinstall: ${MAN} X install -s -o bin -g bin -m 755 chroot ${DESTDIR}/usr/bin X install -c -o bin -g bin -m 444 ${MAN} ${DESTDIR}/usr/man/cat8 X Xlint: ${SRCS} X lint ${CFLAGS} ${SRCS} X Xtags: ${SRCS} X ctags ${SRCS} END-of-Makefile echo x - chroot.8 sed 's/^X//' >chroot.8 << 'END-of-chroot.8' X.\" Copyright (c) 1988 The Regents of the University of California. X.\" All rights reserved. X.\" X.\" Redistribution and use in source and binary forms are permitted X.\" provided that the above copyright notice and this paragraph are X.\" duplicated in all such forms and that any documentation, X.\" advertising materials, and other materials related to such X.\" distribution and use acknowledge that the software was developed X.\" by the University of California, Berkeley. The name of the X.\" University may not be used to endorse or promote products derived X.\" from this software without specific prior written permission. X.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X.\" WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. X.\" X.\" @(#)chroot.8 5.1 (Berkeley) 12/5/88 X.\" X.TH CHROOT 8 "December 5, 1988" X.UC 6 X.SH NAME Xchroot \- change root directory X.SH SYNOPSIS X.B chroot newroot [ command ] X.SH DESCRIPTION XThe X.I chroot Xcommand changes its root directory to the supplied directory X.I newroot Xand exec's X.IR command , Xif supplied, or an interactive copy of your shell (as specified Xby the environmental variable X.IR SHELL ) Xif not. X.I /bin/sh Xis used if X.I SHELL Xis not specified. X.PP XNote, X.I command Xor the shell are run as your real-user-id. X.SH "SEE ALSO" Xchdir(2), chroot(2), environ(7) END-of-chroot.8 echo x - chroot.c sed 's/^X//' >chroot.c << 'END-of-chroot.c' X/* X * Copyright (c) 1988 The Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that the above copyright notice and this paragraph are X * duplicated in all such forms and that any documentation, X * advertising materials, and other materials related to such X * distribution and use acknowledge that the software was developed X * by the University of California, Berkeley. The name of the X * University may not be used to endorse or promote products derived X * from this software without specific prior written permission. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. X */ X X#ifndef lint Xchar copyright[] = X"@(#) Copyright (c) 1988 The Regents of the University of California.\n\ X All rights reserved.\n"; X#endif /* not lint */ X X#ifndef lint Xstatic char sccsid[] = "@(#)chroot.c 5.4 (Berkeley) 3/5/89"; X#endif /* not lint */ X X#include <stdio.h> X#include "pathnames.h" X Xmain(argc, argv) X int argc; X char **argv; X{ X extern int errno; X char *shell, *getenv(), *strerror(); X X if (argc < 2) { X fprintf(stderr, "usage: chroot newroot [command]\n"); X exit(1); X } X if (chdir(argv[1]) || chroot(argv[1])) X fatal(argv[1]); X setuid(getuid()); X if (argv[2]) { X execvp(argv[2], &argv[2]); X fatal(argv[2]); X } else { X if (!(shell = getenv("SHELL"))) X shell = _PATH_BSHELL; X execlp(shell, shell, "-i", (char *)NULL); X fatal(shell); X } X /* NOTREACHED */ X} X Xfatal(msg) X char *msg; X{ X extern int errno; X X fprintf(stderr, "chroot: %s: %s\n", msg, strerror(errno)); X exit(1); X} END-of-chroot.c echo x - pathnames.h sed 's/^X//' >pathnames.h << 'END-of-pathnames.h' X/* X * Copyright (c) 1989 The Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that the above copyright notice and this paragraph are X * duplicated in all such forms and that any documentation, X * advertising materials, and other materials related to such X * distribution and use acknowledge that the software was developed X * by the University of California, Berkeley. The name of the X * University may not be used to endorse or promote products derived X * from this software without specific prior written permission. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. X * X * @(#)pathnames.h 5.1 (Berkeley) 3/5/89 X */ X X#define _PATH_BSHELL "/bin/sh" END-of-pathnames.h echo x - strerror.c sed 's/^X//' >strerror.c << 'END-of-strerror.c' X/* X * Copyright (c) 1988 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that the above copyright notice and this paragraph are X * duplicated in all such forms and that any documentation, X * advertising materials, and other materials related to such X * distribution and use acknowledge that the software was developed X * by the University of California, Berkeley. The name of the X * University may not be used to endorse or promote products derived X * from this software without specific prior written permission. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. X */ X X#if defined(LIBC_SCCS) && !defined(lint) Xstatic char sccsid[] = "@(#)strerror.c 5.1 (Berkeley) 4/9/89"; X#endif /* LIBC_SCCS and not lint */ X Xchar * Xstrerror(errnum) X int errnum; X{ X extern int sys_nerr; X extern char *sys_errlist[]; X static char ebuf[20]; X X if ((unsigned int)errnum < sys_nerr) X return(sys_errlist[errnum]); X (void)sprintf(ebuf, "Unknown error: %d", errnum); X return(ebuf); X} END-of-strerror.c exit