Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1703568
  • 博文数量: 358
  • 博客积分: 2180
  • 博客等级: 大尉
  • 技术积分: 1810
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-17 13:47
文章分类

全部博文(358)

文章存档

2016年(17)

2015年(55)

2014年(9)

2013年(67)

2012年(181)

2011年(29)

分类: LINUX

2012-07-05 17:19:57

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

  串口终端特别适合用在不方便接显示器和键盘鼠标的 机器上,特别是用在用作

  、等用途的 linux 系统上。配置好串口终端后,可以拆掉系统的显示卡,用RS232 线缆连接受控机器(配置好串口终端的 Linux 机器)和控制机器,然后在控制机器上通过超级终端、minicom 等就可以操作受控机器了。

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

  1、首先找到计算机的串口命名

  执行命令:

  dmesg | grep tty

  将得到类似以下的输出

  serial8250: ttyS0/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 ,让启动信息也输出到串口。如果启动信息不需要输出到串口,

  则忽略这一步

  打开 //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。 使用 upstart 替代了 sysvinit,并且其他的发行版也有

  采用 upstart 的( 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 文档。

阅读(976) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~