BBS水木清华站∶精华区

发信人: asdchen@pc2.hinet.net@Interaction (asdchen), 信区: Linux 
标  题: LRG.LDTP.HOWTO.002 
发信站: 中国物理学会交互作用站 (Fri Sep 29 00:22:24 1995) 
转信站: Interaction 
 
原始文件:The Linux Serial HOWTO 
                    by Greg Hankins, greg.hankins@cc.gatech.edu 
                    v1.8a, 5 June 1995 
档案叙述:串列埠使用说明 
文件编号:LRG.LDTP.HOWTO.002 
翻译日期:1995/09/28 
翻译维护:asdchen@pc2.hinet.net                                  O 
---------------------------------------------------------------X--- 
                                                                 O 
  这份文件叙述如何在 Linux 机器上设定串列通讯设备。 
 
 
 
  1.  简介 
 
  这是 Linux Serial HOWTO 。包含关於如何在 Linux  下设定数据机以及终 
  端机的所有细节,还有一些使用串列的诀窍,以及故障排除的资料。 
 
 
  1.1.  版权 
 
  这份 Linux Serial-HOWTO 的版权是属於 Greg Hankins(is copyright (C) 
  1993 - 1995) 的, Linux HOWTO 文件允许以任何实体或电子媒体全部或是 
  部分地再版以及发行,只要这份版权声明保留在所有的拷贝上。商业发行是 
  允许并且鼓励的;但是作者希望这类的发行要通知他。 
 
  所有的翻译,衍用工作,或是搜集组织任何 Linux HOWTO 文件的工作必须 
  在这份版权声明下进行。也就是,你不能衍用 HOWTO 的内容却在发行时作 
  附加的限制。在某些特定条件下这些规则可能允许一些例外情况; 请以下 
  面所给的地址与 Linux HOWTO 的协调者联系。 
 
  简单的说,我们希望促进这个资讯以越多管道流通越好。然而,我们也希望 
  在 HOWTO 文件上保留版权,而且希望任何重新发行 HOWTOs  的计画都能够 
  知会我们。 
 
  如果你有问题,请经由电子邮件联络 Linux HOWTO 协调人 Greg Hankins 
  在 gregh@sunsite.unc.edu,或在 +1 404 853 9989。 
 
 
  The Linux Serial HOWTO is copyright (C) 1993 - 1995 by Greg Hankins. 
  Linux HOWTO documents may be reproduced and distributed in whole or 
in 
  part, in any medium physical or electronic, as long as this 
copyright 
  notice is retained on all copies. Commercial redistribution is 
allowed 
  and encouraged; however, the author would like to be notified of any 
  such distributions. 
 
  All translations, derivative works, or aggregate works incorporating 
  any Linux HOWTO documents must be covered under this copyright 
notice. 
  That is, you may not produce a derivative work from a HOWTO and 
impose 
  additional restrictions on its distribution. Exceptions to these 
rules 
  may be granted under certain conditions; please contact the Linux 
  HOWTO coordinator at the address given below. 
 
  In short, we wish to promote dissemination of this information 
through 
  as many channels as possible. However, we do wish to retain 
copyright 
  on the HOWTO documents, and would like to be notified of any plans 
to 
  redistribute the HOWTOs. 
 
  If you have questions, please contact Greg Hankins, the Linux HOWTO 
  coordinator, at 
  gregh@sunsite.unc.edu via email, or at +1 404 853 9989. 
 
 
  1.2.  其它的资讯来源 
 
  。 agetty(8), getty(1m), gettydefs(5), init(1), login(1), 
     mgetty(8), setserial(8) 的线上手册(man pages) 
 
  。 你的数据机手册 
 
  。 UUCP HOWTO:设定 UUCP 的资讯 
 
  。 Printing HOWTO:设定串列印表机的部分 
 
  。 NET-2 HOWTO:所有关於网路的资讯,包含 SLIP, CSLOP 以及 PPP 
 
  。 BUPS HOWTO:设定连接到你串列埠的不断电系统(UPS) 
 
  。 Term HOWTO:任何你想知道有关 term 程式的事情 
 
  。 USENET 新闻讨论群: 
 
 
  comp.os.linux.advocacy            Benefits of Linux compared to 
other operating systems. 
  comp.os.linux.announce            Announcements important to the 
Linux community. 
  comp.os.linux.answers             FAQs, How-To's, READMEs, etc. 
about Linux. 
  comp.os.linux.development.apps    Writing Linux applications, 
porting to Linux. 
  comp.os.linux.development.system  Linux kernels, device drivers, 
modules. 
  comp.os.linux.hardware            Hardware compatibility with the 
Linux operating system. 
  comp.os.linux.misc                Linux-specific topics not covered 
by other groups. 
  comp.os.linux.networking          Networking and communications 
under Linux. 
  comp.os.linux.setup               Linux installation and system 
administration. 
  comp.os.linux.x                   Linux X Window System servers, 
