当您在计算机控制台或是在一个连接的网络上时, 终端提供了一个方便和低成本的访问 FreeBSD 系统的方法。 这节描述了如何在 FreeBSD 上使用终端。
早期的 UNIX® 系统没有控制台。 人们通过将终端连接到计算机的串口来登录和使用程序。 它很像用 modem 和一些终端软件来拨号进入一个远程的系统, 只能执行文本的工作。
今天的 PC 已经可以使用高质量的图形了, 但与今天的其他UNIX操作系统一样,建立一个登录会话的能力仍然存在。 通过使用一个终端连接到一个没有使用的串口, 您就能登录和运行任何文本程序或在 X 视窗系统中运行一个 xterm 窗口程序。
对于商业用户,您可以把任何终端连接到 FreeBSD 系统, 然后把它们放在员工的桌面上。 对于家庭用户,则可以使用一台比较老的 IBM PC 或 Macintosh 运行一个终端连接到一台运行 FreeBSD 的高性能机器上。
对于FreeBSD,有三种终端:
下面一小节将描述每一种终端。
哑终端需要专门的好几种硬件,让您通过串口线连接到计算机。 它们被叫做 “哑” 是因为它们只能够用来显示, 发送和接收文本。 您不能在它上面运行任何程序。
有好几百种哑终端,包括Digital Equipment Corporation 的VT-100和Wyse的WY-75。只有几种可以在FreeBSD上工作。 一些高端的终端可以显示图形,但只有某些软件包可以使用这些高级特性。
哑终端被广泛用于那些不需要图形应用的工作中。
假如 哑终端 的功能仅限于显示、 发送和接收文本的话, 那么显然任何一台闲置的个人计算机, 都完全能够胜任哑终端的工作。 因此您需要的是合适的线缆, 以及一些在这台计算机上运行的 终端仿真 软件。
这种配置在家庭中应用十分广泛。 例如, 如果您的爱人正忙于在您的 FreeBSD 系统的控制台上工作时, 您就可以将一台功能稍弱的计算机挂在这个 FreeBSD 系统上来同时完成一些文本界面的工作。
在 FreeBSD 的基本系统中至少有两个能用于进行串口连接的工具: cu(1) 和 tip(1)。
如果要从运行 FreeBSD 的计算机上通过串口连接到另一系统, 可以使用:
# cu -l 串口设备
此处 “串口设备” 表示您计算机上某个串口对应的设备名。 在 FreeBSD 6.0 之前的版本中, 这些设备的名字是 /dev/cuaaN, 而在 6.0 和更新一些的版本中, 则是 /dev/cuadN。
此处的 “N” 表示串口的编号。
注意: 请注意在 FreeBSD 中设备的编号是从零而非一开始的 (这一点与另一些系统, 如基于 MS-DOS® 的系统不同)。 因此, 在基于 MS-DOS 系统中的 “COM1” 在 FreeBSD 中通常叫做 /dev/cuad0。
注意: 其他一些人可能喜欢使用另一些来自 Ports 套件的程序。 Ports 中提供了几个与 cu(1) 和 tip(1) 类似的工具, 例如 comms/minicom。
这节描述了您在一个终端上启用一个登录会话时, 需要在 FreeBSD 系统上进行的配置。 假设已经配置好了内核来支持串口, 就可以直接开始连接了。
在 第 12 章 中曾经提到, init 进程依赖于系统启动时所有的处理控制和初始化。 通过 init 来执行的一些任务将先读取 /etc/ttys文件, 然后在可用的终端上启用一个 getty 进程。 getty 进程可用来阅读一个登录名和启动 login程序。
然而,要为您的FreeBSD系统配置终端,您需要以 root 身份执行下面的步骤:
如果它不在那里, 您需要为串口在 /dev 目录下添加一行记录到 /etc/ttys。
指定 /usr/libexec/getty 在端口上运行, 然后从 /etc/gettytab 文件指定适当的 getty 类型。
指定默认的终端类型。
设置端口为 “on”。
确定端口是否为 “secure”。
迫使init 重新读取 /etc/ttys文件。
作为可选的步骤,您可以通过在 /etc/gettytab 中建立一个记录,在第2步创建一个定制的 getty 类型来使用。这章不会介绍如何做。 您可以参考 gettytab(5) 和 getty(8) 的联机手册了解更多信息。
/etc/ttys文件列出了您 FreeBSD系统上允许登录的所有端口。 例如, 第一个虚拟控制台 ttyv0 在这个文件中有一个记录。 您可以使用这个记录登录进控制台。 这个文件也包含其他虚拟控制台的记录,串口,和伪 ttys 终端。 对于一个硬连线的终端, 只要列出串口的 /dev 记录而不需要 /dev 部分 (例如, /dev/ttyv0 可以被列为 ttyv0)。
默认的 FreeBSD 安装包括一个支持最初四个串口 ttyd0 到 ttyd3 的/etc/ttys 文件。 如果您从那些端口中某一个使用终端,您不需要添加另一个记录。
例 24-1. 在 /etc/ttys 中增加终端记录
假设我们连接两个终端给系统: 一个 Wyse-50 和一个老的运行 Procomm 终端软件模拟一个 VT-100 终端的286IBM PC。 在 /etc/ttys 文件中的相应的记录是这样的:
ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure
getty 程序在它的命令行接收一个参数 (可选), getty 类型。 一个 getty 类型会在终端行描述一个特征, 像波特率和奇偶校验。 getty 程序从 /etc/gettytab 文件读取这些特征。
文件/etc/gettytab 包含了许多老的和新的终端行记录。 在很多例子中,启动文本 std 的记录将用硬连线终端来工作。 这些记录忽略了奇偶性。 这是一个从110到115200 bit/s的 std 记录。 当然,您可以添加您自己的记录到这个文件。 gettytab 的联机手册提供了更多的信息。
当在/etc/ttys中设置 getty 类型的时候, 确信在终端上的通讯设置匹配。 在我们的例子中, Wyse-50 不使用奇偶性, 用38400 bit/s 来连接。286 PC不使用奇偶性,用19200bit/s来连接。
在我们的例子中, Wyse-50 使用真正的终端类型, 而运行 Procomm 的286 PC将被设置成在VT-100上的模拟。
对/etc/ttys文件做一个必要的修改后,您必须发送一个 SIGHUP 信号给初始化进程来迫使它重新读取配置文件,例如:
# kill -HUP 1
注意: init 总是系统运行时的第一个进程,因此它总是PID 1。
如果能够正确设置,所有的线缆都是适当的,终端将可以启用了, 然后一个 getty 进程将在每个终端运行, 您将在您的终端上看到登录命令行。
即使您小心翼翼地注意细节,您仍然可能会在设置终端时出错。 这有一个有关问题和解决办法的列表:
确定终端被嵌入和打开了。如果把一台个人计算机充当一个终端, 确信终端模拟软件运行在正确的串口上。
确信线缆被稳固地连接在终端和 FreeBSD 计算机上。 确信用了正确的电缆。
确定终端和 FreeBSD 的传输速度和奇偶设置已经一致了。 如果您有一个图像显示终端,确信对比度已经调节好了。 如果它是一个可打印的终端,确信纸张和墨水已经就绪了。
确定一个 getty 进程正在运行和服务终端。 例如, 可以用ps 命令得到运行 getty 程序的列表,键入:
# ps -axww|grep getty
您将看到一个终端的记录。例如,下面的显示表明一个getty 正在第二个串口 ttyd1 运行, 正在 /etc/gettytab 中使用 std.38400 的记录:
22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1
如果没有 getty 进程运行, 确信您已经在/etc/ttys中启用了端口。 在修改完/etc/ttys文件后,记得运行 kill -HUP 1。
如果 getty 进程确实在运行, 但终端上仍然没有显示出登录提示, 或者虽然显示了单缺不允许您输入, 您的终端或电缆可能不支持硬件握手。 请尝试将 /etc/ttys 中的 std.38400 改为 3wire.38400 (注意在改完 /etc/ttys 之后要 kill -HUP 1)。 3wire 记录和 std 类似, 但忽略硬件握手。 您可能需要在使用 3wire 时减少波特率或启用软件流控制以避免缓冲区溢出。
确信终端和 FreeBSD 使用相同的 bit/s 传输率和奇偶校验设置。 检查一下 getty 进程确信当前使用正确的 getty 类型。 如果没有, 编辑/etc/ttys然后运行kill -HUP 1。
将终端 (或终端模拟软件) 从 “半双工” 或 “本地回显” 换成 “全双工”。
本文档和其它文档可从这里下载:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
如果对于FreeBSD有问题,请先阅读文档,如不能解决再联系<questions@FreeBSD.org>.
关于本文档的问题请发信联系 <doc@FreeBSD.org>.