Linux如何连接终端设备(原创)
2005/1/18 12:36:48
安装Linux操作系统的服务器在不需要键盘,鼠标,显示器等设备的情况下,就可正常运行,而这一切将归功于linux对计算机串口的利用,如果linux的串口被配置为支持终端,就可以通过一台终端或装有虚拟终端软件的PC机,就可以轻松完成对系统的配置及管理。
Linux具有强大的连接外围设备的能力,诸如终端服务器,拨号服务器等配置不需要太多的配置即可完成.
如果终端要与安装linux系统的PC机的标准串口连接,大致需要以下几各配置步骤:
1. Kernel
在缺省的情况下,linux kernel已经提供了串口连接终端的支持,如果拟通过make menuconfig 来配置内核,在Character Devices 配置页面的几个配置项是可选的调节,可充分发挥终端服务等能力。
Standard/generic (***) serial support:如果是标准串口,请打开此项,在linux 内核中表现为宏CONFIG_SERIAL被定义。如果是非标准串口,请在Non-standard Serial port support中选择正确的模块,如果该模块中没有适合你多串口卡的驱动,既需要多串口卡的供应商提供驱动程序,打补丁到kernel或作为驱动模块通过insmod加载。这样,内核中就支持串口了,/dev/ttyS0,/dev/ttyS1,/dev/ttyS2,/dev/ttyS3是与标准串口相对应的设备文件,对应于DOS下的COM1,COM2,COM3,COM4。多串口卡提供的串口设备文件不尽相同,需查看厂家资料。
Support for console on serial port:是对串口控制台的选项,如果你的linux Box不连接显示器,甚至连显示卡也没有,而你又想监视传递到系统控制台的系统控制台(system sonsole)的内核消息和警告,你可以选在此项,在linux内核中表现为CONFIG_SERIAL_CONSOLE被定义,以后你可以通过lilo命令行或lilo.conf来指定某个串口作为标准控制台。 在这种情况下,系统启动提示lilo的时候,可以输入参数console=/dev/ttyS0 指定ttyS0作为系统的缺省控制台(可以是与终端连接其它得串口).或者在lilo.conf文件中推过append=” console=ttyS0”来配置,同时注意用serial=0,9600n8来配置串口的参数,如果你的系统足够稳定,或你对系统输出到console的信息不关心,可以通过consol=null来讲这些信息输出到黑洞。
内核配置完成后,你就可以重新编译内核,然后配置/etc/lilo.conf, 通过linux装载器lilo安装新的内核引导系统
PS: linux box 中的lilo.conf
# LILO configuration file
#
# Start LILO global section
boot = /dev/hda
delay = 0
timeout = 0
prompt
serial=0,9600n8
vga = normal
append = "console=ttyS0"
# End LILO global section
# Linux bootable partition config begins
image = /boot/new
root = /dev/hda1
label = linux
read-only
2. Init
系统启动,内核装载后,1号进程init被启动,init根据/etc/inittab来建立系统的运行级别,如果inittab存在串口的配置,则启动这些串口上的服务,常见得有终端服务和拨号服务。
一个串口的终端服务配置如下面一行
s1:35:respawn:/bin/getty 9600 ttyS0 vt100
俩个字符ID:运行级别列表:动作<respawn>:getty程序:波特率:指定的串口:终端类型
更为详细的资料参考man inittab。
linux Box 通过多用户卡来实现终端服务器,是通过/etc/inittab中下面的字段来实现的
s2:35:respawn:/bin/agetty 19200 -L ttyS4 vt100
s3:35:respawn:/bin/agetty 19200 -L ttyS5 vt100
s4:35:respawn:/bin/agetty 19200 -L ttyS6 vt100
s5:35:respawn:/bin/agetty 19200 -L ttyS7 vt100
s6:35:respawn:/bin/agetty 19200 -L ttyS8 vt100
s7:35:respawn:/bin/agetty 19200 -L ttyS9 vt100
s8:35:respawn:/bin/agetty 19200 -L ttyS10 vt100
s9:35:respawn:/bin/agetty 19200 -L ttyS11 vt100
Getty程序会在后面作出详述。
3. Login
如果串口的终端服务初始化正常,通过ps 可以看到类似于下面的输出。
55 root root S /bin/agetty 19200 -L ttyS5 vt100
190 root root S /bin/agetty 19200 -L ttyS6 vt100
191 root root S /bin/agetty 19200 -L ttyS7 vt100
当终端通过串口线与Linux Box连接时,如果波特率,数据位,奇偶校验,流量控制等配置正确者终端显示器提示login信息,如果没有输出豁出现乱字符,请检查波特率等配置是否正确,或连接线路是否正常。
Login程序的使用方法可以通过man login来得到。
注:改变登陆提示信息 /etc/issue
制定用户附加的存取限制,如果不存在则没有附加限制 /etc/usertty
指定root用户可以登陆的tty,如果不存在,root可以从tty登录 /etc/securetty
不显示用户mail和上次登陆信息 .hushlogin 存在于用户目录下
与用户登陆配置相关的其他文件 /etc/security/*, /etc/login.defs
4. Shell
如果login成功,就进入了用户shell。Shell的属性在/etc/profile和用户目录的.profile中配置。
5. Getty程序
由于linux的开放性导致由多个getty的版本。
agetty (支持串口)
mingetty (不支持串口)
mgetty (支持串口)
uugetty (支持串口)
vgetty (不清楚)
他们的使用略有不同,详细可以参看他们的手册。
结尾:
总的来讲,linux对终端的支持从配置工作上来讲也就这么几个方面,针对linux发行商和版本号的不同,配置方法可能不同,参数也可能需要调整。希望上面的描述会对各位有帮助。