clients, libs and fonts. 
 
 
  。 Linux serial 邮递列表。加入的方法是寄送一封电子邮件到 
     majordomo@vger.rutgers.edu,  其中的 
 
     讯息内容是 ``subscribe linux-serial''  。如果你寄送的讯息内容是 
     ``help'' 的话,你将会得到辅助讯息。 
 
 
  1.3.  这份文件的最新版本 
 
  新版的 Serial-HOWTO 会放到 
 
  sunsite.unc.edu 
  <ftp://sunsite.unc.edu::/pub/Linux/docs/HOWTO/Serial- HOWTO>  以及 
  对映(mirror)节点。有一些其它像是  Postscript  以及 dvi  格式的版本 
  放在 other-formats 目录里。这一份 Serial HOWTO 
  (http://sunsite.unc.edu/mdw/HOWTO/Serial-HOWTO.html) 也能由 mosaic 
  一类的 WWW 客户程式取得。它也会定期的贴到 comp.os.linux.answers 。 
 
  如果你无法使用 FTP 的话,你可以经用电子邮件取得 Linux 的辅助档案。 
  Bill Riemers 在他的帐号上执行一个邮件处理程式(mail handler) 。寄送 
  一封以 ``help'' 为标题的电子邮件到 bcr@physics.purdue.edu 以便获取 
  更多资讯以及一个索引档。 
 
 
  1.4.  回馈 
 
  请将任何的问题,评论,建议或补充内容寄送给我。我永远渴望听到你对这 
  份 HOWTO  的想法。我也总是小心地注意改进!确实地告诉我你有什麽不懂 
  的地方,或者是有什麽地方可以写得更清楚。你可以经由这个电子邮件位址 
  gregh@cc.gatech.edu 与我连系。也可以藉由迟缓的传统信件: 
 
 
  Greg Hankins 
  College of Computing 
  801 Atlantic Drive 
  Atlanta, GA 30332-0280 
 
 
  以及经由全球资讯网到我的 home page 来 
  <http://www.cc.gatech.edu/staff/h/Greg.Hankins/> 
 
  撰写时请将 Serial HOWTO 文件的版本编号含入,这份是 1.8a 版。 
 
 
  1.5.  不予负责 
 
  你的 milage 可能很不一样。这里的回答可能无法在所有的系统及各种设定 
  的组合下运作。 
 
 
 
  2.  已经支援的串列硬体 
 
  以知 Linux 可以与下列的串列硬体配合运作。 
 
 
  。 标准 PC 串列卡 (COM1 - COM4) 
 
  。 标准 PC 内接式数据机 (COM1 - COM4) 
 
  。 Quickpath Systems Port-Folio 550e (allows IRQs of 3, 4, 5, 9, 
     10, 11, 12, and 15) 
 
 
 2.1.  多埠串列卡(附 16450/16550A 通用非同步接收转换器(UART) 晶片) 
 
 
  。 AST FourPort and clones (4 port) 
 
  。 Accent Async-4 (4 port) 
 
  。 Arnet Multiport-8 (8 port) 
 
  。 Bell Technologies HUB6 (6 port) 
 
  。 Boca BB-1004 (4 port), BB-1008 (8 port), BB-2016 (16 port) 
 
  。 Boca IOAT66 (6 port) 
 
  。 Boca 2by4 (4S/2P) 
 
  。 Computone ValuePort V4-ISA (AST FourPort compatible) 
 
  。 PC-COMM (4 port) 
 
  。 STB-4COM (4 port) 
 
  。 Twincom ACI/550 
 
  。 Usenet Serial Board II (4 port) 
 
 
  一般来说, Linux 能够支援所有使用 8250, 16450, 16550, 16550A(或与 
  其相容)UART 晶片的串列卡,或者是能够摸拟上列 UARTs 之一的内接式数 
  据机。 
 
  要特别注意 BB-1004 以及 BB-1008  ,它们并不支援 DCD 及 R1 线路,因 
  而无法让接受拨接(dialin)的数据机使用,它们在其它用途上则表现正常。 
 
 
  2.2.  智慧型多埠串列卡 
 
 
  。 Comtrol RocketPort (36Mhz ASIC - 4, 8, 16 or 32 port) (contact 
     info@comtrol.com or Comtrol's Home Page <http://www.comtrol.com>. 
     Driver location: tsx-11.mit.edu/pub/linux/packages/comtrol) 
 
  。 Computone IntelliPort II (16Mhz 80186 - 4, 8, or 16 port) 
Computone 
     IntelliPort II EXpandable (20Mhz 80186 - modular 16 - 64 port) 
     (pre-ALPHA driver, contact Michael H. Warfield, 
     mhw@wittsend.atl.ga.us) 
 
  。 Cyclades Cyclom 8Y (8 port), and 16Y (16 port) (Cirrus Logic 
     CD-1400 RISC UARTs) (contact cyclades@netcom.com) 
 
  。 DigiBoard PC/Xe (12.5MHz 80186 processor - 2, 4, 8, or 16 port), 
     and PC/Xi (12.5MHz 80186 processor - 8, or 16 port) (contact Troy 
     De Jongh, troyd@digibd.com.  Driver location: 
     ftp.digibd.com:/digiline/drivers/linux) 
 
  。 Digiboard COM/Xi (10MHz 80188 processor - 4 or 8 port) 
     (pre-ALPHA driver contact Simon Park, si@wimpol.demon.co.uk) 
 
  。 Hayes ESP8 (8 port) 
     (pre-ALPHA driver, contact Dennis Boylan, dennis@lan.com) 
 
  。 Omega COMM-8 (8 port) 
     (contact Vance Petree, vpetree@infi.net) 
 
  o  Specialix SIO - (modular, 4 - 32 port) 
     (ALPHA driver, contact Simon Allen, 
simonallen@cix.compulink.co.uk) 
 
  o  Stallion EasyIO-4 (4 port), EasyIO-8 (8 port), and Stallion 
     EasyConnection (modular, 8 - 32 port) (Cirrus Logic CD-1400 RISC 
     UARTs) (contact Greg Ungerer, gerg@stallion.oz.au) 
 
 
  其中 Cyclades, DigiBoard, Stallion 以及 Specialix 的驱动程式可以在 
  sunsite.unc.edu:/pub/Linux/kernel/patches/serial  以及对映的节点上 
  找到。 
 
 
 
  3.  串列埠的名称是什麽? 
 
  有 4 个串列设备对应到 COM1 - COM4 : 
 
 
       /dev/cua0, /dev/ttyS0 (COM1) address 0x3f8 IRQ 4 
       /dev/cua1, /dev/ttyS1 (COM2) address 0x2f8 IRQ 3 
       /dev/cua2, /dev/ttyS2 (COM3) address 0x3e8 IRQ 4 
       /dev/cua3, /dev/ttyS3 (COM4) address 0x2e8 IRQ 3 
 
 
  那些 /dev/ttySN  设备是给进来的连线(incoming connections) 所使用而 
  /dev/cuaN  设备则是给出去的连线使用(outgoing connections) 的。N 是 
  串列埠号码。在这份文件中,我是以 ttyS0 参照 COM1 ,ttyS1 参照 COM2 
  而以 ttyS2 参照 COM3 ,ttyS3 参照 COM4 。如果我参照到 /dev  里面的 
  特别设备,我一定会在前面加上 /dev 以避免造成你的困惑。 
 
  某些安装方式会建立两个额外的设备,给你数据机使用的 /dev/modem 以 
  及给你滑鼠使用的 /dev/mouse 。它们都是链结到你在安装时所指定适当 
  /dev/cuaN 设备的符号链结(除非你用的是汇流排滑鼠(bus mouse) ,那 
  麽 /dev/mouse 将会指到汇流排滑鼠这个设备)。 
 
  已经有些关於使用 /dev/mouse 以及 /dev/modem 优缺点的讨论。我强烈地 
  反对使用这些链结,如果你打算用你的数据机接受拨接的话,要是你使用了 
  /dev/modem 那麽你将会因为锁定档案(lock files) 无法正确运作而遭遇到 
  困难。如果你喜欢它们的话就用吧,但是要确定它们指向正确的设备。 
 
 
  3.1.  在 /dev 里的串列设备其主要和次要号码 
 
 
       /dev/ttyS0 major 4, minor 64    /dev/cua0 major 5, minor 64 
       /dev/ttyS1 major 4, minor 65    /dev/cua1 major 5, minor 65 
       /dev/ttyS2 major 4, minor 66    /dev/cua2 major 5, minor 66 
       /dev/ttyS3 major 4, minor 67    /dev/cua3 major 5, minor 67 
 
 
    要注意到所有的发行套件都应该已经正确地建立了这些设备。 
 
 
  3.1.1.  在 /dev 下建立设备 
 
  如果你没有其中的一个设备,你必须自己用 mknod 指令建立它。 
 
  □例,假定你需要建立 ttyS0 设备: 
 
 
       linux# mknod -m 666 /dev/cua0 c 5 64 
       linux# mknod -m 666 /dev/ttyS0 c 4 64 
 
 
  你也可以取得 MAKEDEV 这个指令稿,一般 FTP 站上都会有。这简化了设备 
  的建立。例如,如果你需要建立 ttyS0 设备则应该输入: 
 
 
       linux# cd /dev 
       linux# MAKEDEV ttyS0 
 
  这将会处理关於连线进来以及连线出去的设备之建立。 
 
 
  3.1.2.  多埠板的注意事项 
 
  你的多埠板所使用的设备视你使用那一种多埠板而定。这些细节详细列在随 
  附於 setserial 程式的 rc.serial 里面。你可能会需要建立这些设备。无 
  论是用 mknod 指令或是取得 MAKEDEV 指令稿都可以。多埠板所用设备是以 
  加上 ``64 + 埠号'' 来建立的。所以,如果你想为 ttyS17  建立设备,你 
  应该输入: 
 
 
       linux# mknod -m 666 /dev/cua17 c 5 81 
       linux# mknod -m 666 /dev/ttyS17 c 4 81 
 
 
  要注意到 ''64 + 17 = 81'' 。使用 MAKEDEV 指令稿的话,你应该输入: 
 
 
       linux# cd /dev 
       linux# MAKEDEV ttyS17 
 
 
 
  4.  什麽是 getty? 
 
  getty 是在你签入 Unix  机器的时候处理签入程序的一支程式。有 3 种经 
  常配合 Linux 使用的版本:agetty, getty_ps 以及 mgetty 。 
 
 
  4.1.  关於 getty-ps 
 
  这个 getty  版本是由 Paul Sutcliffe Jr., paul@devon.lns.pa.us 所撰 
  写的。目前则是由 Kris Gleason, gleasokr@boukder.colorado.edu  来维 
  护它。最新的版本是 2.0.7e 并且相容於任何旧的版本。大部分 Linux  安 
  装套件都有 getty_ps  套件并且会安装成 /sbin/getty 。 
 
  这个 getty_ps 套件包含两个 getties 。其中的 getty 是由主控台,以及 
  终端机设备所使用 - 而 uugetty 则是由数据机所使用的。因为我本身是使 
  用这个版本的 getty  ,所以在这份 HOWTO 文件中我将会著重於 getty-ps 
  套件。 
 
 
  4.2.  关於 mgetty 
 
  mgetty 是一个由 Gert Doering 所撰写的 getty 版本。它除了能够允许签 
  入之外, mgetty 也透过随附的 sendfax 程式提供 class 2 的传真支援。 
  mgetty+sendfax 0.22 是这个套件的最新版本。这套 mgetty 的文件写得相 
  当地好,因而不需要再补充什麽。请参考它的安装说明。 
 
 
  4.3.  关於 agetty 
 
  agetty 是第三种 getty 变型。是由 W.Z. Venema,wietse@wzv.win.tue.nl 
  所创作的。它是 getty 的一个简单实作版本。 
 
 
 
  5.  什麽是 setserial? 
 
  setserial 是一支可以让你查看并修改串列设备各种属性的程式,包括它们 
  所使用的埠位址,中断,以及其它串列埠选项。刚开始是由  Rick Sladkey 
  所撰写,然後由目前维护它的 Ted T'so tytso@mit.edu 大大地修改过。最 
  新的的版本是 2.10 版,而且可以在 Linux FTP  站上找到。你可以藉由执 
  行不加参数的 setserial 来获取版本讯息。 
 
  在你的  Linux 系统启动时,只有 ttyS{0-3} 会以预设的 IRQ4 以及 3 来 
  进行配置。所以,如果你有任何由其它界面卡提供的串列埠或是 ttyS{0-3} 
  使用非标准的硬体中断(IRQ)的话, 你必须用这支程式来配置这些串列埠。 
  要知道所有的选项请参考线上手册。 
 
 
 
  6.  我怎麽用数据机拨号出去 
 
 
  6.1.  硬体需求 
 
  首先,要确定你拥有正确的连接线。你的数据机需要一条直接的 (straight 
  through) 连接线,没有任何跳线 (no pins crossed) 。任何一家电脑商店 
  都有。要确定接头的形式是对的。如果你使用的是 DB25 串列埠,它应该是 
  公的 DB25 接头。把你的数据机接到其中一个串列埠上。如果你需要关於这 
  个动作的辅助说明请参考你的数据机手册。 
 
 
  6.1.1.  内接式数据机注意事项 
 
  对於内接式数据机而言,你不需要连接线。内接式数据机不需要串列埠,它 
  自己有内建一个。你只要配置一个没有被使用的硬体中断给它,并且配置该 
  埠的输出入位址。如果你卡在某个问题上请参考你的数据机手册。同样,如 
  如果你需要关於选择中断以及位址上的帮助,参阅”我可不可以使用两个以 
  上的串列设备”该节。 
 
  由於 IBM 所犯的一点愚蠢,如果你想要将你的内接式数据机设在 ttyS3 的 
  话可能会遭遇一些问题。如果 Linux 没有侦测到你设在 ttyS3 上的内接式 
  数据机,你可以使用 setserial  程式来设定然後数据机将会正常运作。设 
  在 ttyS{0-2} 上的内接式数据机在侦测上应该不会有任何问题。 
 
 
  6.2.  与你的数据机交谈 
 
  在你使用复杂的通讯程式之前先以 kermit 或其它简单的通讯程式来测试这 
  些设定。(因为版权的关系, kermit 并没有随著商业发行套件一起发行。 
  你可以从 sunsite.unc.edu:/pub/Linux/apps/comm 以及对映节点上找到最 
  新的 kermit 版本。)例如,要是你的数据机设在 ttyS3  上,而且可以接 
  受 38400 bps 的话,你可以这样做: 
 
 
  linux# kermit 
  C-Kermit 5A(188), 23 Nov 92, POSIX 
  Type ? or HELP for help 
  C-Kermit>set line /dev/cua3 
  C-Kermit>set speed 38400 
  /dev/cua3, 38400 bps 
  C-Kermit>c 
  Connecting to /dev/cua3, speed 38400. 
  The escape character is Ctrl-\ (ASCII 28, FS) 
  Type the escape character followed by C to get back, 
  or followed by ? to see other options. 
  AT 
  OK 
  <ctrl>-\-C 
  (Back at linux) 
  C-Kermit>quit 
  linux# 
 
 
  如果你的数据机对 AT 指令群有回应,那麽你可以假定你的数据机在 Linux 
  这一端能正确运作。试著拨给另一台数据机。如果你不喜欢 kermit 的话, 
  试试看那些更进步的通讯软体其中一套。如果你需要一些指引,查阅有关通 
  讯软体 `` Communication programs'' 该节。 
 
  当你用你的数据机拨号出去时,将你的数据机设到它所能支援的最高速度。 
  因为并没有名为 57600 或是 115200 bps 的速度,你必须用 serserial 程 
  式来将你的串列埠设到更高的速度。关於要怎麽设定参阅”我要怎麽将我的 
  串列埠设定为更高速度″该节。然後在通讯程式里将速度设到 38400 bps。 
 
 
  6.3.  用来拨号出去的数据机配置 
 
  只要拨号出去的话,你可以任意以你想要的方式配置你的数据机。如果你计 
  画用你的数据机来接受拨接,那麽你必须将你的数据机配置成与你想要执行 
  的 getty 在相同速度设定下。所以,如果你想要在 38400 bps 的速度下执 
  行 getty 的话,在配置你数据机的时候将速度设成 38400 bps 。这样做是 
  为了避免你的电脑与数据机之间的速度无法配合。 
 
  我喜欢看到结果回应(result code) ,所以我设 Q0 - 这会回报结果回应。 
  要在我的数据机做这个设定的话,我得要以 AT 指令规画暂存器名称。利用 
  kermit 或其它通讯软体连接到你的数据机然後照这样输:ATQ0 。如果你的 
  数据机回应 OK 给你,那麽暂存器就已经被设定。对每个你想设定的暂存器 
  执行这个步骤。 
 
  我也喜欢看到我正在输入什麽,所以我设 E1 - 本地回应指令。如果你的数 
  据机具有资料压缩能力,你大概会想要启动它。参考你的数据机手册来获得 
  更多辅助说明,以及完整的选项列表。如果你的数据机支援内储稿 (stored 
  profile),要确定将适当的配置写到你的数据机里去(通常是用 AT&W 来执 
  行,但是在各个数据机制造商之间会有些不同);如果不是,那麽当你每次 
  打开或重置你的数据机时都得设定暂存器。 
 
 
  6.4.  硬体流量控制 
 
  如果你的数据机支援硬体流量控制(RTS/CTS)的话, 我强烈地建议你去使用 
  它。这对於支援资料压缩的数据机将格外重要。首先,你必须在串列埠本身 
  上面启动 RTS/CTS  流量控制功能。这最好是在启动系统的时候做,像是放 
  在 /etc/rc.d/rc.local 或是 /etc/rc.d/rc.serial  里面。要确定这些档 
  案会被主要的 rc.M 档案执行!你需要对每一个你想要启动硬体流量控制的 
  串列埠执行下列操作: 
 
 
       stty crtscts < /dev/cuaN 
 
 
  你也必须在你的数据机上启动 RTC/CTS  流量控制。参考你的数据机手册要 
  怎麽做,因为这在不同的教据机制造商之间是不同的。如果你的数据机支援 
  内储稿的话则要确定将配置存入你的数据机。 
 
 
 
  7.  我要怎麽样用数据机以 getty_ps 拨接? 
 
  让你的数据机能够正确地拨号出去。如果你还没有读过″我要怎麽样用我的 
  数据机拨号出去”该节的话现在去读!它包含有非常重要的设定资讯。 
 
 
  7.1.  用来接受拨接以及拨号出去的数据机配置 
 
  要用来接受拨接以及拨号出去的话,那麽你必须确实地设定你的数据机(再 
  一次对你的数据机使用 AT 指令群): 
 
 
       E1       本地回应指令 
       Q0       回报结果回应 
       V1       开启冗长模式 
       S0=0     不要接听( uugetty 以 WAITFOR 选项来处理) 
 
 
  如果你没有正确地设定,放在你配置档里的启始字串可能会失败,因而停住 
  整个程序(hosing the whole process)。但是,下面有更多配置档的选项.. 
 
 
       &C1     DCD 只有在连线以後才开启 
       &S0     DSR 永远为开启 
               DTR 开启/关闭 重置数据机(是数据机制造商而定 - RTFM) 
 
 
  这些会影响你数据机有关开始以及结束拨号的动作。 
 
  如果你的数据机不支援内储稿,你可以透过在你配置档里的启始字串来设定 
  这些东西。参阅如下所述。有一些数据机是以 DIP  开关来影响暂存器的设 
  定,也要确定这些设定是正确的。 
 
  我已经开始著手收集不同种类数据机的设定。到目前为止,我还只有它们的 
  一小部分,如果你想要寄送给我你目前所用配置,请你就这麽做!如果你要 
  我寄送这些配置的其中之一给你的话,只要来信向我索取即可。因为篇幅的 
  考量,所以我没有在这里把它们列出来。我这里有 Supra, Tlebit T1600, 
  USR Courier 以及 Zoom 14.4/28.8 数据机的设定。 
 
 
  7.2.  安装 getty_ps 
 
  依照预设值,getty-ps 将会照 Linux 的档案系统标准(FSSTND FileSystem 
  STaNDar) 来配置,这个意思是二进位码将会放在 /sbin 下,而配置档将会 
  以 /ect/conf.{uu}getty.ttySN 来命名。这并不能从文件叙述中找到 (not 
  apparant from the documentation)!它也会假定 lock files 将得要放到 
  /uar/lock 目录里。要确定你有 /var/lock 这个目录。 
 
  如果你不想依照 FSSTND 的话,二进位码将会放到 /etc 里面,而配置档将 
  会放到 /ect/default/{uu}getty.ttySN 里面,而 lock files 则将会放到 
  /usr/spool/uucp 里面。如果你有使用 UUCP 的话那麽我建议这样做,因为 
  如果你把 lock files 搬到 Taylor UUCP  无法找到的地方去那麽它将会出 
  问题的。 
 
  getty-ps 也使用 syslogd 来记录讯息。如果你目前没有执行它的话,参阅 
  syslogd(1) 以及 syslog.conf(5) 的线上手册来设定 syslogd 。讯息会优 
  先以 LOG_AUTH 记录,错误使用 LOG_ERR 记录,而除错使用 LOG_DEBUG 。 
  如果你不想使用 syslogd 的话那麽你可以编辑在 getty-ps  原始档案里的 
  tune.h 用一个记录档来取代,预设档名为 /var/adm/getty.log 。 
 
  当你决定好是否要依照 FSSTND 以及使用 syslog 时,编辑在 getty-ps 原 
  始目录里面的 tune.h 以及 Makefile 来反应你所作的决定。现在,根据说 
  明安装。 
 
  从现在起,所有谈到 getty 的地方都是指 getty_ps 而言。谈到 uugetty 
  则是指 getty_ps 套件里的 uugetty 而言。 
 
 
  7.3.  设定 uugetty 
 
  为了要能从你的数据机进行拨接,我们想要用 uugetty 。 uugetty 执行很 
  重要的 lock file 检查。更新 /etc/gettydefs  以便为数据机增加项目: 
  (注意到这里的项目互相参考,它们并非固定速度) 
 
       # Modem entries 
       38400# B38400 CS8 # B38400 SANE -ISTRIP HUPCL #@S @L @B login: 
#19200 
       19200# B19200 CS8 # B19200 SANE -ISTRIP HUPCL #@S @L @B login: 
#9600 
       9600# B9600 CS8 # B9600 SANE -ISTRIP HUPCL #@S @L @B login: 
#2400 
       2400# B2400 CS8 # B2400 SANE -ISTRIP HUPCL #@S @L @B login: 
#1200 
       1200# B1200 CS8 # B1200 SANE -ISTRIP HUPCL #@S @L @B login: 
#300 
       300# B300 CS8 # B300 SANE -ISTRIP HUPCL #@S @L @B login: #38400 
 
 
  如果你将你的数据机设成 RTS/CTS 执行应硬体流量控制的话,那麽你可以 
  保 CRTSCTS 加到这些项目里: 
 
 
       # 38400 fixed speed with hardware flow control 
       F38400# B38400 CS8 CRTSCTS # B38400 SANE -ISTRIP HUPCL CRTSCTS 
#@S 
@L @B login: #F38400 
       # 19200 fixed speed with hardware flow control 
       F19200# B19200 CS8 CRTSCTS # B19200 SANE -ISTRIP HUPCL CRTSCTS 
#@S 
@L @B login: #F19200 
       # 9600 fixed speed with hardware flow control 
       F9600# B9600 CS8 CRTSCTS # B9600 SANE -ISTRIP HUPCL CRTSCTS #@S 
@L 
@B login: #F9600 
 
 
  如果你要的话,你可以让 uugetty  在签入时的标题上印出些有趣的东西。 
  在我的例子里,我印出系统名称,串列线路,以及目前的每秒位元传输率。 
  你可以加入其它的东西: 
 
 
              @B    The current (evaluated at the time the @B is seen) 
bps rate. 
              @D    The current date, in MM/DD/YY. 
              @L    The serial line to which getty is attached. 
              @S    The system name. 
              @T    The current time, in HH:MM:SS (24-hour). 
              @U    The number of currently signed-on users.  This is 

                    count of the number of entries in the /etc/utmp 
file 
                    that have a non-null ut_name field. 
              @V    The value of VERSION, as given in the defaults 
file. 
              To display a single '@' character, use either '\@' or 
'@@'. 
 
 
  接下来,确定你数据机所接的串列埠有输出及输入的设备。如果你的数据机 
  设在 ttyS3 的话你将会需要 /dev/cua3 ,以及 /dev/ttyS3 这两个设备。 
  如果你没有正确的设备,参阅″在 /dev 下建立设备″该节如何建立设备, 
  ,并且建立这些设备。 
 
 
  7.4.  特置化(customizing) uugetty 
 
  你有许多参数可以用来改变你所拥有的每一个埠。这些是以分别对每一个埠 
  使用不同配置档的方式来实作的。这个 /etc/conf.uugetty  档案会被所有 
  的 uugetty 所使用,而 /etc/conf.uugetty.ttySN 只由一个埠使用。预设 
  的配置档□例可以在 getty-ps 的原始档案里找到,这在绝大部分的 Linux 
  发行套件里面都会有。因为篇幅的考量,没有把它们列在这里。要注意的是 
  如果你用的是比较旧的 getty  版本(比 2.0.7e 版还旧),或者是你没有 
  依照 FSSTND 的话,那麽预设的档案将会是 /etc/default/uugetty.ttySN。 
  我的 /etc/conf.uugetty.ttyS3 看起来像这样: 
 
 
       # sample uugetty configuration file for a Hayes compatible 
modem to allow 
       # incoming modem connections 
       # 
       # alternate lock file to check... if this lock file exists, 
then uugetty is 
       # restarted so that the modem is re-initialized 
       ALTLOCK=cua3 
       ALTLINE=cua3 
       # line to initialize 
       INITLINE=cua3 
       # timeout to disconnect if idle... 
       TIMEOUT=60 
       # modem initialization string... 
       # format: <expect> <send> ... (chat sequence) 
       INIT="" AT\r OK\r\n 
       WAITFOR=RING 
       CONNECT="" ATA\r CONNECT\s\A 
       # this line sets the time to delay before sending the login 
banner 
       DELAY=1 
       #DEBUG=010 
 
 
  将下面那一行加到你的 /etc/inittab 里去,那麽 uugetty  就会在你的串 
 
 
       S3:456:respawn:/sbin/uugetty ttyS3 F38400 vt100 
 
 
  重新开始启始程序: 
 
 
       linux# init q 
 
 
  对於在你 inittab  里面的速度参数,你会希望使用你数据机所能支援的最 
  高每秒位元传输率。参阅”我怎样将我的串列埠设到较高的速度?”该节来 
  设定。然後,在你的 inittab 里使用 38400 bps 。 
 
  现在 Linux  将会随时监视你的串列埠是否有连线。从别的地方拨接并签入 
  你的 Linux  机器。高兴吧! 
 
  uugetty 还有更多的选项,参阅 getty (lm) 线上手册获得更完整的叙述。 
  别的不提它还有排程(scheduling)的功能,以及回拨的能力。 RTFM :-) 。 
 
 
  7.5.  US Robotics 注意事项 
 
  要让我的 USR Courier 数据机在 DTR 掉下来的时候能够正确地重置,我必 
  须要设 &D2 以及 S13=1 。 
 
 
  7.6.  Supra 注意事项 
 
  Supra 数据机对於 DCD 的处理与其他数据机不同。如果你正是使用 Supra 
  的话,你必须要设 &C0 而不是 &C1 才对。你也必须要设 &D2 以便正确地 
  处理 DTR 信号。 
 
 
 
  8.  我怎麽设定终端机连线到我的 PC 上? 
 
  8.1.  硬体需求 
 
  要确定你有一条正确的连接线。在电脑商店买的 null modem 连接线就可以 
  胜任。但是它一定得要是一条 null modem 线!确定你是使用你的串列埠, 
  公的 DB25 或是 DB9 接头,而不是你的并列埠。 
 
  最少最少,你得要有(对 DB-25 接头而言) 
 
 
          RxD   Receive Data          2 - 3       TxD   Transmit Data 
          TxD   Transmit Data         3 - 2       RxD   Receive Data 
          GND   Signal Ground         7 - 7       GND   Signal Ground 
 
 
  如果你想要拥有流量控制以及硬体连线协商(handshaking)的话,你必须要 
  有一条 full null modem 其接线: 
 
 
                Frame Ground          1 - 1             Frame Ground 
          RxD   Receive Data          2 - 3       TxD   Transmit Data 
          TxD   Transmit Data         3 - 2       RxD   Receive Data 
          RTS   Request To Send       4 - 5       CTS   Clear To Send 
          CTS   Clear To Send         5 - 4       RTS   Request To 
