26.3. 终端机

作者 Sean Kelly.

当您在计算机控制台或是在一个连接的网络上时, 终端提供了一个方便和低成本的访问 FreeBSD 系统的方法。 这节描述了如何在 FreeBSD 上使用终端。

早期的UNIX®系统没有控制台。人们通过将终端连接到计算机的串口来登录和使用程序。

如今,几乎每个UNIX®-like 操作系统(包括 FreeBSD)都能在串行端口上建立登录会话。通过使用连接到未使用的串行端口的终端,用户可以登录并运行任何文本程序,这些文本程序通常可以在控制台或xterm中运行。

有许多终端可以连接到 FreeBSD 系统。较旧的计算机可作为终端连接到运行 FreeBSD 的更强大的计算机。

FreeBSD 支持三类终端:

哑终端

哑终端是通过串行线路连接到计算机的专用硬件。它们被称为dumb的原因是它们仅有足够的计算能力来显示、发送和接收文本。这些设备上无法运行任何程序。相反,哑终端连接到运行所需程序的计算机。

有许多制造商制造的数百种哑终端,而且任何种类都与 FreeBSD 配合使用。一些高端终端甚至可以显示图形,但只有某些软件包可以利用这些高级功能。

哑终端在用户不需要访问图形应用程序的工作环境中很流行。

充当终端的计算机

假如哑终端的功能仅限于显示、 发送和接收文本的话, 那么显然任何一台闲置的个人计算机, 都完全能够胜任哑终端的工作。 因此您需要的是合适的线缆, 以及一些在这台计算机上运行的 终端仿真 软件。

这种配置是很有用的。例如, 如果一个用户忙于在 FreeBSD 系统的控制台中工作, 另一个用户可以在同一时间从一台功能较弱的个人电脑作为终端连接到 FreeBSD 系统, 进行一些纯文本工作。

FreeBSD 基础系统中至少有两个应用程序可用于通过串行连接工作:cu(1)tip(1)

例如,客户端(使用 FreeBSD 操作系统)使用串口连接到另一个系统:

# cu -l /dev/cuauN

端口编号从零开始。这意味着COM1对应/dev/cuau0

可以从 Ports 中找到其他终端程序,例如comms/minicom

X 终端(X Terminal)

X终端是最复杂的终端系统。它们通常需要使用以太网来连接。 它们能显示任何Xorg应用程序。而不是被降级为纯文本应用程序。

本章不介绍 X 终端的安装、配置或使用。

26.3.1. 终端机设定

这节描述了您在一个终端上启用一个登录会话时, 需要在 FreeBSD 系统上进行的配置。 它假定系统识别终端所连接的串口,并且端子使用正确的线缆连接。

在 FreeBSD 中, init读取 /etc/ttys并在可用的终端上启动 getty进程。getty进程负责读取登录名并启动 login程序。FreeBSD 系统中允许登录的端口在 /etc/ttys中列出。例如, 第一个虚拟控制台, ttyv0, 在这个文件中有一个允许在控制台中登录的条目。这个文件还包含了其他虚拟控制台、串行端口和伪 tty 的条目。对于硬接线终端,串口的/dev条目中没有/dev部分。例如,/dev/ttyv0被列出为ttyv0

默认的/etc/ttys配置了对前四个串行端口的支持,即ttyu0 through ttyu3

ttyu0   "/usr/libexec/getty std.9600"   dialup  off secure
ttyu1   "/usr/libexec/getty std.9600"   dialup  off secure
ttyu2   "/usr/libexec/getty std.9600"   dialup  off secure
ttyu3   "/usr/libexec/getty std.9600"   dialup  off secure

当将终端连接到这些端口中的某一个时,请修改默认条目,以设置所需的速度和终端类型,调整设备状态为开启,如果需要,请修改端口的secure设置。如果终端连接到另一个端口,则为该端口添加一个条目。

例 26.1 “设定终端机项目”/etc/ttys中配置了两个终端。第一个条目配置了一个连接到COM2的Wyse-50。第二个条目配置了一台运行Procomm终端软件的旧计算机,模拟VT-100终端。该计算机连接到多端口串口卡上的第六个串口。

