Annotation of researchv9/README, revision 1.1

1.1     ! root        1: Ninth Edition Unix System for Sun3
        !             2: Copyright (C) AT&T 1989. All Rights Reserved
        !             3: 
        !             4: This directory contains the source for the Ninth Edition(v9) system
        !             5: that was ported to the Sun.  The source was derived from a snapshot of the
        !             6: VAX v9 system, sometime around the beginning of 1987.  It has
        !             7: not been updated to incorporate changes that have been made
        !             8: to the v9 system since then.
        !             9: 
        !            10: In addition to the source, the binaries for a a Sun 3/75 or
        !            11: 3/50 with a SCSI disk drive are included.  A system may be built
        !            12: very quickly by booting the Sun diskless from a Sun server, building
        !            13: the v9 file system on the raw device, and then rebooting from the
        !            14: v9 system on the disk drive.
        !            15: 
        !            16: An overview of the directories is given below:
        !            17: 
        !            18:        X11 - contains the X11 release 1 code that runs under v9
        !            19:        on the Sun.  It does some things unconventionally.  For example
        !            20:        the keyboard and mouse line disciplines are part of the X11
        !            21:        server, instead of the operating system.  The server just
        !            22:        reads the serial ports directly, with no operating system
        !            23:        intervention.
        !            24: 
        !            25:        cmd - source for all the commands.
        !            26: 
        !            27:        include - v9 include files for the Sun
        !            28: 
        !            29:        ipc - interprocess communications source, including dialers
        !            30:        and source for ipc libraries.
        !            31: 
        !            32:        jerq - 5620 software, only a small subset is included and
        !            33:        was ever tested.  Once X windows was working, this directory
        !            34:        was essentially discarded.
        !            35: 
        !            36:        jtools - copy of 5620 tools that were ported to run under X11.
        !            37:        This includes things like Rob Pike's editor sam, Tom Cargill's pi,
        !            38:        mux style terminal windows and a bunch of other goodies.  The
        !            39:        5620 emulator library and associated tools can also be compiled
        !            40:        to run on a Sun under SunOS (under either X11 or Sunview).
        !            41: 
        !            42:        libc - C library source
        !            43:        libtermlib - terminal cursor control library
        !            44: 
        !            45:        netb - network file system code for mounting filesystems
        !            46:        of remote machines.  Unlike NFS, it mounts the whole machine
        !            47:        and maps users between systems.  Netb contains the server code
        !            48:        while the netb driver in the kernel provides the client code.
        !            49:        The server code will run on either a v9 or BSD machine.
        !            50: 
        !            51:        sys - the v9 kernel code.  Directories that end in .old
        !            52:        contain the original VAX v9 code the files were derived from.
        !            53:        These were kept around to make it possible to diff them from
        !            54:        and upgrades made to the VAX v9 system.  The directory
        !            55:        sys/construct contains the working binaries that can be
        !            56:        used to construct without all the normal bootstrapping problems.
        !            57: 
        !            58: Notes: 1)all the source and makefiles(mkfiles), except for a few
        !            59:        in the sys/construct directory, assume they are being
        !            60:        compiled on a running v9 system.  If you are going to X-compile
        !            61:        them under SunOS, some tweaking of the makefiles and compiler front
        !            62:        end may be necessary.
        !            63: 
        !            64:        2)the compiler used by the v9 system generates symbol table
        !            65:        entries in the format of the v9 VAX compiler (rather than the
        !            66:        SUN format). When the v9 system was ported, it was simpler to
        !            67:        change the compiler than to backwards engineer a parser for
        !            68:        Suns yuckky symbol table (i.e. for use with pi).  Since then,
        !            69:        I have written a Sun format symbol table parser so pi can be
        !            70:        used under SunOS.  If I were going to do it over, I would not
        !            71:        modify the compiler.
        !            72: 
        !            73:        3)the v9 tar is slightly different than the BSD tar. It handles
        !            74:        and stores symbolic links differently.  Many of the binaries in
        !            75:        sys/construct/test are in v9 format tar files.  If you want to
        !            76:        unpack them on a Sun under SunOS, there is a copy of the v9 tar
        !            77:        that runs under SunOS release 4.0 in sys/construct/host/v9tar.c.
        !            78:        By default, the v9 tar follows symbolic links when making tar files.
        !            79:        Use the L option to put the symbolic link in the tar file instead of
        !            80:        what the link points to.
        !            81: 
        !            82: BOOTSTRAPPING:
        !            83: Assuming your goal is to get a system running as soon as possible,
        !            84: the following is a short cookbook that should generate a standalone
        !            85: v9 system with minimal effort (provided you have a 3/50 or 3/75 with
        !            86: a SCSI disk drive):
        !            87: 
        !            88:      1) Install this source on a Sun server running SunOS
        !            89:        If you are reading this, you already did that.
        !            90:      2) Format and label the SCSI disk you will install the system on using
        !            91:        the tools provided by Sun (diag, format). On SunOS release 4.0 you
        !            92:        can do it with format while the system is running Unix. Previous
        !            93:        releases required running diag in a stand-alone mode.  Write down
        !            94:        the number of 512-byte blocks in the partitions you wish to make file
        !            95:        systems on.  I usually put the root file system on partition a and the
        !            96:        usr file system on parition g.  If the drive has already been
        !            97:        paritioned you can discover the number of block with the SunOS
        !            98:        dkinfo command.
        !            99:      3) Boot up the system you want to install the v9 system on, under SunOS
        !           100:        from the server.  Make sure the disk driver is in the SunOS kernel.  
        !           101:      4) Build SunOS versions of the v9 tools to construct file systems on
        !           102:        disks (fsck, mkfs) with the following commands:
        !           103:                cd sys/construct/host
        !           104:                make fsck mkfs
        !           105:                mv fsck mkfs ..
        !           106:                cd ..
        !           107:        The goal is to use these commands to install a complete v9 system
        !           108:        on the clean disk, using SunOS to do the installation.
        !           109:      5) Edit the disk building proto files in sys/construct.  These proto
        !           110:        files, used by mkfs, construct a new file system and initialize it
        !           111:        with a list of files, directories, etc.  Four proto files are
        !           112:        already in the directory.  Files of the form proto0a.* are for
        !           113:        building the root file system and files of the form proto0g.* are
        !           114:        for the user file system.  The two that are there have the right
        !           115:        numbers for a CDC 155M Wren III drive and a CDC 300M Wren IV
        !           116:        (suffixes .cdc and .w4 respectively).  In the proto0a file,
        !           117:        only two lines need to be edited: the second line and the next
        !           118:        to last line.  The second line contains the number of 8K blocks
        !           119:        in the file system, followed by the number of inodes in the file
        !           120:        system.  These numbers have to be adjusted to match the size of
        !           121:        the file system.  The first number can be calculated by dividing
        !           122:        the number of 512byte blocks recorded in step 2 by 16.  The second
        !           123:        number can be retrieved from mkfs by invoking it without a proto
        !           124:        file.  For example, if the file system /dev/rsd0a has 2000 8K blocks,
        !           125:        running the command (must be su):
        !           126:                mkfs /dev/rsd0a 2000
        !           127:        will print something like:
        !           128:                isize = 12416
        !           129:                m/n = 3 1000
        !           130:        and then build a file system. You can kill it after the lines are
        !           131:        printed as you don't actually need to build the file system yet.
        !           132:        The value of isize should be moved to the second value on the second
        !           133:        line of the proto file.
        !           134:        The last to next line of proto0a.* determines where the unix kernel
        !           135:        binary is taken from.  If the system is a Sun 3/50 the line should
        !           136:        read:
        !           137:                unix            ---755 0 4 test/unix.50
        !           138:        while for a Sun 3/75 it should be:
        !           139:                unix            ---755 0 4 test/unix.75.
        !           140:        In the /usr proto file, proto0g.*, only the second line, containing
        !           141:        the number of blocks + inodes needs to be modified.
        !           142:      6) The binaries to construct a system are in sys/construct/test.
        !           143:        Some of these files need to be edited to match your site and
        !           144:        configuration.  The only one that needs modification is etc/rc.
        !           145:        Look for the line with "ipconfig" in it.  If the system is a
        !           146:        3-75, the line should be (Intel Ethernet chips):
        !           147: /usr/ipc/mgrs/ipconfig /dev/ie00 `cat /etc/whoami` mh-capek-net /dev/ie01 &
        !           148:        while for a 3-50 it should be: (AMD Lance Ethernet chips):
        !           149: /usr/ipc/mgrs/ipconfig /dev/le00 `cat /etc/whoami` mh-capek-net /dev/le01 &
        !           150: 
        !           151:        Other files that you probably want to modify are:
        !           152:                etc/passwd
        !           153:                etc/whoami - should contain name of the system
        !           154:      7) You are now ready to build the file systems:
        !           155:                cd sys/construct
        !           156:                mkfs /dev/rsd0a proto0a.new
        !           157:                mkfs /dev/rsd0g proto0g.new
        !           158:      8) I would check them after you make them with fsck.
        !           159:                fsck /dev/rsd0a /dev/rsd0g
        !           160:        Expect fsck to complain:
        !           161:                file is not a block or character device; OK?
        !           162:        when it starts up, as it is compiled with v9's idea of
        !           163:        a file system, not SunOS'.  Just type "y".  If there are
        !           164:        any other problems, something went wrong making the file systems.
        !           165:      9) Install the boot block on /dev/rsd0a (since the file systems have
        !           166:        a different format, a new boot block must also be installed):
        !           167:                cd test/stand
        !           168:                installboot bootpr /dev/rsd0a
        !           169:                cd ../..
        !           170:     10) You are now ready to boot the v9 system.  Halt SunOS and boot
        !           171:        the v9 system in single user mode (it is IMPORTANT that you
        !           172:        bring it up single user when first booting):
        !           173:                b sd(0,0,0) -s
        !           174:     11) It should print out the configuration info and then give you
        !           175:        the # prompt.  Congratulations, you are now running under
        !           176:        Ninth Edition.
        !           177:     12) Finish the installation procedure by executing the shell file
        !           178:        "startup" in the root directory:
        !           179:                cd /
        !           180:                startup 
        !           181:        This file takes care of unpacking all the tar files used to
        !           182:        construct the system.  It will run for several minutes as many of
        !           183:        the tar files have been compressed to save space.
        !           184:        You can see what it does by looking at it before you build
        !           185:        the system (sys/construct/test/startup).
        !           186:     13) Give root a passwd
        !           187:     14) Edit the Ethernet host and authentication tables in /usr/ipc/lib.
        !           188:        The files of interest are
        !           189:                inaddr.local
        !           190:                auth.local
        !           191:        to correspond to your site.  The format of the files should be
        !           192:        obvious from looking at them.
        !           193:     15) Type control-D to bring the system up multiuser.
        !           194:     16) Log in as root and give yourself a login
        !           195:     17) Log in as yourself. To use the X window system, copy the
        !           196:        following files from the /usr/dak directory:
        !           197:                .profile        /* For correct PATH */
        !           198:                .Xstart         /* X startup file */
        !           199:                .uwmrc
        !           200:        To start the X window system:
        !           201:                . .profile
        !           202:                Xstart
        !           203:        To get out of the X window system, type Xexit in any of the windows.
        !           204:        The window manager is configure so holding down the Sun keyboard
        !           205:        "LEFT" or "RIGHT" key and hitting the right mouse button generates
        !           206:        the window manager menu.
        !           207:     19) After the system has been installed, future boots should be
        !           208:        automatic.  Just power up or type >b sd() to the console monitor.
        !           209:     20) Good luck
        !           210: 
        !           211: If your are going to build your own system, you will need to build the
        !           212: v9 config (sys/conf/src/config) first.  There is a man page in that
        !           213: directory describing it. The configuration files themselves, look
        !           214: very similar to the configuration files used by Sun to build their kernels.
        !           215: See sys/{3-50|3-75}/conf for examples.
        !           216: 
        !           217: Some known bugs (I'm sure there are more):
        !           218:        The keyboard line discipline that the kernel pops on the console
        !           219:        (sys/sundev/kbdld.c) to map up-down keystrokes of the Sun keyboard
        !           220:        to ASCII characters is buggy.  This discipline is only used when using  the PROM to drive the screen (i.e. when not using a window system).
        !           221:        The problem is the discipline believes it will get
        !           222:        an up/down sequence for each key hit.  Unfortunately, Sun
        !           223:        keyboads don't generate up/down codes like they are supposed to.
        !           224:        Sometimes the up or down sequence never gets transmitted.
        !           225:        The fix that Sun uses in their driver keeps a table containing
        !           226:        the state of each key, so if for example an up code for a key
        !           227:        is received but the driver thinks the key is already up, the
        !           228:        driver fakes the down code when it receives the up code.
        !           229:        If you have noticed that when you type quickly to a Sun
        !           230:        characters get transposed with a higher frequency than normal,
        !           231:        this is the reason.  The driver in the X11 server keeps a
        !           232:        a state map of the keys and generates the fake codes.
        !           233:        The symptom you will see when not using X windows, is typed
        !           234:        characters on the console will be lost.
        !           235: 
        !           236:        The SCSI tape driver is not compatible with the drives shipped
        !           237:        by Sun.  It works with the ARCHIVE Corporation Viper (2060S)
        !           238:        Half-Height Intelligent SCSI driver (the controller is built
        !           239:        in the drive).
        !           240: 
        !           241:        The SCSI disconned/reconnect doesn't work.  It didn't work in
        !           242:        the SunOS release 3.1 drivers, from which the SCSI driver is
        !           243:        derived, either.
        !           244:        
        !           245: 
        !           246:        David Kapilow                   5/11/89
        !           247:        alice!dak or [email protected]
        !           248:        (201)-582-3596
        !           249:        AT&T Bell Laboratories
        !           250:        RM 2B-424
        !           251:        600 Mountain Ave
        !           252:        Murray Hill, N.J.  07974

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.