Send 
          DSR   Data Set Ready        6 - 20      DTR   Data Terminal 
Ready 
          GND   Signal Ground         7 - 7       GND   Signal Ground 
          DCD   Carrier Detect        8 - 20      DTR   Data Terminal 
Ready 
          DTR   Data Terminal Ready  20 - 6       DSR   Data Set Ready 
          DTR   Data Terminal Ready  20 - 8       DCD   Carrier Detect 
 
 
  如果你的串列埠上有一个 DB9 的接头,试试看下面这个: 
 
 
                                    DB9   DB25 
          RxD   Receive Data          2 - 2       TxD   Transmit Data 
          TxD   Transmit Data         3 - 3       RxD   Receive Data 
          GND   Signal Ground         5 - 7       GND   Signal Ground 
 
 
  另外,一条完全的(full) DB9-DB25 null modem 连接线: 
 
 
                                    DB9   DB25 
          DCD   Carrier Detect        1 - 20      DTR   Data Terminal 
Ready 
          RxD   Receive Data          2 - 2       TxD   Transmit Data 
          TxD   Transmit Data         3 - 3       RxD   Receive Data 
          DTR   Data Terminal Ready   4 - 6       DSR   Data Set Ready 
          DTR   Data Terminal Ready   4 - 8       DCD   Carrier Detect 
          GND   Signal Ground         5 - 7       GND   Signal Ground 
          DSR   Data Set Ready        6 - 20      DTR   Data Terminal 
