Home -- Michael's Blog :: Just Do IT -- Manuals

20.3. 终端

Contributed by Sean Kelly.

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

20.3.1. 终端的用法和类型

期的UNIX®系统没有控制台。人们通过将终端连接到计算机的串口来登陆和使用程序。它很像用一个modem和一些终端软件来拨号进入一个远程的系统只执行文本的工作。

今天的PC已经可以使用高质量的图形了,但与今天的其他UNIX操作系统一样,建立一个登陆会话的能力仍然存在。通过使用一个终端连接到一个没有使用的串口,你就能登陆和运行任何文本程序或在X 视窗系统中运行一个 xterm 窗口程序。

对于商业用户,你可以配上任何终端连接到FreeBSD系统,然后把它们放在员工的桌面上。对于一个家庭用户,可以使用一台比较老的IBM PC或Macintosh运行一个终端连接到一台运行FreeBSD的高性能机器上。

对于FreeBSD,有三种终端:

下面一小节将描述每一种终端。

20.3.1.1. Dumb终端

Dumb终端需要专门的好几种硬件,让你通过串行线连接到计算机。它们被叫做``dumb'' 是因为它们只能够用来显示,发送和接收文本。你不能在它上面运行任何程序。

有好几百种dumb终端,包括Digital Equipment Corporation的VT-100和Wyse的WY-75。只有几种可以在FreeBSD上工作。一些高端的终端可以显示图形,但只有某些软件包可以使用这些高级特性。

Dumb终端被广泛用于那些不需要图形应用的工作中。

20.3.1.2. 充当终端的PC

如果一个 dumb 终端终端有足够的能力来显示,发送和接收文本,那任何个人计算机都可以作为一个dumb终端。你所需要的只是适当的线缆和一些终端模拟软件。

这样一个配置被广泛运用于家庭。例如,如果你的妻子忙于在你的FreeBSD系统控制台上工作,你也可以从一台低档的个人计算机登陆到FreeBSD系统执行一些文本的工作。

20.3.1.3. X 终端

X终端是最复杂的终端系统。它们通常需要使用以太网来连接。他们能显示任何X应用程序。

我们介绍X终端只是为了感兴趣。然而,这章不会涉及X终端的安装,配置或使用。

20.3.2. 配置

这节描述了你在一个终端上启用一个登陆会话,需要在FreeBSD系统上配置些什么。假设你已经配置好了内核来支持串行端口,你就可以连接了。

回想起第 12 章init进程依赖于系统启动时所有的处理控制和初始化。通过init来执行的一些任务将先读取/etc/ttys文件,然后在可用的终端上启用一个getty进程。getty进程可用来阅读一个登陆名和启动login程序。

然而,要为你的FreeBSD系统配置终端,你需要以root来执行下面的步骤:

  1. 如果它不在那儿,你需要为串行端口在/dev目录下添加一行记录到/etc/ttys。.

  2. 指定/usr/libexec/getty在端口上运行,然后从/etc/gettytab文件指定适当的getty类型。

  3. 指定默认的终端类型。

  4. 设置端口为``on''。

  5. 确定端口是否为``secure''。

  6. 迫使init 重新读取/etc/ttys文件。

作为可选的步骤,你可以通过在/etc/gettytab中建立一个记录,在第2步创建一个定制的getty类型来使用。这章不会介绍如何做。你可以看看gettytab(5)getty(8) 的联机手册了解更多信息。

20.3.2.1. 添加一个记录到/etc/ttys

/etc/ttys文件列出了你FreeBSD系统上允许登陆的所有端口。例如,第一个虚拟控制台ttyv0在这个文件中有一个记录。你可以使用这个记录登陆进控制台。这个文件也包含其他虚拟控制台的记录,串口,和伪ttys终端。对于一个硬连线的终端,只要列出串行端口的/dev记录而不需要/dev部分(例如,/dev/ttyv0可以被列为ttyv0)。

默认的FreeBSD安装包括一个支持最初四个串口ttyd0ttyd3/etc/ttys文件。如果你从那些端口中某一个使用终端,你不需要添加另一个记录。

