分享
 
 
 

Linux网络管理员手册(4)

王朝system·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

第四章 设置串行硬件

有这样的传言,在网络世界中有这样一些人,他们只有一台PC机并且钱去花在一根T1-互连网

连接上。然而,为了进行他们的新闻(news)和邮件(mail)的日常工作,他们说是用公共

电话网络,依靠SLIP连接、UUCP网络、和[电子]公告牌系统(bulletin board systems BBS

’s)来施行的。

本章打算帮助所有那些依靠modem来维持他们的连接的人。然而,有许多细节本章将不会加以

讨论,例如,如何为拨入配置你的modem。所有这些话题都会包括在Greg Hankins的即将发表

的HOWTO系列中,[1] 它将定期地投递到comp.os.linux.announce上。

4.1 Modem连接的通信软件

Linux有许多通信软件包,其中许多是终端程序(terminal programs),用以让一个用户拨接

到另一台计算机上,就好象她正坐在一个普通的终端面前一样。传统的拨号终端程序是kerm

it。然而,这个软件有些简单。现已有许多支持电话号码薄的、含有拨号和登录远程计算机

系统脚本语言等等的更适用的程序。这种软件之一是minicom,它与先前DOS用户可能很习惯

的某些终端程序相近似。也有一些基于X的通信软件包,例如,seyon。

同样,也有许多基于Linux的BBS软件包,用于那些想运行[电子]公告牌系统的人。这些软件

包有些可以在sunsite.unc.edu的/pub/Linux/system/Network中找到。

除终端程序以外,还有一些非交互式地使用串行连接的软件,用于你的计算机收发数据。这

种技术的优点在于能够比某些需要在线阅读邮件的mailbox程序和查找有趣文章而浏览公告牌

所需的时间,花费更少的时间来自动下载几十KB的数据。另一方面来讲,因为你常常得到的

一些无用信息的装入,需要更多的磁盘存储空间。

这类通信软件的摘要[体现]是UUCP。这是从一台主机拷贝文件到另一台、在远程主机上执行

程序等的一个程序组。它常用于在私人网络中传送mail或news。能运行在Linux下的Ian Tay

lor的UUCP软件包将在后面章节中进行讨论。其它非交互式的通信软件是,例如,用于闻名于

Fidonet。也有象ifmail这样的Fidonet应用程序的端口。

SLIP,串行线路互连网协议,相对来说有些属于中间类型的,它允许交互式的或非交互式的

使用。许多人使用SLIP拨号上到他们的校园网络或一些其他的公共SLIP网络服务器上来运行

FTP会话等等。然而SLIP同样也能用于网到网的固定的和半固定的连接,尽管这实际上只对使

用ISDN的才感兴趣。

4.2 串行设备概述

UNIX内核为访问串行设备所提供的设备[驱动程序]典型地称为ttys。这是Teletype ?的缩写

,它曾经是UNIX早期主要终端生产厂商之一。现今这个术语用于指任何字符型数据终端。贯

穿本章,我们都将使用该术语专指内核设备[驱动程序]。

区别三种类型的ttys:(虚拟)控制台、伪终端(类似于一个双向的管道,用于象X11这样的

应用程序)、以及串行设备。后一种也称作ttys,因为它允许在一个串行连接上进行交互式

的会话操作;而不管它是固定布线连接的终端,还是通过电话线的一个远程主机。

Ttys有许多可配置的参数,这些参数可以使用系统调用ioctl(2)来设置。这些参数中的许多

只对串行设备有用,因为它们需要有非常大的灵活性来处理各种类型的连接。

最突出的线路参数是线路速率和奇偶性。但是同样还有大小写字符的转换标志、回车转换成

换行等等。tty驱动程序也可以支持各种线路规范(line disciplines),它使得设备驱动程

序的表现完全不同。例如,Linux的SLIP驱动程序是按照特殊的线路规范实现的。

关于如何测试线路速度有些含糊不清。正确的术语是比特率,这是与用每秒比特数(或简写

作bps)测量的线路传输速度相关的。有时你听会到人们以波特率(Baud rate)来谈到它,

这并不是很正确的。然而,这两个术语是不可互换的。波特率指的是某些串行设备的物理特

性,也即发出脉冲的时钟速率。比特率则更恰当地表示了两点之间的一个已知连接的当前状

态,也即每秒钟传输的平均比特数。知道这两个值通常是不同的很重要,因为大多数设备在

每个电脉冲中起码多编码了一个比特。

4.3 访问串行设备

正象UNIX系统中的所有设备一样,串行端口是通过与设备相关的位于/dev目录中的特定文件

进行访问的。有两种与串行驱动程序相关的设备文件,而且对于每一个端口,都有这两种的

一个设备文件。根据设备所访问的文件,设备的表现将有所不同。

第一种用于当端口用作拨入时;它有一个主号码4,并且文件被命名为ttyS0、ttyS1等等。第