Ready 
          RTS   Request To Send       7 - 5       CTS   Clear To Send 
          CTS   Clear To Send         8 - 4       RTS   Request To 
Send 
          (RI Ring Indicator          9 not needed) 
 
 
  如果使用的并不是 full null modem  连接线的话,你可能得要做下面这个 
  欺骗的技巧:在你电脑这边的接头上,把 RTS 跟 CTS 接在一起,而且也把 
  DSR, DCD 以及 DTR 接在一起。用这个方法,当电脑要求一个正确的硬体连 
  线协商信号时,它就可以得到(从它自己发出的)。 
 
  现在你已经有正确的连接线,把你的终端机连接到你的电脑上。如果你可以 
  的话,告诉你的终端机忽略数据机控制信号。试试看用 9600 bps, 8 data- 
  bits, 1 stop bit, no parity bits 来设定终端机。 
 
 
  8.2.  设定 getty 
 
  参考前面所描述的将 getty-ps 安装好。在 /etc/gettydefs 里面增加一个 
  给 getty 用来连接你终端机项目: 
 
 
       # 38400 bps Dumb Terminal entry 
       DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L 
login: 
#DT38400 
       # 19200 bps Dumb Terminal entry 
       DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L 
login: 
#DT19200 
       # 9600 bps Dumb Terminal entry 
       DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L 
