配置实现通过串口(com 口、RS232 接口)终端控制 Linux 系统

转载 2012年03月21日 08:47:40
  开始之前,请确认机器有串口(com口, RS232接口),如果没有,那就没有办法达到通过串口控制机器的目的了。当然,也可以额外给机器安装一个带串口的 PCI 模块,然后想办法将模块驱动起来(内核默认能驱动就最好了),这样机器就有可用的串口了。

       串口终端特别适合用在不方便接显示器和键盘鼠标的 linux 机器上,特别是用在用作
      交换机、路由器等用途的 linux 系统上。配置好串口终端后,可以拆掉系统的显示卡,用RS232 线缆连接受控机器(配置好串口终端的 Linux 机器)和控制机器,然后在控制机器上通过超级终端、minicom 等就可以操作受控机器了。                                                          

      下面的步骤讲述如何配置一台串口终端控制的 Linux 机器,即受控机器。


1、首先找到计算机的串口命名
    执行命令:
            dmesg | grep tty
     将得到类似以下的输出
            serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
            00:0c: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
     ttyS0 便是串口命名,如果有多个串口,还会有 ttyS1 等等


2、检查是使用 agetty 还是 getty 命令
     有的系统没有 getty 命令, 那初始化虚拟终端时就要使用 agetty 命令,
     最好使用绝对路径 /sbin/getty 或者 /sbin/agetty


3、配置 grub ,让启动信息也输出到串口。如果启动信息不需要输出到串口,
    则忽略这一步
     打开 /boot/grub/grub.conf (也可能是其他路径) 找到以下面字符开始的一行
           kernel /vmlinuz-*** ro root=LABEL=/
     修改成以下形式
           kernel /vmlinuz-*** ro root=LABEL=/ console=ttyS0,115200 console=tty0
     即添加了相关参数
           console=ttyS0,115200n8 console=tty0
     ttyS0 是串口命名,115200 是波特率,无校验,数据位 8 ;同时指定启动信息也要
     输出到第一个终端 tty0


4、配置 init, 让其初始化串口终端。这里分两种情况: 老版本的 init 和 upstart

     4.1、老版本的 init (sysvinit)
              打开 /etc/inittab , 如果出现以下内容,则可以确认是老版本的 init,否则
              请看 4.2
                    1:2345:respawn:/sbin/mingetty tty1
                    2:2345:respawn:/sbin/mingetty tty2
                    3:2345:respawn:/sbin/mingetty tty3
                    4:2345:respawn:/sbin/mingetty tty4
                    5:2345:respawn:/sbin/mingetty tty5
                    6:2345:respawn:/sbin/mingetty tty6
              添加一行初始化串口的内容即可,添加后如下:
                    1:2345:respawn:/sbin/mingetty tty1
                    2:2345:respawn:/sbin/mingetty tty2
                    3:2345:respawn:/sbin/mingetty tty3
                    4:2345:respawn:/sbin/mingetty tty4
                    5:2345:respawn:/sbin/mingetty tty5
                    6:2345:respawn:/sbin/mingetty tty6
                    co:2345:respawn:/sbin/agetty ttyS0 115200 vt102
            注意如果系统没有 /sbin/agetty, 则要改成 /sbin/getty 或其它。vt102 是
             常用的 Linux 虚拟终端

     4.2、新的 upstart。ubuntu 使用 upstart 替代了 sysvinit,并且其他的发行版也有
           采用 upstart 的(fedora 9 和之后的版本)
            打开 /etc/inittab, 如果没有出现 4.1 中的内容,则说明系统使用的是 upstart
           进入 /etc/event.d/ 目录, 创建文件 /etc/event.d/ttyS0 , 并加入以下内容:
######################################################################
# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on runlevel 2
start on runlevel 3
start on runlevel 4
start on runlevel 5

stop on runlevel 0
stop on runlevel 1
stop on runlevel 6

respawn
exec /sbin/agetty -L 115200 ttyS0 vt102
######################################################################
        保存退出即可


5、赋予串口终端 root 登录权限
    在文件 /etc/securetty 末尾加入如下一行(注意行前面没有空格)
           ttyS0
     加入上面一行后, root 将可以直接通过串口终端登录系统,否则只有普通用户可以
     通过串口终端登录系统


6、注意
     串口命名(ttyS0 ttyS1 等)一定要和系统识别的一致,不能想当然乱编。
     确认系统有 /sbin/agetty, /sbin/getty 或其他初始化终端的命令,有哪个就用哪个。
     终端波特率设置都要一致,用 115200 则全部都要用 115200. 据我的经验,9600有一
     次就是不行,原因未知。可用的波特率如下
            300/600/1200/2400/4800/9600/19200/38400/57600/115200/230400 等等
     如果确认配置没错, 但就是无法工作, 可以换不同的波特率尝试一下 :)


