centos连接串口 centos镜像
这篇文章给大家聊聊关于centos连接串口,以及centos镜像对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
CentOS 之小清新minicom使用
在 CentOS系统中,minicom是一个轻量级但功能强大的串口工具,尤其适合调试板卡 ARM SOC时没有网口的情况。让我们一起踏上这趟小清新之旅,了解如何轻松上手并充分利用 minicom。
步骤一:发现并识别串口设备
首先,确保你的 USB转串口设备已连接。通过输入 ls-l/dev/ttyUSB*,你会看到新出现的ttyUSB设备,这就是我们的串口标识。
步骤二:配置串口连接
启动 minicom命令 minicom-s,进入配置界面。按下'A'键,选择对应的 USB设备,然后选择'E'键调整波特率,通常设置为无流控。设置完毕后,按回车键退出配置模式。
设置默认配置并启动
为了方便下次快速连接,记得将刚才的设置保存为默认配置。退出 minicom,只需输入 CTRL+ A X。然后直接运行 minicom,你会按照刚才的默认配置顺利连接到串口。
灵活管理与控制
遇到 minicom被他人占用时,使用 ps-a查找进程号,执行 kill-9强制结束占用进程,轻松解决占用问题。例如,如果进程号为 12345,命令为 kill-9 12345。
告别繁琐,minicom带来的便捷
过去,我们可能需要在一台电脑上通过串口工具远程连接到有板卡的设备,这无疑增加了工作的复杂性。但在 CentOS中,minicom的出现就像一股清风,无需额外的电脑,只需在宿主机上运行,就可高效地进行串口调试。minicom的简洁界面和高效性能,无疑让这个过程变得更加优雅便捷。
LINUX控制台怎么定向到串口终端
利用串口终端作为Linux控制台,可以免去额外的键盘,显示卡和显示器,同时可将Linux主机作为一个任意用途的嵌入式黑匣。那么LINUX控制台怎么定向到串口终端?下面跟着学习啦小编一起来了解一下吧。
LINUX控制台怎么定向到串口终端
目的:台机已经装好Linux,显示器有问题,平时一般都SSH控制,当Linux网络挂的时候,想通过串口来管理。
硬件:台机自带两个串口(上面的是COM1)[under Windows] or ttyS0[under Linux)),笔记本T61p没有串口,买了个USB转串口(具体见下图)。同时需要串口交叉线一根(NULL modem Cable),母对母(公的是针),都是凹口那种。
目标机器:安装的CentOS 5.2 Linux内核2.6.18-92.1.22.el5和2.6.18-92.1.22.el5xen
客户端: Windows XP SP3 IBM OEM.安装USB转串口驱动。
需要把输出定向到串口,一般有下面几处:
BIOS中的设置
GRUB设置
/etc/inittab设置
/etc/securetty设置
BIOS中的设置
BIOS设置的作用我没尝试过,如果是可以连BIOS设置都可以定向到串口,那个强大了。也不知道如何去掉机器需要连键盘的限制。没拿出显示器所以没看我台机的BIOS,不过这个功能一般只有服务器级别的机器有。【注1】台机一般没有串口重定向功能。
GRUB设置
这里的配置是为了把grub菜单定向到串口,这样你就可以在串口操作grub,选择启动项,使用single mode等等。
同时也要给kernel参数加上console选项。
[root@CentOS5~]# cat/boot/grub/menu.lst
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE: You have a/boot partition. This means that
# all kernel and initrd paths are relative to/boot/, eg.
# root(hd0,0)
# kernel/vmlinuz-version ro root=/dev/vg00/lv_root
# initrd/initrd-version.img
#boot=/dev/hdb1
serial--unit=0--speed=9600--word=8--parity=no--stop=1
terminal--timeout=10 serial console
default=2
timeout=20
#splashimage=(hd0,0)/grub/splash.xpm.gz=>这些在console下会工作不正常,注释掉。
#hiddenmenu
title CentOS(2.6.18-92.1.22.el5)
root(hd0,0)
kernel/vmlinuz-2.6.18-92.1.22.el5 ro root=/dev/vg00/lv_root rhgb quiet
initrd/initrd-2.6.18-92.1.22.el5.img
title CentOS Serial[ttyS0]- Console(2.6.18-92.1.22.el5)
root(hd0,0)
kernel/vmlinuz-2.6.18-92.1.22.el5 ro root=/dev/vg00/lv_root console=ttyS0,9600 console=tty0
initrd/initrd-2.6.18-92.1.22.el5.img
title CentOS Console- serial[ttyS0](2.6.18-92.1.22.el5) [get more output in serial console]
root(hd0,0)
kernel/vmlinuz-2.6.18-92.1.22.el5 ro root=/dev/vg00/lv_root console=tty0 console=ttyS0,9600
initrd/initrd-2.6.18-92.1.22.el5.img
title CentOS Xen(2.6.18-92.1.22.el5xen)
root(hd0,0)
kernel/xen.gz-2.6.18-92.1.22.el5
module/vmlinuz-2.6.18-92.1.22.el5xen ro root=/dev/vg00/lv_root rhgb quiet xencons=off
module/initrd-2.6.18-92.1.22.el5xen.img
title CentOS Xen Serial[ttyS0]- Console(2.6.18-92.1.22.el5xen)
root(hd0,0)
kernel/xen.gz-2.6.18-92.1.22.el5
module/vmlinuz-2.6.18-92.1.22.el5xen ro root=/dev/vg00/lv_root xencons=off console=ttyS0,9600 console=tty0
module/initrd-2.6.18-92.1.22.el5xen.img
title CentOS Xen Console- serial[ttyS0](2.6.18-92.1.22.el5xen)
root(hd0,0)
kernel/xen.gz-2.6.18-92.1.22.el5
module/vmlinuz-2.6.18-92.1.22.el5xen ro root=/dev/vg00/lv_root xencons=off console=tty0 console=ttyS0,9600
module/initrd-2.6.18-92.1.22.el5xen.img
title Other
rootnoverify(hd0,0)
chainloader+1
后面的console有顺序关系,详见下文【注2】,我常用串口所以console=tty0 console=ttyS0,9600这个顺序的输出信息比较多。
因为我的机器有xen的内核,xen默认情况下会把串口做为xencons,所以这里设置xencons=off.
When multiple consoles are listed output is sent to all consoles and input is taken from the last listed console. The last console is the one Linux uses as the/dev/consoledevice.
/etc/inittab设置
系统系统后,需要在串口上监听请求,所以要有个类似服务器的程序(agetty, mgetty etc)。
/etc/inittab中添加
s0:2345:respawn:/sbin/agetty-L-f/etc/issue.serial 9600 ttyS0 vt100
#s1:2345:respawn:/sbin/agetty-L-f/etc/issue.serial 9600 ttyS1 vt100
#S0:2345:respawn:/sbin/mgetty-r-x 9 ttyS0==> mgetty用来调试比较好,log也丰富。
What is a getty?
A getty is is a program that opens a tty port, prompts for a login name, and runs the/bin/login command. It is normally invoked by init.
所以其他程序就不能再来占用ttyS0了,串口是独占模式的吧。
vt100:
vt100 is the terminal emulation. You can use others, but VT100 is the most common or"standard". Another widely used termial type is VT102.
OK都可以了,可以重启server了。这里如果想测试下串口线,推荐先在Linux启动下mgetty,因为他的debug信息和log比较丰富,适合排错和测试。
#mgetty–r–x 9 ttyS0
Log在/var/log/mgetty*中。
/etc/securetty设置
因为一般我们都是使用root登陆串口来维护,所以需要设置root可以在COM1和COM2登陆。
在/etc/securetty中添加:
ttyS0
ttyS1
Windows客户端连接可以用超级终端或者Putty。
注意启动server的时候,putty就应该去连接串口了,这样才可以看到所有信息。
本来正常情况下,接下去kernel的boot信息应该也会打到串口的。但是没有,确定是Xen内核的关系。
系统启动起来后,过了init,agetty就起来了,这个时候就可以通过串口登陆了。(在/etc/securetty中需要添加ttyS0)
看过“ LINUX控制台怎么定向到串口终端”的人还看了:
linux系统的tty,pts等终端概念
ttyS0~ ttyS3(串行端口终端)指的是电脑的各个物理接口(这些都是串口,不是并口),外部的终端通过这些物理接口与电脑连接,从而实现和电脑进行交互。
例如:dmesg|grep tty可以查看开启的接口(串口)
目前连接远程服务器或者直接在服务器上面操作等都是通过创建虚拟终端的形式。比如pts/1和tty1虚拟终端,其中tty表示直接登录机器生成的而pts表示远程连接生成的。其中远程连接是通过sshd服务进行创建session会话和bash进程(所以可以看到有sshd进程,同时虚拟终端可以创建多个,这是依赖ptmx功能,sshd通过与ptmx通讯,ptmx在和相对应的pts通讯从而达到多个虚拟终端的效果)。
例如:在centos系统中的图像界面中打开的terminal就是一个pts但是整个图形界面是一个tty,centos切换到命令行界面后输入tty命令时输出就是tty1或ttyn了,这时候的命令行界面与图形界面的运行级别是一样的,通过命令行创建的所有进程都是属于tty1终端的。
注意: tty就是ttyS的虚拟版本,只是不需要通过外部线路进行连接了。远程连接服务器需要sshd服务,sshd和tty没有联系,远程连接是因为本地有终端模拟器,本机连接就需要内核直接模拟一个模拟器了,所有远程是pts,本机是tty。
从上面的流程中可以看出来对用户空间的程序来说它们没有区别,都是一样的;从内核角度来看pts的另一端连接的是ptmx,而tty的另一端连接的是内核的终端模拟器,ptmx和终端模拟器都只是负责维护会话和转发数据包;再看看ptmx和内核终端模拟器的另一端,ptmx的另一端连接的是用户空间的应用程序,如sshd、tmux等,而内核终端模拟器的另一端连接的是具体的硬件,如键盘和显示器。
SSH远程访问---重点
这里的Terminal可能是任何地方的程序,比如windows上的putty,所以不讨论客户端的Terminal程序是怎么和键盘、显示器交互的。由于Terminal要和ssh服务器打交道,所以肯定要实现ssh的客户端功能。这里将建立连接和收发数据分两条线路解释,为了描述简洁,这里以sshd代替ssh服务器程序:
建立连接:
1.Terminal请求和sshd建立连接。
2.如果验证通过,sshd将创建一个新的session。
3.调用API(posix_openpt())请求ptmx创建一个pts,创建成功后,sshd将得到和ptmx关联的fd,并将该fd和session关联起来。
4.同时sshd创建shell进程,将新创建的pts和shell绑定。
收发消息:
1.Terminal收到键盘的输入,Terminal通过ssh协议将数据发往sshd。
2.sshd收到客户端的数据后,根据它自己管理的session,找到该客户端对应的关联到ptmx上的fd。
3.往找到的fd上写入客户端发过来的数据。
4.ptmx收到数据后,根据fd找到对应的pts(该对应关系由ptmx自动维护),将数据包转发给对应的pts。
5.pts收到数据包后,检查绑定到自己上面的当前前端进程组,将数据包发给该进程组的leader。
6.由于pts上只有shell,所以shell的read函数就收到了该数据包。
7.shell对收到的数据包进行处理,然后输出处理结果(也可能没有输出)。
8.shell通过write函数将结果写入pts。
9.pts将结果转发给ptmx。
10.ptmx根据pts找到对应的fd,往该fd写入结果。
11.sshd收到该fd的结果后,找到对应的session,然后将结果发给对应的客户端。
SSH+ Screen/Tmux
常用Linux的同学应该对screen和tmux不陌生,通过它们启动的进程,就算网络断开了,也不会受到影响继续执行,下次连上去时还能看到进程的所有输出,还能继续接着干活。 这种情况要稍微复杂一点,不过原理都是一样的,前半部分和普通ssh的方式是一样的,只是pts/0关联的前端进程不是shell了,而是变成了tmux客户端,所以ssh客户端发过来的数据包都会被tmux客户端收到,然后由tmux客户端转发给tmux服务器,而tmux服务器干的活和ssh的类似,也是维护一堆的session,为每个session创建一个pts,然后将tmux客户端发过来的数据转发给相应的pts。由于tmux服务器只和tmux客户端打交道,和sshd没有关系,当终端和sshd的连接断开时,虽然pts/0会被关闭,和它相关的shell和tmux客户端也将被kill掉,但不会影响tmux服务器,当下次再用tmux客户端连上tmux服务器时,看到的还是上次的内容。