背景
串口是物理连接,相比于ssh
来说比较稳定,平时使用ssh
远程操作Linux
,但是在网络挂掉的情况下串口往往是最终手段,因为生产环境下的服务器一般没有视频输出接口,而会有串口,并且只需要一根串口线,其他电脑就可以物理连接到服务器并进行操作。
之前实验室做了个服务器的项目,对方要求实现通过串口登陆并控制Linux
,但是已经购买的服务器并没有串口,于是买了一个USB
转串口设备,服务器通过USB
转接扩展出串口,之后仍然需要在服务器做相应的配置才能实现登陆。其实USB
转串口设备与真实的串口设备配置差别不大,这个之后会说到。花了很久的时间才google
出相关的配置方法,因此记录一下。
步骤
我的Linux环境是CentOS 6.5 x64
首先是驱动的问题,通过查阅资料发现,CnetOS 6.5
已经集成了RS232
串口驱动,因此驱动方面我们无需再操心。
想要通过串口连接Linux
,那就必须用到getty。
getty是get teletype
的缩写,它是一个Unix
程序,用来连接物理的或虚拟终端,我们需要启动它来监听我们的USB
口来查看是否有活动。getty有很多版本,常见的有agetty
和fgetty
,在我的Linux
中的是agetty
。Linux
下配置串口(USB
转串口)主要分三个部分:
一、创建脚本
创建文件/etc/init/ttyUSB0.conf
,并输入以下内容:
1 | ttyUSB0 - agetty |
注:
#
之后的是注释RUNLEVEL
为Linux
启动模式9600
为串口速率,可更改,但切记:通过串口连接服务器的速率需与其一致ttyUSB0
为插入USB
转串口设备后系统为其分配的文件名,每个人的环境不一样需要随之更改,此设备名可以在/dev
下查看,真实的串口设备分配的名称应该是ttyS0
、ttyS1
等。vt100
为终端模式,常用的还有vt220
二、启动脚本
在Linux
控制台中输入:
1 | sudo start ttyUSB0 |
注:ttyUSB0
是第一步中创建的脚本名称,可更改
三、将脚本加入开机启动
修改/etc/inittab
,在其最后添加
1 | t0:123:respawn:/sbin/agetty -L ttyUSB0 9600 vt100 |
再在`Linux·终端输入
1 | sudo /sbin/telinit q |
做完上面的三个步骤,就可以通过串口来登陆Linux
了。
但是按照如上步骤配置完root
用户是无法通过串口登陆的,因为root
的权限过高,因此收到一定的限制。如果想要让root
用户也可以通过串口登录到服务器,则还需要做如下配置:
四、允许root
用户通过串口登陆
修改/etc/securetty
,添加
1 | ttyUSB0 |
这样,root
用户就可以通过串口登录到Linux
服务器了。
客户端方面比较简单,只需打开支持串口的ssh
工具如putty
,将速率设置与脚本里的一致,并选中windows
电脑所使用的串口设备号即可。
刚接入的时候putty
上可能会出现无登陆提示的情况
不用管,直接输入用户名
这个时候就会有输入密码提示
至此,Linux
下配置串口教程全部完成。