login: 
#DT9600 
 
 
  如果你要的话,你可以让 getty  在签入的标题上印出一些有趣的东西。在 
  我的例子里,我印出系统名称以及串列线路。你可以加入其它的东西: 
 
 
       @B    The current (evaluated at the time the @B is seen) bps 
rate. 
       @D    The current date, in MM/DD/YY. 
       @L    The serial line to which getty is attached. 
       @S    The system name. 
       @T    The current time, in HH:MM:SS (24-hour). 
       @U    The number of currently signed-on users.  This is  a 
             count of the number of entries in the /etc/utmp file 
             that have a non-null ut_name field. 
       @V    The value of VERSION, as given in the defaults file. 
       To display a single '@' character, use either '\@' or '@@'. 
 
 
  编辑你的 /etc/inittab 档案以便使 getty  在串列埠上执行(依照你自己 
  的环境 -  埠、速度、预设终端机模式将正确的资讯填入): 
 
 
       S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 
 
 
  重新开始启动程序 
 
 
       linux# init q 
 
 
  现在你应该会在你的终端机上看到签入提示。也许你得按返回键 (return) 
  几次让终端机注意到。高兴吧。 
 
 
  8.3  将 PC 设定成终端机的注意事项 
 
  许多人将其它 PC 设定成终端机连接到 Linux 机器上。例如,旧的 8088 
  或是 286 PC 非常适合这个用途。你需要的只是一张包含适合让你的终端机 
  -个人电脑 (Terminal-PC) 使用的 DOS 磁片,以及让你的终端机-个人电脑 
  执行的通讯程式。 kermit 在这个用途上表现得非常好。你可以在这台机器 
  watsun.cc.columbia.edu:/pub/ftp/kermit  上找到几乎可以让任何现存的 
  作业系统使用的各种 kermit 版本。其它流行的 DOS 通讯程式像是 telix 
  以及 procomm  也将会有一样好的表现。要确定输入正确的串列埠资讯到你 
  终端机-个人电脑的通讯设定里去。 
 
 
 
  9.  我可以使用两个以上的串列设备吗? 
 
  你不需要阅读这一节,除非你想要使用 3 个或更多的串列设备...(假定你 
  没有多埠卡的话)。 
 
  假如你有另一个多馀的串列埠,是的,你可以。 
 
  你可以使用的串列埠数目受限於我们必须使用的硬体中断要求以及埠输出入 
  位址的数目。这并不是 Linux 的限制,而是 PC  汇流排的限制。必须指定 
  中断跟位址给每一个串列设备。串列设备可以是串列埠,内接式数据机或是 
  多埠卡。 
 
  多埠卡是为了拥有许多个串列埠来分享卡上所有串列埠所使用的相同 IRQ 而 
  特别设计的。 Linux 对卡上的每一个埠使用不同的输出入位址以便从它们获 
  取资料。 
 
 
  9.1.  选择串列设备的中断 
 
  你的 PC 一般会将 ttyS0 以及 ttyS2 设在 IRQ 4 而将 ttyS1 以及 ttyS3 
  设在 IRQ 3  。要使用两个以上的串列设备的话,你必须放弃其中一个中断 
  的使用。一个好选择是从你的并列埠那边重新指定一个中断。你的 PC 一般 
  会设定 IRQ5 或是 IRQ7 当你的并列埠,但是有少数人使用两个并列埠。你 
  可以重新指定其中一个中断给串列设备,并而仍然能顺利地使用并列埠。你 
  将会需要用到 setserial  程式来做这件事。此外,你必须调整你板子上的 
  跳接设定(Jumpers) ,查看你主机板的说明文件。跳接你想要给每个埠使用 
  的 IRQ 。 
 
  你将得要做些设定让每个串列设备都有一个,并且是唯一的一个中断。这里 
  是我在 /etc/rc.local 里所用的设定 - 你应该在启动系统时的某个地方做 
  这件事。 
 
 
               /etc/setserial /dev/cua0 irq 3          # my serial 
mouse 
               /etc/setserial /dev/cua1 irq 4          # my Wyse dumb 