二种用于当端口用作拨出时;文件被称为cua0等等,并且有个主号码5。

次号码对两种类型是同样的。如果你在端口COM1到COM4中的一个上面连了个modem的话,那么

它的次号码就是COM端口号加63。如果你的设置与此不同,例如,当使用一块支持多串行线的

板子时,请参阅Serial Howto。

假设你的modem在COM2上。这样,它的次号码将是65,对于是拨出时主号码将是5。将会有一

个设备文件cua1有这些号码。对/dev目录中的串行ttys进行列表。第五列和第六列应该分别

显示主号码和次号码:

$ ls -l /dev/cua*

crw-rw-rw- 1 root root 5, 64 Nov 30 19:31 /dev/cua0

crw-rw-rw- 1 root root 5, 65 Nov 30 22:08 /dev/cua1

crw-rw-rw- 1 root root 5, 66 Oct 28 11:56 /dev/cua2

crw-rw-rw- 1 root root 5, 67 Mar 19 1992 /dev/cua3

如果没有这样的设备,你就必须创建一个:作为超级用户,键入

# mknod ?m 666 /dev/cua1 c 5 65

#chown root.root /dev/cua1

有些人建议做一个符号联接/dev/modem到你的modem设备,这样临时用户不需要记住这个不太

直觉的cua1。然而,你不能在一个程序中使用modem名称,而在另一个程序中使用实际的设备

文件名。这是因为这些程序使用所谓的锁定文件(lock file)来通知该设备已被占用。按照

惯例,cua1的锁定文件,例如,是LCK..cua1。给同一个端口使用不同的设备文件意味着程序

将不能识别出其它的锁定文件,并且大家同时使用这个设备。结果,两个应用程序都完全不

能工作。

4.4 串行硬件

目前Linux支持许多种类型的使用RS-232标准的串行板卡。RS-232是目前PC世界串行通信中最

通用的标准了。它使用了一些电路来传输单个比特数据和进行同步。另外一些连线可以用于

载波信号(用于modems)以及握手信号。

尽管硬件握手信号仅是供选用的,但是很有用的。它使得两个站点的任何一方都能通知对方

它是否已准备好接收更多的数据,或者另一个站点是否将要暂停直到接收方已经处理完接收

到的数据。用于此目的的连线分别称为“Clear to Send”(CTS)和“Ready to Send”(R

TS),它说明了硬件握手信号的俗称,也即“RTS/CTS”。

在PC机中,RS-232接口通常是由UART芯片驱动的,该芯片源自于国家半导体公司的16450芯片

,或它的一个新版本NSC16550A。[2] 有些牌子(多数显著的内置modems装配有Rockwell芯片

集)也使用完全不同的芯片集,这些芯片被编程成好象它们就是16550芯片。

16450与16550的主要不同之处在于后者有一个16字节的FIFO缓冲区,而前者只有1个字节的缓

冲区。这使得16450适合于速度最高为9600 Baud,而更高的速度需要一个与16550兼容的芯片

。除了这些芯片以外,Linux还支持8250芯片,该芯片是PC-AT的原始芯片。

在缺省配置情况下,内核检查四个标准的串行端口COM1至COM4。次号码64到67将被分配给这

些端口,正如上面所述。

如果你要正确地配置你的串行端口,你应该安装Ted Tso的setserial命令以及rc.serial脚本

。这个脚本应该在系统引导启动时从/etc/rc中调用。它使用setserial配置内核的串行设备

。一个典型的rc.serial脚本看上去象这样:

# /etc/rc.serial - serial line configuration script.

#

# Do wild interrupt detection

/sbin/setserial -W /dev/cua*

# Configure serial devices

/sbin/setserial /dev/cua0 auto irq skip test autoconfig

/sbin/setserial /dev/cua1 auto irq skip test autoconfig

/sbin/setserial /dev/cua2 auto irq skip test autoconfig

/sbin/setserial /dev/cua3 auto irq skip test autoconfig

# Display serial device configuration

/sbin/setserial -bg /dev/cua*

请参阅setserial附带的文档对其有关参数的解释。

如果你的串行卡没有被检测出来,或者setserial ?bg命令显示出设置不正确,你必须通过

明确地给出正确的参数值来进行强行的配置。报导称配备有Rockwell芯片的内置modems的用

户会碰到这个问题。例如,如果UART芯片被检测出是NSC16450,而实际上它是NSC16550时,

你就必须将被错置端口的配置命令改成

/sbin/setserial /dev/cua1 auto irq skip test autoconfig

uart 16550

对COM端口、基地址、以及IRQ的设置有相似的选择操作。请参阅setserial的手册页。

如果你的modem支持硬件握手的话,你必须确信激活了它。令人感到奇怪的是,多数通信程序

缺省地并没有试图激活它;因而你必须手工地设置它。这最好使用stty命令在rc.serial脚本

中进行操作:

$ stty crtscts

要检查硬件握手是否起作用,使用

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有