例子 20-1. 添加终端记录到/etc/ttys

假设我们连接两个终端给系统:一个Wyse-50和一个老的运行Procomm终端软件模拟一个VT-100终端的286IBM PC。在/etc/ttys文件中的相应的记录是这样的:

ttyd1(1)  "/usr/libexec/getty std.38400"(2)  wy50(3)  on(4)  insecure(5)
ttyd5   "/usr/libexec/getty std.19200"  vt100  on  insecure
     
(1)
第一部分指定了终端指定文件的名称,它可以在/dev中找到。
(2)
第二部分是在这行执行的命令,通常是getty(8)getty初始化然后打开一行,设置速度,用户名的命令和执行登陆程序。

getty程序在它的命令行接收一个参数(可选的),getty类型。一个getty类型会在终端行描述一个特征,像bps rate和parity。getty程序从/etc/gettytab文件读取这些特征。

文件/etc/gettytab包含了许多老的和新的终端行记录。在很多例子中,启动文本std 的记录将用硬连线终端来工作。这些记录忽略了奇偶性。这是一个从110到115200 bit/s的std 记录。当然,你可以添加你自己的记录到这个文件。Gettytab的联机手册提供了更多的信息。

当在/etc/ttys中设置getty类型的时候,确信在终端上的通信设置匹配。在我们的例子中,Wyse-50不使用奇偶性,用38400 bit/s来连接。286 PC不使用奇偶性,用19200bit/s来连接。

(3)
第三部分是通常连接到那个tty行的终端类型。对于拨号端口,unknowndialup通常被用在这个地方。对于硬连线的终端,终端类型不会改变,所以你可以从termcap数据库文件中放置一个真正的终端类型。

在我们的例子中,Wyse-50使用真正的终端类型,而运行Procomm 的286 PC将被设置成在VT-100上的模拟。

(4)
如果端口被启用,可以指定第四个部分。在第二部分,把它放在这儿将执行初始化进程来启动程序getty。如果你在这部分拖延,将没有getty,在端口上因此就没有登陆。
(5)
最后部分被用来指定端口是否安全。标记一个安全的端口意味着你信任它允许用root帐户从那个端口登陆。不安全的端口不允许root登陆。在一个不安全的端口上,用户必须用无特权的帐户登陆,然后使用su或一个相似的机制来获得超级用户的权限。

20.3.2.2. 重新读取/etc/ttys来强制init

/etc/ttys文件做一个必要的修改后,你必须发送一个SIGHUP信号给初始化进程来迫使它重新读取配置文件,例如:

# kill -HUP 1

注: init 总是系统运行时的第一个进程,因此它总是PID 1。

如果能够正确设置,所有的线缆都是适当的,终端将可以启用了,然后一个getty进程将在每个终端运行,你将在你的终端上看到登陆命令行。

20.3.3. 你的连接可能出现的问题

即使你小心翼翼地注意细节,你仍然可能会在设置终端时出错。这儿有一个有关问题和解决办法的列表:

20.3.3.1. 没有登陆命令出现:

确定终端被嵌入和打开了。如果把一台个人计算机充当一个终端,确信终端模拟软件运行在正确的串口上。

确信线缆被稳固地连接在终端和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

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 allow you to type, your terminal or cable may not support hardware handshaking. Try changing the entry in /etc/ttys from std.38400 to 3wire.38400 remember to run kill -HUP 1 after modifying /etc/ttys). The 3wire entry is similar to std, but ignores hardware handshaking. You may need to reduce the baud rate or enable software flow control when using 3wire to prevent buffer overflows.

20.3.3.2. 出现一个“垃圾”而不是一个登陆命令行

确信终端和FreeBSD使用相同的bit/s传输率和奇偶校验设置。检查一下getty进程确信当前使用正确的getty类型。如果没有,编辑/etc/ttys然后运行kill -HUP 1

20.3.3.3. 当键入密码时,字符两个两个出现

将终端(或终端模拟软件)从``half duplex''或 ``local echo''换成``full duplex。''

Michael's Blog :: Just Do IT -- manuals