terminal 
               /etc/setserial /dev/cua2 irq 5          # my Zoom modem 
               /etc/setserial /dev/cua3 irq 9          # my USR modem 
 
 
  标准的 IRQ 指定: 
 
 
                     IRQ  0    Timer channel 0 
                     IRQ  1    Keyboard 
                     IRQ  2    Cascade for controller 2 
                     IRQ  3    Serial port 2 
                     IRQ  4    Serial port 1 
                     IRQ  5    Parallel port 2 
                     IRQ  6    Floppy diskette 
                     IRQ  7    Parallel port 1 
                     IRQ  8    Real-time clock 
                     IRQ  9    Redirected to IRQ2 
                     IRQ 10    not assigned 
                     IRQ 11    not assigned 
                     IRQ 12    not assigned 
                     IRQ 13    Math coprocessor 
                     IRQ 14    Hard disk controller 
                     IRQ 15    not assigned 
 
 
  在选择中断时真的没有什麽正确的。只要确定它不是已经被主机板,或是其 
  它界面卡所使用。2, 3, 4, 5 或是 7 是好选择。″没有被指定″的意思是 
  目前并没有什麽东西在标准情况下会固定使用这些硬体中断要求。也要注意 
  到 IRQ 2 跟 IRQ 9 是一样的。你可以称它为 2 或 9 ,串列驱动程式非常 
  了解这一点。 
 
  如果你有一张 16-bit 汇流排接头的串列卡,你也可以使用编号为 10, 11, 
  12 或是 15 的硬体中断要求。 
 
  只要确定你使用的并非是 IRQ 0, 1, 6, 8, 13 或是 14 !它们是由你的主 
  机板所使用的。如果你走她的 IRQs 的话,会使得她很不高兴。 
 
 
  9.2.  设定串列设备的位址 
 
  接下来,你必须设埠位址。查看你主机板手册的跳接设定。就像中断,每个 
  位址只能有一个串列设备。你的埠通常会配置成像下面这样: 
 
 
               ttyS0 address 0x3f8 
               ttyS1 address 0x2f8 
               ttyS2 address 0x3e8 
               ttyS3 address 0x2e8 
 
 
  选择你想要给每一个串列设备使用的位址并且据此跳接设定。我将我的数据 
  机设在 ttyS3 ,我的滑鼠在 ttyS0 ,而我的终端机在 ttyS2 。 
 
  当你重新启动时, Linux 应该会在你所设定的位址看到你的串列埠。Linux 
  所看到的 IRQ 可能不会跟你跳接设定的相符。不必担心这一点。 Linux 在 
  它启动的时候并没有做任何的 IRQ 侦测,因为 IRQ 侦测是 dicy 的并且有 
  可能被欺骗。使用 setserial 来告诉 Linux 那个埠使用那个 IRQ 。 
 
 
 
  10.  我怎样将我的串列埠设到较高的速度? 我的数据机又应该使用什麽样 
       的速度? 
 
 
  这一节应该可以帮你找出当你透过通讯程式,或是 getty  程式使用你的数 
  据机时应该使用什麽速度。 
 
  。如果你所有的是比 9600 bps (V.32)  数据机还要慢的东西,将你的速度 
    设到你的数据机所能支援的最高速度。例如 300, 1200, 或 2400 bps 。 
 
  。如果你有 9600 bps (V.32) 的数据机,并且支援 V.42bis 资料压缩。就 
    使用 38400 来当作你的速度。V.42bis 压缩具有 4:1 的理论值,也就是 
    ``4 * 9600 = 38400'' 。 
 
  。如果你有 14400 bps (V.32bis) 的数据机,并且支援 V.42bis 资料压缩 
    功能的话,使用 setserial 程式,加上 spd_hi  旗标将你的串列埠配置 
    成使用 57600 bps (4 * 14400 = 57600) 的速度。 
 
    如果你有 28800 (V.FC 或是 V.34) 的数据机则使用 spd_vhi 旗标 (4 * 
    28800 = 115200) 。 
 
    然後,在你的通讯程式,或是 inittab 里使用 38400 当作速度设定。这 
    是现在你能设的最高速度。没有名为 57600 或是 115200  的速度(虽然 
    在 1.1.65 版的时候已经加入支援并且很快的将可以使用)。要确定你有 
    16550A 通用非同步接收转换器(UARTs) :-) 。 
 
  将你所作的修改放进 /etc/rc.d/rc.serial or /etc/rc.d/rc.local  以便 
  在系统启动执行它们。在我的 /etc/rc.d/rc.local 里,我是这样设定我的 
  ttyS3 到 115200 bps 的: 
 
 
       /sbin/setserial /dev/cua3 spd_vhi 
 
 
 
  11. 通讯程式及工具 
 
  一旦你使得每件事都能正确运作,你可能会想要找些更进一步的程式,如果 
  你所使用的发行套件里头并没有的话,这些都可以在一般的 FTP 站找到。 
 
 
  。 ecu - 一套通讯程式 
 
  。 minicom - 类似 telix 的通讯程式 
 
  。 procomm - procommish 包含 zmodem 的通讯程式 
 
  。 seyon - 以 X 为基础环境的通讯程式 
 
  。 xc - xcomm 通讯套件 
 
 
  这些程式提供比单独的 kermit 更多功能,包括电话目录,自动拨号等等。 
 
  。 另外一个有用的程式是 term 。 term 在一条串列线路之上多重模拟许多 
     连线。这有点类似 SLIP ,并提供一些 SLIP 的功能。这些包括 rlogin, 
     telnet, ftp, finger, rdate, xmosaic 以及 tredir 。 tredir 是一支 
     让你能够重导远端的 TCP/IP 埠到你自己本地主机上的特殊程式。这允许 
     远端的 NNTP ,以及 SMTP 存取。关於 term 的好处是它完全在使用者的 
     空间中执行,意思是它不需要核心的支援,或是系统管理上的支援(像是 
     SLIP 所做的一样)。 
 
  。 screen 是另一个多区段作业(multi-session)的程式。这个程式就像的动 
     作就像虚拟控制台。 
 
  。 callback 这支程式会使你的数据机从你刚刚被呼叫的地方立刻回拨给你。 
 
  。 mgetty+fax 处理传真事务,并且提供一个不同的 getty 
 
  。 ZyXEL 是 ZyXEL U-1496  数据机的控制程式。它处理接受拨接,拨号, 
     回拨的保密,传真,以及语音信箱功能。 
 
  。 其它东西可以在这里找到 
     sunsite.unc.edu:/pub/Linux/system/Serial and 
 
     sunsite.unc.edu:/pub/Linux/apps/comm 或是许多对映节点之一。这些 
     是保留所有串列式东西的目录。 
 
 
 
  12.  串列使用密诀 
 
  这里有一些你可能发现很有用的串列□诀... 
 
 
  12.1.  kermit 以及 zmodem 
 
  要在 kermit 下使用 zmodem 的话,将下列内容加到你的 .kermrc 里去: 
 
 
  define rz !rz < /dev/cua3 > /dev/cua3 
  define sz !sz \%0 > /dev/cua3 < /dev/cua3 
 
  要确定正确地放到你数据所在的埠。然後,要使用的话,只要在 kermit 的 
  提示符号下键入 rz 或 sz <档名> 即可。 
 
 
  12.2.  自动设定终端机型式在 
 
  要在当你签入的时候自动设定你的终端机形式的话,要把终端机的形式加到 
  /etc/inittab 的项目里去。如果我有一台 vt100 终端机在 ttyS1 上 ,我 
  要对 getty 指令加上 ``vt100'': 
 
 
       S1:456:respawn:/sbin/getty ttyS1 DT9600 vt100 
 
 
  你也可以从 sunsite.unc.edu:/pub/Linux/system/Terminal-management 
  或映对的节点取得 tset 程式。参阅随附於 tset 的文件以便学习如何使用 
  它。 tset 可以在你签入的时候建立终端机的特性,而且不需要依赖任何的 
  预设值。 
 
 
  12.3  在串列连线下的彩色 ls 
 
  如果 ls 因为彩色特性而扰乱了你的终端机模拟,把它关掉。ls --colcr 
  以及 ls --colour 都使用彩色特性。有些安装方式使得 ls  预设为使用彩 
  色。检查 /etc/profile 以及 /etc/csh.cshrc 里的 ls 别名。如果你不想 
  修改系统预设值的话,你也可以设给 ls 别名 ls --no-color 。 
 
 
  12.4.  从终端机所连接的印表机进行列印 
 
  有一个由 Garrett D'Amore garrett@sdsu.edu 所撰写的程式叫做 vtprint 
  的程式可以做得到。 
 
  这一支程式可以从 ftp.sdsu.edu:/pub/vtprint  底下取得,而且也可以从 
  http://www.sdsu.edu/~garrett/ 取得。下面是从这个程式的 README 档案 
  里节录出来的: 
 
 
       vtprint 是一个能够允许使用者从远端 UNIX 主机列印至连接到他们当 
       地终端机或模拟器的印表机的程式,它使得在家里列印档案等等工作变 
       得很方便(虽然它只能用在本文档。) 
 
 
  12.5.  Linux 能不能够自动地配置串列设备? 
 
  可以。要让 Linux  在启动的时候自动地侦测并且设定串列设备的话,把这 
  一行: 
 
 
       /sbin/setserial /dev/cuaN auto_irq skip_test autoconfig 
 
 
  加到你的 /etc/rc.d/rc.local 或是 /etc/rc.d/rc.serial  档案里面。对 
  每一个你希望自动配置的串列埠都要做。要确定所给的是一个真真正正存在 
  於你电脑上的设备名称。 
 
 
  12.5.1.  多埠卡的注意事项 
 
  对於卡的位址,以及 IRQs 查阅 setserial 程式随附的 rc.serial 。它有 
  很多关於多埠卡的细节,包括输出入位址以及设备名称。 
 
 
 
  13. Linux FTP 节点 
 
 
       sunsite.unc.edu [152.2.22.81]:/pub/Linux        (NC, USA) 
       tsx-11.mit.edu [18.172.1.2]:/pub/linux          (MA, USA) 
       nic.funet.fi [128.214.6.100]:/pub/OS/Linux      (Finland, 
Europe) 
 
  sunsite.unc.edu 是公认的 Linux FTP  节点,而且有很多映对节点。如果 
  可能的话请使用映对节点节省一些 sunsite 的传输。 
 
 
  sunsite mirrors (sunsite.unc.edu:/pub/Linux/MIRRORS): 
 
 
  * CONTINENT 
  - COUNTRY 
     CITY...  FTP Site   Directory 
 
------------------------------------------------------------------------ 
  * Africa 
  - None so far 
  * Asia 
  - Thailand 
     Bangkok...  ftp.nectec.or.th  /pub/mirrors/linux/ 
  - Hong Kong 
      ...  ftp.cs.cuhk.hk  /pub/Linux/ 
  - Republic of Singapore 
     Singapore...  ftp.nus.sg  /pub/unix/Linux/ 
  - Japan 
     Unknown...  ftp.spin.ad.jp  /pub/linux/sunsite.unc.edu/ 
  * Australia 
     Adelaide...  smug.student.adelaide.edu.au  /pub/sunsite.linux/ 
     Brisbane...  ftp.dstc.edu.au  /pub/linux/ 
  * Europe 
  - Austria 
     Graz...  ftp.tu-graz.ac.at  /pub/Linux/ 
  - Czech Republic 
     Brno...  ftp.fi.muni.cz  /pub/UNIX/linux/ 
     Prague...  pub.vse.cz  /pub/386-unix/linux/ 
  - France 
     Angers...  ftp.univ-angers.fr  /pub/linux/ 
     Nancy...  ftp.loria.fr  /pub/linux/sunsite/ 
  - Germany (Deutschland) 
     Aachen...  ftp.dfv.rwth-aachen.de  /pub/linux/sunsite/ 
     Dortmund...  ftp.germany.eu.net  /pub/os/Linux/Mirror.SunSITE/ 
     Dresden...  ftp.tu-dresden.de  /pub/Linux/sunsite/ 
     Erlangen...  ftp.uni-erlangen.de  /pub/Linux/MIRROR.sunsite/ 
     Mannheim...  ftp.ba-mannheim.de  /pub/linux/mirror.sunsite/ 
     Paderborn...  ftp.uni-paderborn.de  /pub/Mirrors/sunsite.unc.edu/ 
     Rostock...  ftp.uni-rostock.de  /Linux/sunsite/ 
     Stuttgart...  ftp.rus.uni-stuttgart.de 
/pub/unix/systems/linux/MIRROR.sunsite/ 
     Tuebingen...  ftp.uni-tuebingen.de  /pub/linux/Mirror.sunsite/ 
     Ulm...  ftp.rz.uni-ulm.de  /pub/mirrors/linux/sunsite/ 
     Unknown...  ftp.gwdg.de  /pub/linux/mirrors/sunsite/ 
  - Hungary 
     Budapest...  ftp.kfki.hu  /pub/linux/ 
  - Italy 
     Pisa...  cnuce-arch.cnr.it  /pub/Linux/ 
  - Switzerland 
     Zurich...  ftp.switch.ch  /mirror/linux/ 
  - Turkey (Turkiye) 
     Ankara...  ftp.metu.edu.tr  /pub/linux/sunsite/ 
  - United Kingdom 
     Coventry...  ftp.maths.warwick.ac.uk 
