|
|
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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.