例 26.1. 设定终端机项目
ttyu11  "/usr/libexec/getty std.38400"2  wy503  on4  insecure5
ttyu5   "/usr/libexec/getty std.19200"  vt100  on insecure

1

第一个参数制定了串行终端的设备名。

2

The second field tells getty to initialize and open the line, set the line speed, prompt for a user name, and then execute the login program. The optional getty type configures characteristics on the terminal line, like bps rate and parity. The available getty types are listed in /etc/gettytab. In almost all cases, the getty types that start with std will work for hardwired terminals as these entries ignore parity. There is a std entry for each bps rate from 110 to 115200. Refer to gettytab(5) for more information.

设置 getty 类型时,请确保与终端使用的通信设置匹配。在此示例中,Wyse-50 不使用奇偶校验,以 38400 bps 连接。计算机不使用奇偶校验,以 19200 bps 连接。

3

第三个字段是终端的类型。对于拨号端口,通常使用 unknowndialup, 因为用户可以使用任何类型的终端或软件进行拨号。由于终端类型对硬接线终端来说不会改变,所以可以指定一个真正的终端类型,从/etc/termcap中选择一个真正的终端类型。在这个例子中,Wyse-50使用真正的终端类型,而运行Procomm的计算机被设置为模拟VT-100。

4

第四个字段指定是否启用端口若需在此端口上启用登入,必须将此字段设置为on

5

最后一个字段用于指定端口是否安全。将端口标记为安全意味着它受到足够的信任,可以允许root从该端口登录。不安全的端口不允许root登录。在不安全的端口上,用户必须使用从无特权帐户登录,然后使用su或类似机制来获取超级用户权限,如第 3.3.1.3 节 “超级账户”中所述。出于安全原因,建议将此设置更改为insecure


更改/etc/ttys后,向init进程发送 SIGHUP(挂断)信号,以强制其重新读取其配置文件:

# kill -HUP 1

因为init总是系统上第一个运行的进程,所以它的进程ID总是1

If everything is set up correctly, all cables are in place, and the terminals are powered up, a getty process should now be running on each terminal and login prompts should be available on each terminal.

26.3.2. 联机疑难排解

即使是最细心的人,在设置终端的时候也可能会出问题。以下是一些常见问题和解决办法。

If 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.

确保连接线牢固地连接到终端和 FreeBSD 计算机上。确保它是正确的电缆。

确保终端和 FreeBSD 在 bps速率和奇偶校验设置上达成一致。如果是视频显示终端, 请确认对比度和亮度控制已经打开。如果是打印终端, 请确保纸张和墨水供应充足。

使用ps来确保一个getty进程正在运行并为终端服务。例如,下面的列表显示了一个getty正在第二个串口上运行ttyu1,并且正在使用/etc/gettytab中的std.38400条目:

# ps -axww|grep ttyu
22189  d1  Is+    0:00.03 /usr/libexec/getty std.38400 ttyu1

如果getty没有运行,请确保在/etc/ttys中启用端口。记住,在修改了 /etc/ttys之后,要运行 kill -HUP 1

If the getty process is running but the terminal still does not display a login prompt, or if it displays a prompt but will not accept typed input, the terminal or cable may not support hardware handshaking. Try changing the entry in /etc/ttys from std.38400 to 3wire.38400, then run kill -HUP 1 after modifying /etc/ttys. The 3wire entry is similar to std, but ignores hardware handshaking. The baud rate may need to be reduced or software flow control enabled when using 3wire to prevent buffer overflows.

If 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 getty type is in use. If not, edit /etc/ttys and run kill -HUP 1.

如果出现字符双倍出现而且输入时没显示密码,切换终端,或虚拟终端软件,从半双工本地回显(local echo)切换为全双工

本文档和其它文档可从这里下载: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

如果对于FreeBSD有问题,请先阅读 文档,如不能解决再联系 <questions@FreeBSD.org>.

关于本文档的问题请发信联系 <doc@FreeBSD.org>.