29.3.终端

终端提供了一种便捷且低成本的方式,用于在不直接接触计算机控制台或不在连接的网络上的情况下访问 FreeBSD 系统。本节介绍如何在 FreeBSD 中使用终端。

最初的 UNIX® 系统没有控制台。用户通过连接到计算机串行端口的终端登录并运行程序。

在几乎所有 UNIX® 类操作系统中,包括 FreeBSD,现在仍然可以通过串行端口建立登录会话。通过使用连接到未使用串行端口的终端,用户可以登录并运行任何通常在控制台或 xterm 窗口中运行的文本程序。

许多终端可以连接到 FreeBSD 系统。可以将一台旧的备用计算机用作终端,将其连接到运行 FreeBSD 的更强大计算机。这可以将原本单用户的计算机转变为一个强大的多用户系统。

FreeBSD 支持三种类型的终端:

终端提供了一种便捷且低成本的方式,用于在不直接接触计算机控制台或不在连接的网络上的情况下访问 FreeBSD 系统。本节介绍如何在 FreeBSD 中使用终端。

最初的 UNIX® 系统没有控制台。用户通过连接到计算机串行端口的终端登录并运行程序。

在几乎所有 UNIX® 类操作系统中,包括 FreeBSD,现在仍然可以通过串行端口建立登录会话。通过使用连接到未使用串行端口的终端,用户可以登录并运行任何通常在控制台或 xterm 窗口中运行的文本程序。

许多终端可以连接到 FreeBSD 系统。可以将一台旧的备用计算机用作终端,将其连接到运行 FreeBSD 的更强大计算机。这可以将原本单用户的计算机转变为一个强大的多用户系统。

FreeBSD 支持三种类型的终端:

哑终端

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

有成百上千种由许多制造商生产的哑终端,几乎任何类型的哑终端都能与 FreeBSD 配合使用。一些高端终端甚至可以显示图形,但只有某些软件包能够利用这些高级功能。

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

计算机充当终端 由于哑终端仅具有足够的能力来显示、发送和接收文本,任何备用计算机都可以充当哑终端。所需的只是正确的电缆和一些 终端仿真 软件来运行在计算机上。

这种配置可能很有用。例如,如果一个用户正在忙于在 FreeBSD 系统的控制台上工作,另一个用户可以同时从连接到 FreeBSD 系统的性能较低的个人计算机上进行文本-only 工作。

在 FreeBSD 的基本系统中,至少有两个实用程序可以通过串行连接进行工作:cu(1)tip(1)

例如,要从运行 FreeBSD 的客户端系统连接到另一个系统的串行连接:

# cu -l /dev/cuauN

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

可以通过 Ports 获取额外的程序,例如 comms/minicom

X 终端 X 终端是最复杂的终端类型。它们通常通过像以太网这样的网络连接,而不是通过串行端口。它们不仅仅局限于文本应用程序,还可以显示任何 Xorg 应用程序。

本章不包括 X 终端的设置、配置或使用。

29.3.1. 终端配置

本节描述了如何配置 FreeBSD 系统,以在串行终端上启用登录会话。它假定系统已识别连接终端的串行端口,并且终端已用正确的电缆连接。

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

默认的 /etc/ttys 配置支持前四个串行端口 ttyu0ttyu3

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

当将终端连接到这些端口之一时,需要修改默认条目,设置所需的速率和终端类型,将设备设置为 on,并根据需要更改端口的 secure 设置。如果终端连接到其他端口,则需要为该端口添加一个条目。

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

示例 1. 配置终端条目

ttyu1  "/usr/libexec/getty std.38400"  wy50   on insecure
ttyu5   "/usr/libexec/getty std.19200"  vt100  on insecure

第一个字段指定串行终端的设备名称。

第二个字段告诉 getty 初始化并打开线路,设置线路速度,提示输入用户名,然后执行 login 程序。可选的 getty 类型 配置终端线路的特性,如波特率和奇偶校验。可用的 getty 类型列在 /etc/gettytab 中。在几乎所有情况下,开始于 std 的 getty 类型都能用于硬接线终端,因为这些条目忽略了奇偶校验。对于从 110 到 115200 的每个波特率,都有一个 std 条目。有关更多信息,请参考 gettytab(5)。在设置 getty 类型时,请确保与终端使用的通信设置匹配。例如,Wyse-50 使用无奇偶校验,并以 38400 bps 连接。该计算机使用无奇偶校验,并以 19200 bps 连接。

第三个字段是终端的类型。对于拨号端口,通常使用 unknowndialup,因为用户可能使用任何类型的终端或软件进行拨号。由于硬接线终端的终端类型不会改变,因此可以指定 /etc/termcap 中的实际终端类型。对于本示例,Wyse-50 使用实际的终端类型,而运行 Procomm 的计算机则设置为模拟 VT-100 终端。

第四个字段指定是否启用端口。要启用该端口上的登录,必须将此字段设置为 on

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

在对 /etc/ttys 进行任何更改后,发送 SIGHUP(挂起)信号到 init 进程,以强制其重新读取配置文件:

# kill -HUP 1

由于 init 是系统上运行的第一个进程,它的进程 ID 始终为 1

如果一切设置正确,所有电缆连接到位,终端已通电,则每个终端上应该都有一个 getty 进程在运行,并且每个终端上应该出现登录提示。

29.3.2. 排除连接故障

即使是最细致的配置,也可能在设置终端时出现问题。以下是一些常见症状以及一些建议的解决方法。

如果没有显示登录提示,请确保终端已插入并通电。如果是个人计算机充当终端,请确保它在正确的串行端口上运行终端仿真软件。

确保电缆已牢固连接到终端和 FreeBSD 计算机。确保使用的是正确类型的电缆。

确保终端和 FreeBSD 在波特率和奇偶校验设置上达成一致。对于视频显示终端,确保对比度和亮度控制已调高。如果是打印终端,请确保纸张和墨水充足。

使用 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

如果 getty 进程正在运行,但终端仍未显示登录提示,或者显示了提示但不接受键入输入,终端或电缆可能不支持硬件握手。尝试将 /etc/ttys 中的条目从 std.38400 更改为 3wire.38400,然后在修改 /etc/ttys 后运行 kill -HUP 13wire 条目类似于 std,但忽略硬件握手。在使用 3wire 时,可能还需要降低波特率或启用软件流控制,以防止缓冲区溢出。

如果出现乱码而不是登录提示,请确保终端和 FreeBSD 在波特率和奇偶校验设置上达成一致。检查 getty 进程,确保使用了正确的 getty 类型。如果不是,请编辑 /etc/ttys 并运行 kill -HUP 1

如果字符出现重复,且输入时密码会显示,请将终端或终端仿真软件从“半双工”或“本地回显”模式切换到“全双工”模式。

最后更新于