4

如何在 Linux 中连接到串行控制台

 2 years ago
source link: https://os.51cto.com/article/715828.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
e8992d736c08a7b2f87282db1733b454f39dfc.jpg

串行端口连接允许用户在没有显示器的情况下控制系统。下面介绍如何在 Linux 中访问和使用串行控制台。

处理嵌入式 Linux 项目时必不可少的元素之一是通过串行控制台接口访问您的设备。为此,您正在开发嵌入式系统的计算机必须具有串行端口。然而,今天很少有电脑有串口,这就是我们使用 USB 转串口转换器的原因。

最后,您将详细了解什么是串行控制台以及它们如何在 Linux 上工作。

设置 USB 到串行转换器

几乎所有你能在市场上找到的 USB 串行转换器都能被 Linux 自动识别。将任何 USB 转换器插入您的计算机并使用 dmesg 命令找出设备的文件名。

dmesg
f5a3a7f88e8709fd0a09730d8a9014e7c9b5fc.jpg

在上面的示例中,您可以在制造商(manufacturer)部分看到 VirtualBox,因为主机是在 VirtualBox 上运行的 Linux 发行版。在这里,制造商名称将根据您使用的转换器而改变。您还可以看到您正在使用的串行转换器以名称连接到系统,例如ttyUSB0。

您可以通过设备文件/dev/ttyUSB0使用系统识别的串行转换器。根据您使用的发行版,设备文件会自动在/dev目录下创建,显示主要、次要和设备类型。对于 USB 串行转换器,每个同声传译的命名方案通常是ttyUSB0、ttyUSB1和ttyUSBX 。

如果您在应用程序正在使用 USB 串行转换器时移除并重新插入它,系统会向设备发出一个新编号。

串行设备的访问授权

挂载的USB转换器设备文件的默认访问权限通常如下:

ls -l /dev/ttyUSB0
# 输出crw-rw---- 1 root dialout 188, 46 Jul 17 15:34 /dev/ttyUSB0

在检查上述输出时,您可以知道:

  •  行首的字母c表示这是一个基于字符的设备
  •  文件所有者是root用户,该用户有读写权限
  •  文件的组所有者是dialout组,该组中的用户也有读写权限
  •  其余用户对该文件没有任何读写权限

如果您当前以非dialout组成员的普通用户身份登录,则无法读取和写入 USB 串行转换器。要解决此问题,您必须使当前用户成为dialout组的成员或编辑系统上的udev规则文件。

为方便起见,您可以使用第一种技术。首先,使用id命令确定您的用户属于哪些组:

id
4327083933a12115a62589a36baf39a5a02280.jpg

使用adduser或usermod命令将您的用户添加到组中:

# 针对 Fedora
sudo usermod -aG dialout USERNAME
# 针对 Debian
sudo adduser USERNAME dialout
# 针对 Arch
sudo usermod -a -G uucp USERNAME

组成员身份程序现已完成。但是,系统会在图形会话的第一个登录步骤中检查组成员信息,然后将其提供给所有正在运行的进程。

因此,您必须退出当前图形会话,然后重新登录或重新启动计算机使修改生效。完成此操作后,您将拥有对串行转换器设备的读/写访问权限。

如何在 Linux 上连接到串行控制台

当您需要访问计算机或网络控制台时,您可以参考串行控制台应用程序。通常,您需要通过 SSH 访问才能这样做。但是,从软件和硬件的角度来看,在某些情况下,也可以仅使用串行端口访问控制台。

您会在较旧的计算机上最常找到这些类型的示例。以下是一些最适合您的串行控制台应用程序。

使用 Minicom

您可以在您的系统上安装 Minicom,这是一个旧的但仍在工作的应用程序,如下所示:

# 在 Fedora, CentOS 和 RHEL 上
sudo yum install minicom
# 在 Debian 和 Ubuntu
sudo apt-get install minicom
# 在 Arch Linux 上
sudo snap install minicom
970d04c4393a552f20d026f6f73d946c913095.jpg

当您第一次启动应用程序时,它会默认尝试打开一个设备文件,例如/dev/modem。它在找不到文件时终止。要克服这个问题,您可以使用-s参数直接启动应用程序的设置屏幕:

minicom -s
b7fdb8965315d20b51a301907a1ff08c49adbc.jpg

A键设置设备名称,E键设置串口速度。然后当你用Exit 退出时,就可以使用对应的串口了。

238722920762b9aa496771d354483ca4ad55a7.jpg

在应用程序主屏幕上,您可以使用Ctrl + A + O 返回配置屏幕,使用Ctrl + A + X退出应用程序,使用Ctrl + A + W激活换行模式,并使用其他快捷键获取帮助Ctrl + A + Z。

使用 GTKTerm

Minicom 通常由高级 Linux 用户使用,因此不建议初学者使用。Linux 新手可以安装 GTKTerm,一个用于 Linux 的图形串行终端仿真器。您可以使用以下命令在系统上安装应用程序:

# 在 Fedora, CentOS 和 RHEL 上
sudo dnf -y install gtkterm
# 在 Debian 和 Ubuntu 上
sudo apt-get install gtkterm  
# 在 Arch Linux 上
yay -S gtkterm
495f1c6793fc0bb041f989f27317f09fe999ca.jpg

启动应用程序时,您必须通过配置 > 端口菜单设置设备名称和速度参数,如下所示:

e9d4f8268e4ef82f5a5817f1b6ef1ed3c1b3a3.jpg

将设置保存为默认值,方便以后使用。

使用 screen

如果你熟悉多终端管理的 screen,你就会知道你也可以用它来做串口访问。以下是安装它的命令:

# 在 Fedora, CentOS 和 RHEL 上
sudo dnf -y install screen  
# 在 Debian, Ubuntu 和 Linux Mint 上
sudo apt-get -y install screen
# 其他发行版使用 Snap 安装
sudo snap install screen --classic
44c202c4259cf6f56787057386f5b984b79423.jpg

安装后,您可以运行如下命令连接到串行控制台:

screen /dev/ttyUSB0 115500

现在您可以在 Linux 上建立串行端口连接

能够使用串行端口访问您的 Linux 系统是一个非常有用的功能,尤其是当您不想将监视器连接到 SBC(会话边界控制器)时。

由于串行控制台授权在编译时已内置在 Linux 内核中,因此您至少应该对 Linux 内核及其工作有基本的了解。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK