home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / mach / doc / notes / multi-server.info.Z / multi-server.info
Encoding:
Internet Message Format  |  1992-09-11  |  10.7 KB

  1. Return-Path: <@cs.cmu.edu:dpj@dpj.mach.cs.cmu.edu>
  2. Received: from cs.cmu.edu by ERNST.MACH.CS.CMU.EDU id aa21959;
  3.           11 Sep 92 14:57:48 EDT
  4. Received: from dpj.mach.cs.cmu.edu by CS.CMU.EDU id aa15721;
  5.           11 Sep 92 14:56:53 EDT
  6. Received: from localhost by dpj.mach.cs.cmu.edu (NeXT-1.0 (From Sendmail 5.52)/NeXT-0.9)
  7.     id AA11414; Fri, 11 Sep 92 14:56:26 EDT
  8. From: Daniel Julin <dpj+@CS.CMU.EDU>
  9. To: lli@CS.CMU.EDU
  10. Cc: jms@CS.CMU.EDU
  11. Subject: [Daniel Julin: Re: Multi-Server availability ]
  12. Date: Fri, 11 Sep 92 14:56:22 -0400
  13. Message-Id: <11413.716237782@dpj.mach.cs.cmu.edu>
  14. Sender: dpj@DPJ.MACH.CS.CMU.EDU
  15.  
  16. I knew I had this somewhere!!!
  17.  
  18.  
  19. -- Daniel --
  20.  
  21. ------- Forwarded Messages
  22.  
  23. From: Daniel Julin <dpj+@cs.cmu.edu>
  24. Subject: Re: Multi-Server availability 
  25. Date: Thu, 26 Mar 92 14:59:20 EST
  26.  
  27.  
  28.  
  29. We are now making the multi-server sources available for perusal and
  30. experimentation by interested parties. We do not have enough resources
  31. to provide serious support, so you're pretty much on your own to play
  32. with them. The UNIX emulation is not complete, but it is now good
  33. enough to compile itself entirely, and to be used for extended
  34. experimentation. The system is in need of a good performance tuning,
  35. but it's good enough that you won't grow old watching it... It works
  36. on i386/i486 under recent versions of the Mach 3.0 kernel.
  37.  
  38. You can arrange to set-up a SUP by sending mail to mach@cs.cmu.edu,
  39. and requesting the "US" system. The distribution is similar to the one
  40. used for other Mach project sources (kernel, UNIX single-server, POE,
  41. etc.).  We do require a BSD source license for now, because we have
  42. assembled a variety of servers from different sources, and we don't
  43. have time to sort out the free from the non-free.
  44.  
  45. We don't yet have a complete set of documentation for this system
  46. (other than the sources themselves). But here are a few useful
  47. sources:
  48.     - the overview paper in the November 1991 Mach USENIX
  49.       Symposium. This is now slightly out of date in terms of
  50.       status, but it is still accurate for a technical /
  51.       philosophical overview.
  52.     - the mach3 mailing list (mach3@cs.cmu.edu,
  53.       mach3-request@cs.cmu.edu). Releases messages for all the
  54.       Mach project activities are posted there. The multi-server
  55.       ones are labelled "USxx". They tend to contain a lot of
  56.       technical information about whatever new features were added
  57.       with each release. They are archived in the file
  58.       "MERGE_HISTORY" at the base of the source tree.
  59.     - a paper by Paulo Guedes and myself at the 2nd International
  60.       Workshop on Object-orientation in Operating Systems
  61.       (I-WOOOS2), describing the C++ approach for the
  62.       implementation.
  63.  
  64.  
  65. If you have specific technical questions, please address them to me or
  66. Mark Stevenson (jms@cs.cmu.edu).
  67.  
  68.  
  69. Hope this helps,
  70.  
  71. - -- Daniel --
  72.  
  73. ------- Message 2
  74.  
  75. Subject: US startup
  76. - --------
  77.  
  78. The multi-server components must be installed in
  79. /mach_servers/us/{bin,lib}, except for the emulation library, which
  80. must be installed as /lib/bsd_all.lib in the file system that will
  81. constitute the root of the emulated system.
  82.  
  83. /mach_servers/bin/config_server is the "primary server". It
  84. establishes a basic name service and starts all the other servers.  It
  85. is controlled by the files /mach_servers/rc.us and
  86. /mach_servers/us/lib/prefix.config. The program
  87. /mach_servers/us/bin/fsadmin is run as part of the startup sequence to
  88. establish the initial root name space. It is controlled by the script
  89. /mach_servers/us/lib/STARTUP.fsadmin.
  90.  
  91. The first emulated process is created by the program
  92. /mach_servers/bin/emul_init, itself started from config_server.
  93. emul_init creates a new address space, loads an emulation library from
  94. the file server, connects it to all the appropriate servers
  95. (including a connection to a specific TTY in the tty_server), and
  96. starts the first user-level process by executing the exec() system
  97. call (usually with /bin/csh or /bin/login).
  98.  
  99. Both config_server and the various other servers expect to operate in
  100. a simplified UNIX environment, in order to read configuration files
  101. and to exec() other servers. Currently, this environment can be
  102. provided in one of two ways:
  103.     - start config_server under the UNIX single-server emulator.
  104.       This is by far the preferred solution for debugging, since
  105.       there is then another working UNIX system from which to run
  106.       gdb and attach to the various servers. This also allows the
  107.       tty_server to access TTY's from the single-server, such as
  108.       xterm windows or telnet connections.
  109.     - start config_server under the POE emulator. This avoids the
  110.       need for another heavy emulator, but the multi-server must
  111.       then "take over" the whole machine. If it crashes, you must
  112.       reboot. Debugging is hard. The only TTY's available are the
  113.       console and the hard-wired lines (not enough networking
  114.       support in US yet). 
  115. In the future, I expect that config_server will be integrated into a
  116. stripped-down version of POE, to provide a single-level startup
  117. service.
  118.  
  119.       
  120. In practice, to start a multi-server under a UX emulation, follow the
  121. procedure below:
  122. (1) Once only:
  123. (1.1) Copy a multi-server release area to /mach_servers/us
  124. (1.2) Create a fresh UFS partition to be used as the root for the US
  125.       system. We recommend using a partition not normally mounted
  126.       under the UX system, to avoid problems if the UFS server
  127.       crashes, and conflicts if bopth emulators try to write the same
  128.       partition at once. Populate this partition with all the desired
  129.       UNIX programs that are to run under the US emulation (/bin/csh,
  130.       /bin/ls, etc.).
  131. (1.3) Copy bsd_all.lib to /lib/bsd_all.lib in the US root partition.
  132. (1.4) Copy /mach_servers/us/bin/rc.us to /mach_servers/rc.us, and edit
  133.       that file to point the UFS server(s) to the appropriate disk
  134.       partition(s).
  135. (1.5) Edit /mach_servers/lib/prefix.config and
  136.       /mach_servers/lib/STARTUP.fsadmin to match the set of disk
  137.       partitions to be used in the US environment.
  138. (1.6) Create a file /etc/NETWORKS.US to give startup information for
  139.       the x-kernel protocol server. The format of this file is
  140.     a.b.c.d on xx
  141.       where "a.b.c.d" is the IP address to be used as the local address
  142.       by the protocol server, and "xx" is the name of the network device
  143.       as known to the device_open() kernel call ("pc0" for a PC586 on
  144.       most i386/i486 machines). If you omit /etc/NETWORKS.US, the
  145.       system will look in /etc/NETWORKS, which is used by the standard
  146.       CMU/Mach systems. Note that the x-kernel protocol server may not
  147.       share an IP address with another UNIX emulator or a 2.6 kernel.
  148.  
  149.  
  150. (2) Each time you start:
  151. (2.1) Open a new telnet or xterm window to the machine that is to run
  152.       the US system. Let the TTY for that window be /dev/ttyxx.
  153. (2.2) Put /dev/ttyxx to sleep in the UX emulation, by executing "sleep
  154.       1000000".
  155. (2.3) cd /mach_servers/us/bin
  156. (2.4) Execute config_server to start the whole system. The command
  157.       line specifies the initial program to run under the
  158.       config_server after all the servers are started. This program is
  159.       usually emul_init. The arguments to emul_init specify the TTY to
  160.       use and the initial UNIX program to execute. For example:
  161.       "./config_server ./emul_init -t/dev/ttyxx_htg /bin/csh >& /tmp/LOG &"
  162.       will start a csh connected to "/dev/ttyxx_htg", which
  163.       corresponds to the UX TTY "/dev/ttyxx" as seen from the US
  164.       tty_server. Instead of emul_init, other programs may be started,
  165.       for example a sub-shell or xterm, from which the servers are
  166.       accessible, and from which fsadmin or emul_init itself can in
  167.       turn be started.
  168. (2.5) Wait a few minutes for the system to come up, watching the
  169.       output in /tmp/LOG if desired.
  170. (2.6) A shell prompt will appear in the /dev/ttyxx window. This is the
  171.       US emulated system. If starting with /bin/csh, the environment
  172.       (PATH, USER, HOME, etc.) is initially empty. Set it up
  173.       accordingly.
  174.  
  175. (3) To kill the US system:
  176. (3.1) Kill config_server from the UX system.
  177. (3.2) If the other servers do not die also, kill them individually.
  178.  
  179.  
  180. ------- Message 3
  181.  
  182. Subject: US source tree
  183. - --------
  184.  
  185. Here is the organization for the source tree for the US system (as of
  186. US47):
  187.  
  188. ./include, ./local_include: include files internal to the US system,
  189.     shared between various components. Originally, ./include was
  190.     supposed to contain the only files needed to interface an
  191.     emulation library to the rest of the system, while
  192.     ./local_include contained everything else. This distinction
  193.     has never worked well in practice.
  194.  
  195. ./mach_include_sa: a frozen copy of the Mach kernel include files.
  196.     Periodically regenerated from the real kernel sources.
  197.  
  198. ./sa_include: a few files that override the files in
  199.     ./mach_include_sa, to correct problems and defects.
  200.  
  201. ./unix_include: a frozen copy of UNIX include files, that define the
  202.     UNIX system that we are emulating.
  203.  
  204. ./lib/c++: support functions for the GNU C++ compiler
  205.  
  206. ./lib/mach3: a collection of libraries for basic functions needed by
  207.     most Mach programs. Roughly equivalent to a combination of
  208.     libmach.a and libc.a from the common release areas. Will
  209.     someday be superseded by a standard common library for all
  210.     Mach applications.
  211.  
  212. ./lib/threads: modified version of the cthreads library, for use
  213.     inside the US emulation library
  214.  
  215. ./lib/us++: main repository for classes and common functions in the
  216.     whole US system. Should be largely generic, and not dependent
  217.     on UNIX semantics. Used to be called ./lib/us, but was renamed
  218.     when we converted to C++.
  219.  
  220. ./lib/ux: support classes and functions for the implementation of
  221.     UNIX-like emulation libraries.
  222.  
  223. ./lib/emul: the UNIX BSD emulation library.
  224.  
  225. ./lib/emul/emul_init_prog: the emul_init program that starts the first
  226.     emulated process.
  227.  
  228. ./server/as: authentication server
  229.  
  230. ./server/config: configuration/startup server (config_server, see note
  231.     on startup)
  232.  
  233. ./server/diag: diagnostics server, to keep track of error messages and
  234.     debugging logs
  235.  
  236. ./server/name: general-purpose root name server
  237.  
  238. ./server/nfs: NFS client (not in use currently)
  239.  
  240. ./server/pipenet: server providing local pipes and UNIX-domain
  241.     sockets.
  242.  
  243. ./server/tm: process management server (task_master)
  244.  
  245. ./server/tty: TTY server
  246.  
  247. ./server/ufs: UFS server (UNIX filesystems on local disk)
  248.  
  249. ./pkg/malloc: a malloc tracer (not in use currently)
  250.  
  251. ./pkg/netmsg: Mach Network Message Server for remote Mach IPC (not in
  252.     use currently) 
  253.  
  254. ./pkg/sunrpc: SUN RPC facility for the NFS server (not in use
  255.     currently)
  256.  
  257. ./pkg/xkernel: network server based on the x-kernel from the
  258.     University of Arizona. Provides UDP sockets. TCP sockets are
  259.     planned but not operational.
  260.  
  261. ./utils: utility scripts and programs
  262.  
  263. ./MERGE_HISTORY: a file containing a copy of every release message
  264.     from the history of the US system. Contains many explanations
  265.     of how things work.
  266.  
  267. ./doc, ./man: some documentation, mostly obsolete.
  268.  
  269.  
  270. ------- End of Forwarded Messages
  271.  
  272.