/mirrors/linux/sunsite.unc-mirror/ 
     London...  src.doc.ic.ac.uk  /packages/linux/sunsite.unc-mirror/ 
     Mildenhall...  ftp.dungeon.com  /pub/linux/sunsite-mirror/ 
  * North America 
  - United States 
     Atlanta, GA...  ftp.cc.gatech.edu  /pub/linux/ 
     Chapel Hill, NC...  sunsite.unc.edu  /pub/Linux/ 
     Fayetteville, AR...  ftp.engr.uark.edu  /pub/linux/sunsite/ 
     Flagstaff, AZ...  ftp.infomagic.com  /pub/mirrors/linux/sunsite/ 
     Midwest...  ftp.wit.com  /systems/unix/linux/ 
     Mt. Pleasant, MI...  ftp.cps.cmich.edu  /pub/linux/sunsite/ 
     Rochester, NY...  ftp.rge.com  /pub/linux/sunsite/ 
     Salt Lake City, UT...  ftp.pht.com  /mirrors/linux/sunsite/ 
     Urbana, IL...  mrcnext.cso.uiuc.edu  /pub/linux/ 
     Unknown...  ftp.linux.org  /pub/mirrors/sunsite/ 
     Unknown...  ftp.orst.edu  /pub/mirrors/sunsite.unc.edu/linux/ 
     Unknown...  ftp.iquest.com  /pub/linux/sunsite/ 
     Unknown...  ftp.yggdrasil.com  mirrors/sunsite/ 
  * South America 
  - Chile 
    ftp.inf.utfsm.cl              /pub/Linux 
  * Unknown 
  - If you know where these sites are, please mail 
ewt@sunsite.unc.edu. 
      ...  ftp.linux.org  /pub/mirrors/sunsite/ 
      ...  ftp.gwdg.de  /pub/linux/mirrors/sunsite/ 
      ...  ftp.orst.edu  /pub/mirrors/sunsite.unc.edu/linux/ 
      ...  ftp.iquest.com  /pub/linux/sunsite/ 
      ...  ftp.spin.ad.jp  /pub/linux/sunsite.unc.edu/ 
      ...  ftp.yggdrasil.com  mirrors/sunsite/ 
 
 
  这些 FTP 节点都支援匿名的(annonymous)FTP 服务,这个意思是以 ftp 签 
  入,然後以你的电子邮件地址作为密码(ie logname@yourhost.yourdomain) 
 
 
 
  14.  更进一步 
 
  这一节并不需要阅读,但是可能带给你一些对於 Unix 以及电子通讯世界更 
  进一步的了解。 
 
 
  14.1.  什麽是锁定档案(lock files)? 
 
  Lock files  只是单纯的一个档案用来表示某个特定的设备正在使用中。它 
  们保留在 /usr/spool/uucp 或是 /var/lock 里面。 Linux 的 lock files 
  名字都是 LCK..name,其中的 name 不是设备名称就是一个 UUCP 节点名称。 
  有些程序建立这些 locks  以便让它们自己可以独占该设备的存取权。例如 
  如果你从你的数据机拨号出去,将会出现一个 lock 告诉其它程序现在已经 
  有人正在使用数据机。Locks  里面主要是包含锁住该设备的程序的 PID 。 
  大部份的程式会查阅 lock  ,然後检查程序表(process table)中锁定该设 
  备的程序来试著决定这个 lock 是否仍然有效。如果发现这个 lock 是有效 
  的话,这个程式(应该)要结束。如果不是,某些程式会删除过时的 lock, 
  然後使用该设备,在程序执行时建立他们自己的 lock 。其它的程式就只好 
  结束并告诉你该设备正在使用中。 
 
 
  14.2.  ``baud'' vs. ``bps'' 
 
  ``baud'' 跟 ``bps'' 可能是电脑/电子通讯这个领域里最常被错用的术语 
  之一。当它们事实上并不相同的时候,很多人交替使用这些术语。 
 
 
     鲍率(baud) 
        鲍率是每秒钟数据机(调变解调器)送出多少次讯号改变的度量。例 
        如,鲍率为 1200 的含意是信号每隔 833 微秒(microsecond)即改变 
        一次。普遍的鲍率有 50, 75, 110, 300, 600, 1200 以及 2400。大 
        部份的高速数据机所使用的鲍率为 2400。因为语音级(voice-grade) 
        电话线路的频宽限制,超过 2400 的鲍率很难达的到,而只能在非常 
        纯净的电话线品质下才能运作。``baud''一词在 Emile Baudot 之後 
        才有,他是非同步电报印表机(asynchronous telegraph printer)的 
        发明者。 
 
 
     每秒传输位元(bps) 
        每秒位元传输率是每秒钟传输多少位元的度量。普遍每秒位元传输率 
        有 50, 75, 110, 300, 1200, 2400, 4800, 9600, ... 115200 。在 
        使用 V.42bis  压缩(4:1 压缩)的数据机下,理论上每秒位元传输 
        率可以高达 115200 。这是许多人在错用 ``baud'' 这个字时所指的 
        意思。 
 
 
  所以,如果高速数据机以 2400 baud 运作,它们如何能够传送 14400 bps? 
  数据机对每个 baud 编码来表示某一数量的位元而使得 bps > baud 。这样 
  一来,当 2 个或更多位元编码成一个 baud 的时候,bps 就会超越 baud。 
  如果你的数据机是以 14400 bps 连线的话,它将会用每个 baud 传送 6 个 
  位元。 
 
  这个混淆是怎麽样开始的?嗯,回到今天的低速数据机还是昨天的高速数据 
  机那个时代,每秒位元传输率跟信号改变率实际上是完全相等的。每个 bit 
  编码成一个 baud 。人们交替使用 bps 以及 baud 是因为它们的数字相同。 
  例如一台 300 bps 的数据机其信号改变率也是 300 。当高速数据机普及後 
  一切都改变了,而且每秒位元传输率超过了信号改变率。 
 
 
  14.3.  什麽是 UARTs? 他们怎样影响效能? 
 
  UARTs (Universal Asyncronous Receiver Transmitter)通用非同步接收转 
  换器是你 PC 串列卡上的晶片。它们的功用是把资料转成位元,将这些位元 
  送上串列线路,然後在另一端重新建立资料。UARTs 是以位元组为单位处理 
  资料,很方便地也是美国标准交换码(ASCII)的字元大小。 
 
  假定是你有一台连接到你 PC 的终端机。当你键入一个字元时,终端机把它 
  交给它的转换器(也是 UART 的一种)。该转换器以指定的速率把这个位元 
  组送到串列线路上,每次一个位元。在 PC 这一端,接收位元的 UART 拿走 
  所有的位元,然後重新组成位元组并且放到缓冲区里去。 
 
  有两种不同的 UARTs 类型。你可能有听过愚蠢的(dumb) UARTs - 8250 还有 
  16450 ,以及先进先出式 UARTs - 16550A  。要了解它们的不同,首先让我 
  们来检验当 UART 送出或接收一个位元组时所发生的事。 
 
  这 UART 本身并不能对资料做什麽处理,它只是送出以及接收它。每次送出 
  或接收一个位元组时, CPU 都会从串列设备接到一个中断。然後 CPU 就把 
  接收到的位元组从 UARTs  的缓冲区搬到记忆体的某处,或是提供另一个位 
  元组给 UART 传送。8250 以及 16450 UARTs 只有一个位元组的缓冲区。这 
  个意思是,每送出或接收一个位元组就会中断 CPU  一次。在低速的情况下 
  这样没有问题。但是在高速的传输率下,CPU 会忙於处理 UART 而没有时间 
  照料其它工作。在某些情况下,CPU 没有足够的馀裕及时处理中断服务,而 
  因为它们如此快速地传进来使得该位元组被覆写而遗失。 
 
  这就是 16550A UARTs 有用的地方。这些晶片具有 16 个位元组的先进先出 
  伫列。这个意思是在它得中断 CPU  之前可以接收或转换达 16 个位元组。 
  它不仅是能等,而且 CPU  现在也可以同时传送全部 16 个位元组的资料。 
  虽然中断界限(threshold)很少有设到 16  的,这对於其它只有一个位元组 
  缓冲区的 UARTs 而言仍然是一个重要的进步。 CPU 接到较少的中断,因此 
  可以自由地做其它事情。资料不会漏失,每个人都很高兴。(也有 16550 
  这个 UART 但是它跟 16450 一样) 
 
  一般来说, 8250 以及 16450 UARTs 应该能够胜任高达 38400 bps 的工作 
  速率。在高於 38400 bps  的速率下,你可能开始见到资料漏失,而且交谈 
  式作业的回应时间也减慢了。其它的 PC 作业系统(这里的定义很宽松), 
  像 DOS 并非是多工的,所以它们有可能可以用 8250 或 16450s  却应付的 
  更好。这就是为什麽有些人并没有看到资料漏失,直到他们改用 Linux  才 
  发生。 
 
  无-UART(Non-UART)以及智慧型多埠卡使用数位处理机(DSP)晶片来处理额外 
  的缓冲以及控制,如此更能减轻 CPU  的负担。例如,Cyclades Cyclom 及 
  Stallion EasyIO 这些卡使用 Cirrus Logic CD-1400 RISC 晶片。 
 
  心里要记得,这些愚蠢型的 UART 并非是坏的,只是它们对高速传输而言不 
  好。当你将终端机或滑鼠连接到这些 UARTs  时应该不会遭遇困难。但是对 
  高速数据机而言,16550A 可以说是必须的。 
 
  你可以花多一点点的钱购买有 16550A UARTs 的串列卡,只要询问电脑商该 
  卡所使用的是什麽型号的 UARTs  即可。或者你想升级你现在的卡,你可以 
  只要简单地购买 16550A 晶片并且置换你现在的 16450 UARTs  晶片。它们 
  的脚位相容(pin-to-pin compatible) 。有些卡有 UARTs  插槽来作这个用 
  途使用。如果不是的话你可以焊接。注意,如果你有钱,买一张新卡将可能 
  会省掉你许多麻烦,它们在 $50 元美金以下。 
 
 
  14.4.  /dev/cuaN 与 /dev/ttySN 之间真正的差别什麽是? 
 
  唯一的差别是该设备开启的方式。接受拨接的 /dev/sttySN  设备是以区块 
  模式开启的,直到确认 CD 为止(像是某人连线上来)。所以当某人要使用 
  /dev/cuaN 设备时,与监视 /dev/ttySN 设备的程式不会有冲突。 
 
  这个差异是为了允许使用相同串列埠拨出与接受拨接而安排的。 
 
 
 
  15. 故障排除 
 
  15.1.  我不断地收到 ``line NNN of inittab invalid'' 
 
  要确定你对你的 init 版本使用正确的文法。这里所没有的一些 init 会在 
  /etc/inittab 档案里使用不同的文法。要确定你对你的 getty 版本使用正 
  确的文法。 
 
 
  15.2.  当我试著拨号时,它说 ``/dev/cuaN: Decive or resource busy'' 
 
  这个问题可能发生在 DCD 或 DTR 没有设定正确的时候。DCD 应该只在真的 
  有连线时(像是有人拨接进来)才被设定,而不是在 getty  持续监看该埠 
  的时候。检查并确定你的数据机正确地配置成只在真正连线时才设定 DCD 。 
  DTR 应该在任何东西使用或监看线路时设定,像是 getty, kermit, 或其它 
  通讯程式。 
 
  另一个引起 ``device busy``  错误的普遍原因是你设定你的串列埠使用一 
  个已经被某种其它东西使用的中断。在每一个设备初始化的时後,它会要求 
  Linux 允许它使用它的硬体中断。Linux 持续追踪那个中断被指定给谁,而 
  如果你的中断已经被占用,你的设备将不能适当地初始化。该设备真的并没 
  有什麽办法告诉你发生的这件事,除了当你尝试去使用它的时候,它会回应 
  ``device-busy''  错误讯息。检查你所有的卡(串列,乙太网路,小型电脑 
  标准界面等等。)。找寻硬体中断冲突的地方。 
 
  15.3.  我持续接到 ``Id SN respauming too faster: disable for 5 
         minutes'' 。 
 
  确定你的数据机有正确的配置。查看暂存器 E 和 Q 。这可能发生在你的数 
  据机跟 getty 沟通的时候。 
 
  确定你正确地从 /etc/inittab 呼叫 getty  。使用错误的文法或设备名称 
  将会引起严重的问题。 
 
  这也可能发生在 uugetty 初使化失败时。直接跳到 `` getty 或 uugetty 
  仍然无法运作'' 该节。 
 
 
  15.4.  串列设备很慢或是串列设备只能单向传送 
 
  你的硬体中断可能有冲突。确定没硬体中断是被分享的。检查你所有的卡 
  (serial, ethernet, SCSI, etc...) 确定你串列设备配的跳接设定跟 
  setserisl 参数是正确的。 
 
  15.5.  我的数据机在某人断线後瘫痪(hosed)或是 uugetty 
