背景
串口是物理连接,相比于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下配置串口教程全部完成。