7、配置好后,重启系统,用其他 windows 机器的超级终端或者 linux 机器的 minicom 连接即可。
     记得设置好波特率,无校验,数据位 8
     连接时两端都用 RS232 线缆(console 线,购买交换机、路由器都会随机带的那种线缆)即可。

8、关于 grub
      通过步骤 3 配置的 grub, 只能让部分启动信息输出到串口终端,包括 grub 菜单接口在
     内的另外一部分信息都无法输出到串口终端。要让 grub 完整的支持串口终端,需要重新编译
     grub, 相关内容请参照完整的 grub 文档:
            http://www.gnu.org/software/grub/manual/grub.html
            http://www.gnu.org/software/grub/manual/grub.html#Serial-terminal
            http://www.gnu.org/software/grub/manual/grub.html#Preset-Menu

Linux下sdio设备扫描过程

前言本文基于Linux version 3.10.52版本代码分析sdio设备的扫描过程,同时选择sdio wifi设备作为分析对象,在分析过程中,附带上sdio的协议内容,帮助初学人员学习sdio协...
  • zjli321
  • zjli321
  • 2016年07月28日 19:39
  • 2762

配置实现通过串口(com 口、RS232 接口)终端控制 Linux 系统

开始之前,请确认机器有串口(com口, RS232接口),如果没有,那就没有办法达到通过串口控制机器的目的了。当然,也可以额外给机器安装一个带串口的 PCI 模块,然后想办法将模块驱动起来(内核默认能...
  • yuyin86
  • yuyin86
  • 2012年03月21日 08:47
  • 1038

通过串口终端操作开发板

1、Win7没有超级终端的问题?我们可以用SecureCRT来进行代替,免安装的exe文件,可以达到超级终端的效果。2、超级终端连接开发板波特率设置?选用115200进行连接3、用超级终端连接开发板调...
  • victoryjack
  • victoryjack
  • 2015年09月12日 10:47
  • 1412

通过RS232串口控制LG电视

该文章探讨了如何利用串口通信(RS232)控制LG电视,并用qt编程实现了一个LG电视的控制软件。...
  • shallen320
  • shallen320
  • 2015年04月08日 06:39
  • 3538

Linux系统SCSI磁盘扫描机制解析及命令实例

介绍 Linux系统扫描SCSI磁盘有几种方式?Linux新增LUN之后,能否不重启主机就认出设备?如果安装了PowerPath,动态添加/删除LUN的命令是什么?本文总结了Linux主机对磁盘设备...
  • jiaping0424
  • jiaping0424
  • 2016年06月28日 16:40
  • 3416

Linux RS-232 程式設計

chapter 6 Linux RS-232 程式設計   6-1 終端機介面 終端機介面又稱為TTY介面,用來讓Linux系統透過RS-232串列埠連接數據機,通過電話線路與遠端的電腦系統相連...
  • wangpengqi
  • wangpengqi
  • 2012年08月15日 15:02
  • 1823

UATR与RS232以及COM端口的关系

UART作为硬件来看,它是通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),是电脑硬件的一部分,将资料由串行传输(Serial commu...
  • bytxl
  • bytxl
  • 2015年10月13日 19:58
  • 1184

python实现控制COM口

使用RS232串口线或者是RS232转USB的这一类的接口,会需要com口作为接口来进行输入输出调式, 写了个脚本来控制COM口,用到了Python内建的serial库 代码如下: # ...
  • runheartt
  • runheartt
  • 2016年11月21日 13:14
  • 882

【转自EMC中文支持论坛】Linux系统SCSI磁盘扫描机制解析及命令实例

Linux系统SCSI磁盘扫描机制解析及命令实例   转载请在文首保留原文出处:EMC中文支持论坛 本位链接为:https://community.emc.com/docs/DOC-18...
  • msdnchina
  • msdnchina
  • 2015年08月28日 22:53
  • 1097

ubuntu下载串口调试工具,查看串口信息

原文地址:http://blog.csdn.net/xuyuefei1988/article/details/8660974 相关文章 1、Ubuntu linux中怎么查看自己的串口连接...
  • xqhrs232
  • xqhrs232
  • 2016年03月21日 21:36
  • 2599
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:配置实现通过串口(com 口、RS232 接口)终端控制 Linux 系统
举报原因:
原因补充:

(最多只允许输入30个字)