diff options
Diffstat (limited to 'share/doc/handbook/term.sgml')
-rw-r--r-- | share/doc/handbook/term.sgml | 539 |
1 files changed, 0 insertions, 539 deletions
diff --git a/share/doc/handbook/term.sgml b/share/doc/handbook/term.sgml deleted file mode 100644 index d84c2ce..0000000 --- a/share/doc/handbook/term.sgml +++ /dev/null @@ -1,539 +0,0 @@ -<!-- This is an SGML document in the linuxdoc DTD describing - hardwired terminals with FreeBSD. By Sean Kelly, (c) 1996. - - $Id$ - - The FreeBSD Documentation Project - -<!DOCTYPE linuxdoc PUBLIC "-//FreeBSD//DTD linuxdoc//EN"> - -<linuxdoc> - <article> - <title> Hardwired Terminals - <author> Sean Kelly <tt/kelly@fsl.noaa.gov/ - <date> 24 June 1996, (c) 1996 - - <abstract> This document describes using hardwired terminals - attached to computers running FreeBSD. It describes how to - set up the terminal hardware (including cabling), how to - configure FreeBSD to provide login sessions to those - terminals, and how to troubleshoot problems with terminals. - </abstract> - - <toc> ---> - -<sect><heading>Terminals<label id="term"></heading> - - <p><em>Contributed by &a.kelly;<newline>28 July 1996</em> - - Terminals provide a convenient and low-cost way to access the - power of your FreeBSD system when you are not at the computer's - console or on a connected network. This section describes how - to use terminals with FreeBSD. - - <sect1><heading>Uses and Types of Terminals<label - id="term:uses"></heading> - - <p>The original Unix systems did not have consoles. Instead, - people logged in and ran programs through terminals that were - connected to the computer's serial ports. It is quite similar - to using a modem and some terminal software to dial into a - remote system to do text-only work. - - Today's PCs have consoles capable of high quality graphics, - but the ability to establish a login session on a serial port - still exists in nearly every Unix-style operating system - today; FreeBSD is no exception. By using a terminal attached - to a unused serial port, you can log in and run any text - program that you would normally run on the console or in an - <tt/xterm/ window in the X Window System. - - For the business user, you can attach many terminals to a - FreeBSD system and place them on your employees' desktops. - For a home user, a spare computer such as an older IBM PC or a - Macintosh can be a terminal wired into a more powerful - computer running FreeBSD. You can turn what might otherwise - be a single-user computer into a powerful multiple user - system. - - For FreeBSD, there are three kinds of terminals: - - <itemize> - <item><ref name="Dumb terminals" id="term:dumb"> - <item><ref name="PCs acting as terminals" id="term:pcs"> - <item><ref name="X terminals" id="term:x"> - </itemize> - - The remaining subsections describe each kind. - - <sect2><heading>Dumb Terminals<label id="term:dumb"></heading> - - <p>Dumb terminals are specialized pieces of hardware that let - you connect to computers over serial lines. They are called - ``dumb'' because they have only enough computational power - to display, send, and receive text. You cannot run any - programs on them. It is the computer to which you connect - them that has all the power to run text editors, compilers, - email, games, and so forth. - - There are hundreds of kinds of dumb terminals made by - many manufacturers, including Digital Equipment - Corporation's VT-100 and Wyse's WY-75. Just about any kind - will work with FreeBSD. Some high-end terminals can even - display graphics, but only certain software packages can - take advantage of these advanced features. - - Dumb terminals are popular in work environments where - workers do not need access to graphic applications such as - those provided by the X Window System. - - <sect2><heading>PCs Acting As Terminals<label - id="term:pcs"></heading> - - <p>If a <ref name="dumb terminal" id="term:dumb"> has just - enough ability to display, send, and receive text, then - certainly any spare personal computer can be a dumb - terminal. All you need is the proper cable and some - <em/terminal emulation/ software to run on the computer. - - Such a configuration is popular in homes. For example, if - your spouse is busy working on your FreeBSD system's - console, you can do some text-only work at the same time - from a less powerful personal computer hooked up as a - terminal to the FreeBSD system. - - <sect2><heading>X Terminals<label id="term:x"></heading> - - <p>X terminals are the most sophisticated kind of terminal - available. Instead of connecting to a serial port, they - usually connect to a network like Ethernet. Instead of - being relegated to text-only applications, they can display - any X application. - - We introduce X terminals just for the sake of completeness. - However, this chapter does <em/not/ cover setup, - configuration, or use of X terminals. - - <sect1><heading>Cables and Ports<label - id="term:cables-ports"></heading> - - <p>To connect a terminal to your FreeBSD system, you need the - right kind of cable and a serial port to which to connect it. - This section tells you what to do. If you are already - familiar with your terminal and the cable it requires, skip to - <ref name="Configuration" id="term:config">. - - <sect2><heading>Cables<label id="term:cables"></heading> - - <p>Because terminals use serial ports, you need to use - serial---also known as RS-232C---cables to connect the - terminal to the FreeBSD system. - - There are a couple of kinds of serial cables. Which one - you'll use depends on the terminal you want to connect: - - <itemize> - <item>If you are connecting a personal computer to act as - a terminal, use a <ref name="null-modem" id="term:null"> - cable. A null-modem cable connects two computers or - terminals together. - - <item>If you have an actual terminal, your best source of - information on what cable to use is the documentation - that accompanied the terminal. If you do not have the - documentation, then try a <ref name="null-modem" - id="term:null"> cable. If that does not work, then try - a <ref name="standard" id="term:std"> cable. - </itemize> - - Also, the serial port on <em/both/ the terminal and your - FreeBSD system must have connectors that will fit the cable - you are using. - - <sect3><heading>Null-modem cables<label id="term:null"></heading> - - <p>A null-modem cable passes some signals straight through, - like ``signal ground,'' but switches other signals. For - example, the ``send data'' pin on one end goes to the - ``receive data'' pin on the other end. - - If you like making your own cables, here is a table - showing a recommended way to construct a null-modem cable - for use with terminals. This table shows the RS-232C - signal names and the pin numbers on a DB-25 connector. -<tscreen><verb> - Signal Pin# Pin# Signal - TxD 2 ----------------------- 3 RxD - RxD 3 ----------------------- 2 TxD - DTR 20 ----------------------- 6 DSR - DSR 6 ----------------------- 20 DTR - SG 7 ----------------------- 7 SG - DCD 8 ----------------------+ 4 RTS* - *RTS 4 + + 5 CTS* - *CTS 5 +---------------------- 8 DCD - -* Connect pins 4 to 5 internally in the connector hood, and then to - pin 8 in the remote hood. -</verb></tscreen> - - <sect3><heading>Standard RS-232C Cables<label - id="term:std"></heading> - - <p>A standard serial cable passes all the RS-232C signals - straight-through. That is, the ``send data'' pin on one - end of the cable goes to the ``send data'' pin on the - other end. This is the type of cable to connect a modem - to your FreeBSD system, and the type of cable needed for - some terminals. - - <sect2><heading>Ports<label id="term:ports"></heading> - - <p>Serial ports are the devices through which data is - transferred between the FreeBSD host computer and the - terminal. This section describes the kinds of ports that - exist and how they are addressed in FreeBSD. - - <sect3><heading>Kinds of Ports<label - id="term:portkinds"></heading> - - <p>Several kinds of serial ports exist. Before you purchase - or construct a cable, you need to make sure it will fit - the ports on your terminal and on the FreeBSD system. - - Most terminals will have DB25 ports. Personal computers, - including PCs running FreeBSD, will have DB25 or DB9 - ports. If you have a multiport serial card for your PC, - you may have RJ-12 or RJ-45 ports. - - See the documentation that accompanied the hardware for - specifications on the kind of port in use. A visual - inspection of the port often works, too. - - <sect3><heading>Port Names<label - id="term:portnames"></heading> - - <p>In FreeBSD, you access each serial port through an entry - in the <tt>/dev</tt> directory. There are two different - kinds of entries: - <itemize> - <item>Callin ports are named <tt>/dev/ttyd<it/X/</tt> - where <it/X/ is the port number, starting from zero. - Generally, you use the callin port for terminals. - Callin ports require that the serial line assert the - data carrier detect (DCD) signal to work. - - <item>Callout ports are named <tt>/dev/cuaa<it/X/</tt>. - You usually do not use the callout port for terminals, - just for modems. You may use the callout port if the - serial cable or the terminal does not support the - carrier detect signal. - </itemize> - - See the sio(4) manual page for more information. - - If you have connected a terminal to the first serial port - (COM1 in DOS parlance), then you want to use - <tt>/dev/ttyd0</tt> to refer to the terminal. If it is on - the second serial port (also known as COM2), it is - <tt>/dev/ttyd1</tt>, and so forth. - - Note that you may have to configure your kernel to support - each serial port, especially if you have a multiport - serial card. See <ref name="Configuring the FreeBSD - Kernel" id="kernelconfig"> for more information. - - <sect1><heading>Configuration<label id="term:config"></heading> - - <p>This section describes what you need to configure on your - FreeBSD system to enable a login session on a terminal. It - assumes you have already configured your kernel to support the - serial port to which the terminal is connected---and that you - have connected it. - - In a nutshell, you need to tell the <tt/init/ process, which is - responsible for process control and initialization, to start a - <tt/getty/ process, which is responsible for reading a login - name and starting the <tt/login/ program. - - To do so, you have to edit the <tt>/etc/ttys</tt> file. - First, use the <tt/su/ command to become root. Then, make the - following changes to <tt>/etc/ttys</tt>: - <enum> - <item>Add an line to <tt>/etc/ttys</tt> for the entry in the - <tt>/dev</tt> directory for the serial port if it is not - already there. - - <item>Specify that <tt>/usr/libexec/getty</tt> be run on the - port, and specify the appropriate <tt/getty/ type from the - <tt>/etc/gettytab</tt> file. - - <item>Specify the default terminal type. - - <item>Set the port to ``on.'' - - <item>Specify whether the port should be ``secure.'' - - <item>Force <tt/init/ to reread the <tt>/etc/ttys</tt> file. - </enum> - - As an optional step, you may wish to create a custom - <tt/getty/ type for use in step 2 by making an entry in - <tt>/etc/gettytab</tt>. This document does not explain how to - do so; you are encouraged to see the gettytab(5) and the - getty(8) manual pages for more information. - - The remaining sections detail how to do these steps. We will - use a running example throughout these sections to illustrate - what we need to do. In our example, we will connect two - terminals to the system: a Wyse-50 and a old 286 IBM PC - running Procomm terminal software emulating a VT-100 terminal. - We connect the Wyse to the second serial port and the 286 to - the sixth serial port (a port on a multiport serial card). - - For more information on the <tt>/etc/ttys</tt> file, see the - ttys(5) manual page. - - <sect2><heading>Adding an Entry to <tt>/etc/ttys</tt><label - id="term:etcttys"></heading> - <p>First, you need to add an entry to the <tt>/etc/ttys</tt> - file, unless one is already there. - - The <tt>/etc/ttys</tt> file lists all of the ports on your - FreeBSD system where you want to allow logins. For example, - the first virtual console <tt>ttyv0</tt> has an entry in - this file. You can log in on the console using this entry. - This file contains entries for the other virtual consoles, - serial ports, and pseudo-ttys. For a hardwired terminal, - just list the serial port's <tt>/dev</tt> entry without the - <tt>/dev</tt> part. - - When you installed your FreeBSD system, the - <tt>/etc/ttys</tt> file included entries for the first four - serial ports: <tt/ttyd0/ through <tt/ttyd3/. If you are - attaching a terminal on one of those ports, you do not need - to add an entry. - - In our example, we attached a Wyse-50 to the second serial - port, <tt/ttyd1/, which is already in the file. We need to - add an entry for the 286 PC connected to the sixth serial - port. Here is an excerpt of the <tt>/etc/ttys</tt> file - after we add the new entry: -<tscreen><verb> -ttyd1 "/usr/libexec/getty std.9600" unknown off secure -ttyd5 -</verb></tscreen> - - <sect2><heading>Specifying the <tt/getty/ Type<label - id="term:getty"></heading> - <p>Next, we need to specify what program will be run to handle - the logins on a terminal. For FreeBSD, the standard program - to do that is <tt>/usr/libexec/getty</tt>. It is what - provides the <tt>login:</tt> prompt. - - The program <tt/getty/ takes one (optional) parameter on its - command line, the <em/<tt/getty/ type/. A <tt/getty/ type - tells about characteristics on the terminal line, like bps - rate and parity. The <tt/getty/ program reads these - characteristics from the file <tt>/etc/gettytab</tt>. - - The file <tt>/etc/gettytab</tt> contains lots of entries for - terminal lines both old and new. In almost all cases, the - entries that start with the text <tt/std/ will work for - hardwired terminals. These entries ignore parity. There is - a <tt/std/ entry for each bps rate from 110 to 115200. Of - course, you can add your own entries to this file. The - manual page gettytab(5) provides more information. - - When setting the <tt/getty/ type in the <tt>/etc/ttys</tt> - file, make sure that the communications settings on the - terminal match. - - For our example, the Wyse-50 uses no parity and connects at - 38400 bps. The 286 PC uses no parity and connects at 19200 - bps. Here is the <tt>/etc/ttys</tt> file so far (showing - just the two terminals in which we are interested): -<tscreen><verb> -ttyd1 "/usr/libexec/getty std.38400" unknown off secure -ttyd5 "/usr/libexec/getty std.19200" -</verb></tscreen> - Note that the second field---where we specify what program - to run---appears in quotes. This is important, otherwise - the type argument to <tt/getty/ might be interpreted as the - next field. - - <sect2><heading>Specifying the Default Terminal Type<label - id="term:deftermtype"></heading> - - <p>The third field in the <tt>/etc/ttys</tt> file lists the - default terminal type for the port. For dialup ports, you - typically put <tt/unknown/ or <tt/dialup/ in this field - because users may dial up with practically any kind of - terminal or software. For hardwired terminals, the terminal - type does not change, so you can put a real terminal type in - this field. - - Users will usually use the <tt/tset/ program in - their <tt/.login/ or <tt/.profile/ files to check the terminal - type and prompt for one if necessary. By setting a terminal - type in the <tt>/etc/ttys</tt> file, users can forego such - prompting. - - To find out what terminal types FreeBSD supports, see the - file <tt>/usr/share/misc/termcap</tt>. It lists about 600 - terminal types. You can add more if you wish. See the - termcap(5) manual page for information. - - In our example, the Wyse-50 is a Wyse-50 type of terminal - (although it can emulate others, we will leave it in Wyse-50 - mode). The 286 PC is running Procomm which will be set to - emulate a VT-100. Here are the pertinent yet unfinished - entries from the <tt>/etc/ttys</tt> file: -<tscreen><verb> -ttyd1 "/usr/libexec/getty std.38400" wy50 off secure -ttyd5 "/usr/libexec/getty std.19200" vt100 -</verb></tscreen> - - <sect2><heading>Enabling the Port<label - id="term:enable"></heading> - <p>The next field in <tt>/etc/ttys</tt>, the fourth field, - tells whether to enable the port. Putting <tt/on/ here will - have the <tt/init/ process start the program in the second - field, <tt/getty/, which will prompt for a login. If you - put <tt/off/ in the fourth field, there will be no - <tt/getty/, and hence no logins on the port. - - So, naturally, you want an <tt/on/ in this field. Here - again is the <tt>/etc/ttys</tt> file. We have turned each - port <tt/on/. -<tscreen><verb> -ttyd1 "/usr/libexec/getty std.38400" wy50 on secure -ttyd5 "/usr/libexec/getty std.19200" vt100 on -</verb></tscreen> - - - <sect2><heading>Specifying Secure Ports<label - id="term:secure"></heading> - <p>We have arrived at the last field (well, almost: there is - an optional <tt/window/ specifier, but we will ignore that). - The last field tells whether the port is secure. - - What does ``secure'' mean? - - It means that the root account (or any account with a user - ID of 0) may login on the port. Insecure ports do not - allow root to login. - - How do you use secure and insecure ports? - - By marking a port as insecure, the terminal to which it is - connected will not allow root to login. People who know - the root password to your FreeBSD system will first have to - login using a regular user account. To gain superuser - privileges, they will then have to use the <tt/su/ command. - - Because of this, you will have two records to help track - down possible compromises of root privileges: both the login - and the <tt/su/ command make records in the system log (and - logins are also recorded in the <tt/wtmp/ file). - - By marking a port as secure, the terminal will allow root - in. People who know the root password will just login as - root. You will not have the potentially useful login and - <tt/su/ command records. - - Which should you use? - - Just use ``insecure.'' Use ``insecure'' <em/even/ for - terminals <em/not/ in public user areas or behind locked - doors. It is quite easy to login and use <tt/su/ if you - need superuser privileges. - - Here finally are the completed entries in the - <tt>/etc/ttys</tt> file, with comments added to describe - where the terminals are: -<tscreen><verb> -ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure # Kitchen -ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure # Guest bathroom -</verb></tscreen> - - <sect2><heading>Force <tt/init/ to Reread - <tt>/etc/ttys</tt><label id="term:hup"></heading> - <p>When you boot FreeBSD, the first process, <tt/init/, will - read the <tt>/etc/ttys</tt> file and start the programs - listed for each enabled port to prompt for logins. - - After you edit <tt>/etc/ttys</tt>, you do not want to have - to reboot your system to get <tt/init/ to see the changes. - So, <tt/init/ will reread <tt>/etc/ttys</tt> if it receives - a SIGHUP (hangup) signal. - - So, after you have saved your changes to <tt>/etc/ttys</tt>, - send SIGHUP to <tt/init/ by typing: -<tscreen><verb> -kill -HUP 1 -</verb></tscreen> - (The <tt/init/ process <em/always/ has process ID 1.) - - If everything is set up correctly, all cables are in place, - and the terminals are powered up, you should see login - prompts. Your terminals are ready for their first logins! - - <sect1><heading>Debugging your connection<label - id="term:debug"></heading> - <p>Even with the most meticulous attention to detail, something - could still go wrong while setting up a terminal. Here is a - list of symptoms and some suggested fixes. - - <descrip> - <tag/No login prompt appears/ - - Make sure the terminal is plugged in and powered up. If - it is a personal computer acting as a terminal, make sure - it is running terminal emulation software on the correct - serial port. - - Make sure the cable is connected firmly to both the - terminal and the FreeBSD computer. Make sure it is the - right kind of cable. - - Make sure the terminal and FreeBSD agree on the bps rate - and parity settings. If you have a video display - terminal, make sure the contrast and brightness controls - are turned up. If it is a printing terminal, make sure - paper and ink are in good supply. - - Make sure that a <tt/getty/ process is running and serving - the terminal. Type -<tscreen><verb> -ps -axww|grep getty -</verb></tscreen> - to get a list of running <tt/getty/ processes. You should - see an entry for the terminal. For example, the display -<tscreen><verb> -22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1 -</verb></tscreen> - shows that a <tt/getty/ is running on the second serial - port <tt/ttyd1/ and is using the <tt/std.38400/ entry in - <tt>/etc/gettytab</tt>. - - If no <tt/getty/ process is running, make sure you have - enabled the port in <tt>/etc/ttys</tt>. Make sure you - have run <tt/kill -HUP 1/. - - <tag/Garbage appears instead of a login prompt/ - - Make sure the terminal and FreeBSD agree on the bps rate - and parity settings. Check the getty processes to make - sure the correct <tt/getty/ type is in use. If not, edit - <tt>/etc/ttys</tt> and run <tt/kill -HUP 1/. - - <tag/Characters appear doubled; the password appears when typed/ - - Switch the terminal (or the terminal emulation software) - from ``half duplex'' or ``local echo'' to ``full duplex.'' - - </descrip> - - - |