并没有回应(respawn) 
 
  这在 DTR  电压下降而你的数据机没有重置时会发生。这个问题在我身上发 
  生的时候我看到我的 RD 跟 SD LEDs  疯狂地闪烁。你需要让你的数据机重 
  置。大部份的 Hayes 相容数据机使用 &D3 来做这件事,但是在我的 USR 
  Courier 上,我得要设 &D2 以及 S13=1 。检查你的数据机手册。 
 
 
  15.6.  我将我的终端机连到我的 PC  上,但是在我输入签入名称之後,它 
         就是锁住不动。 
 
  在你的 /etc/gettydefs 项目里可能没有设 CLOCAL 给终端机,而且可能你 
  用的并不是 full null modem 连接线。你需要 CLOCAL 来告诉 Linux 忽略 
  数据机控制信号。它看起来像这里这样: 
 
 
       # 38400 bps Dumb Terminal entry 
       DT38400# B38400 CS8 CLOCAL # B38400 SANE -ISTRIP CLOCAL #@S @L 
login: 
#DT38400 
       # 19200 bps Dumb Terminal entry 
       DT19200# B19200 CS8 CLOCAL # B19200 SANE -ISTRIP CLOCAL #@S @L 
login: 
#DT19200 
       # 9600 bps Dumb Terminal entry 
       DT9600# B9600 CS8 CLOCAL # B9600 SANE -ISTRIP CLOCAL #@S @L 
login: 
#DT9600 
 
 
  接下来,杀掉该 getty 程序这样新程序会以新的项目产生。 
 
 
  15.7.  在高速下,我的数据机漏失资料。 
 
  如果你尝试在 > 19200 bps 的速率下使用你的数据机,而你并没有 16550A 
  UARTs 的话,你应该要将它们升级。参阅 ``什麽是 UARTs ''  关於 UARTs 
  该节。 
 
 
  15.8.  它们已经配置完成。在系统启动时, Linux 没有依照我的配置回报 
         串列设备。 
 
  这是事实。Linux 在系统启动时并没有做任何的硬体中断侦测,它只做串列 
  设备侦测。所以,不要理会它所显示有关硬体中断的部份,因为它只是假定 
  使用标准的硬体中断。这是因为硬体中断侦测不可靠,而且可能被瞒骗而这 
  样做。 
 
  所以即使我的 ttyS2 设在 IRQ5 ,我仍然看到 
 
 
       Jan 23 22:25:28 misfits vmunix: tty02 at 0x03e8 (irq = 4) is a 
16550A 
 
 
  你必须使用 setserial 来告诉 Linux 你所使用的硬体中断。 
 
 
  15.9.  当我使用我的数据机叫用 Linux 机器时 rz 以及/或是 sz 不动。 
 
 
  如果 Linux 在你尝试移转档案时会寻找 /dev/modem 的话,查看 
  /etc/profile 以及 /etc/csh.cshrc。某些发行套件会在这些地方定义一些 
  别名,最著名的是 Slackware。这些别名扰乱了 zmodem 程式。把他们拿掉 
  或是修正他们。 
 
 
  15.10.  我的萤幕印出看起来很好玩的字元。 
 
  这在当你把二进位资料送往萤幕的时候会发生在虚拟控制台上,或者有时候 
  会发生在串列连线上。修复这个问题的方法是输入 echo ^v^[c 。因为控制 
  字元之故,它是 <ctrl>V<esc>c 。 
 
 
  15.11.  getty 或 uugetty 仍然无法运作 
 
  有个 DEBUG 选项随附在 getty-ps。编辑你的 /etc/conf.{uu}getty.ttySN 
  配置档并加上 DEBUG=NNN 。其中 NNN 是下列的数字组合之一,根据你想要 
  侦测什麽错误而定: 
 
 
  D_OPT   001            option settings 
  D_DEF   002            defaults file processing 
  D_UTMP  004            utmp/wtmp processing 
  D_INIT  010            line initialization (INIT) 
  D_GTAB  020            gettytab file processing 
  D_RUN   040            other runtime diagnostics 
  D_RB    100            ringback debugging 
  D_LOCK  200            uugetty lockfile processing 
  D_SCH   400            schedule processing 
  D_ALL   777            everything 
 
 
  设定 DEBUG = 010 是个开始的好地方。 
 
  如果你正在执行 syslogd  的话,侦错资讯将会出现在你的记录档里。如果 
  你没有执行 syslogd 那麽 getty 的资讯将会出现在 /tmp/getty:ttySN 里 
  而 uugetty 的资讯则会出现在 /tmp/uugetty:ttySN  里,而且它们也会被 
  放到 /var/adm/getty.log 里去。查看侦错资讯看看发生了什麽。最可能的 
  是,你将得要调整一些你配置档里的参数,并且重新配置你的数据机。 
 
  你应该也去试试 mgetty 。有些人在使用它时更为幸运。 
 
 
 
  16.  鸣谢 
 
  独立撰写这份 HOWTO 是不可能的事。虽然这份 HOWTO 的内容大部份都是我 
  写的,我经常重写这些感谢来维持许多在写作方式以及内容上有贡献的人。 
  感谢每个曾经贡献经验或建议的人,这些人的列表已经长得无法列出(超过 
  50人)。特别感谢 T'so 对於有关串列驱动程式问题的回答,还有负责维护 
  getty-ps 的 kris Gleason ,以及负责维护 mgetty 的 Gert Doering 。 
 
  Serial-HOWTO 结束 
 
 
 

BBS水木清华站∶精华区