123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- .TH CONSOLEFS 4
- .SH NAME
- consolefs, C, clog \- file system for console access
- .SH SYNOPSIS
- .B aux/consolefs
- [
- .B -m
- .I mntpt
- ] [
- .B -c
- .I consoledb
- ]
- .PP
- .B C
- .I system
- .PP
- .B aux/clog
- console log
- .I system
- .SH DESCRIPTION
- To ease administration of multiple machines one might attach
- many serial console lines to a single computer.
- .I Consolefs
- is a file system that lets multiple users simultaneously access
- these console lines.
- The consoles and permissions to access them are defined in the
- file
- .I consoledb
- (default
- .BR /lib/ndb/consoledb ).
- The format of
- .I consoledb
- is the same as that of other
- .B /lib/ndb
- files,
- .IR ndb (6).
- Consoles are defined by entries of the form:
- .PP
- .EX
- console=dirty dev=/dev/eia205
- uid=bignose
- gid=support
- speed=56200
- cronly=
- .EE
- .PP
- Each
- .IR console / dev
- pair represents the name of a console and the device
- associated with it.
- .I Consolefs
- presents a single level directory with up to three files
- per console:
- .IR console ,
- .IB console ctl\f1,
- and
- .IB console stat\f1.
- Writes of
- .I console
- are equivalent to writes of
- .I dev
- and reads and writes of
- .IB console ctl
- and
- .IB console stat
- are equivalent to reads and writes of
- .IB dev ctl
- and
- .IB dev stat
- respectively.
- .IB Console ctl
- and
- .IB console stat
- will not exist if the underlying
- .I dev
- does not provide them.
- .I Consolefs
- broadcasts anything it reads from
- .I dev
- to all readers of
- .IR console .
- Therefore, many users can
- .IR con (1)
- to a
- .IR console ,
- see all output, and enter commands.
- .PP
- The
- .I cronly=
- attribute causes newlines typed by the user to be sent to
- the console as returns.
- The
- .I speed=x
- attribute/value pair specifies a bit rate for the
- console. The default is 9600 baud.
- The
- .I openondemand=
- attribute causes the console device
- .RI ( dev )
- to be opened only when the corresponding
- .IB mntpt / console
- file is open.
- .PP
- Access to the console is controlled by the
- .I uid
- and
- .I gid
- attributes/value pairs.
- The uid values are user account names.
- The gid values are the names of groups defined in
- .I consolefs
- by entries of the form:
- .PP
- .EX
- group=support
- uid=bob
- uid=carol
- uid=ted
- uid=alice
- .EE
- .PP
- Groups are used to avoid excessive typing. Using
- .I gid=x
- is equivalent to including a
- .I uid=y
- for each user
- .I y
- that is a member of
- .IR x .
- .PP
- To keep users from inadvertently interfering with one another,
- notification is broadcast to all readers whenever a user
- opens or closes
- .IR name .
- For example, if user
- .B boris
- opens a console that users
- .B vlad
- and
- .B barney
- have already opened, all will read the message:
- .PP
- .EX
- [+boris, vlad, barney]
- .EE
- .PP
- If
- .B vlad
- then closes,
- .B boris
- and
- .B barney
- will read:
- .PP
- .EX
- [-vlad, boris, barney]
- .EE
- .PP
- .I Consolefs
- posts the client end of its 9P channel in
- .BR /srv/consolefs
- and mounts this locally in
- .I mntpt
- (default
- .BR /mnt/consoles );
- remote clients must
- .B mount
- (see
- .IR bind (1))
- this file to see the consoles.
- .PP
- The
- .IR rc (1)
- script
- .B C
- automates this procedure.
- It uses
- .IR import (4)
- to connect to
- .B /mnt/consoles
- on the machine connected to all the consoles, then uses
- .IR con (1)
- to connect to the console of the machine
- .IR system.
- The script must be edited at installation
- by the local administration to identify the
- system that holds
- .BR /mnt/consoles .
- .PP
- .I Aux/clog
- opens the file
- .I console
- and writes every line read from it, prefixed
- by the ASCII time to the file
- .IR log .
- .PP
- An example of 2 consoles complete with console logging is:
- .IP
- .EX
- % cat /lib/ndb/consoledb
- group=sys
- uid=glenda
- console=bootes dev=/dev/eia0 gid=sys
- console=fornax dev=/dev/eia1 gid=sys
- % aux/consolefs
- % ls -p /mnt/consoles
- bootes
- bootesctl
- fornax
- fornaxctl
- % clog /mnt/consoles/fornax /sys/log/fornax &
- % clog /mnt/consoles/bootes /sys/log/bootes &
- .EE
- .PP
- The console server's default name space must
- mount the consoles for
- .I C
- to import.
- This can be arranged by adding
- .IP
- .EX
- mount /srv/consoles /mnt/consoles
- .EE
- .LP
- to
- .BR /lib/namespace.$sysname .
- .SH FILES
- .TF /lib/ndb/consoledb
- .TP
- .B /srv/consoles
- Client end of pipe to server.
- .TP
- .B /mnt/consoles
- Default mount point.
- .TP
- .B /lib/ndb/consoledb
- Default user database.
- .SH SOURCE
- .B /sys/src/cmd/aux/consolefs.c
- .br
- .B /rc/bin/C
- .br
- .B /sys/src/cmd/aux/clog.c
- .SH BUGS
- .PP
- Changing the gid's or uid's while
- .I consolefs
- is running
- is detected by
- .IR consolefs .
- However, to add new consoles
- one must restart
- .IR consolefs .
|