如何在 Linux 中連接到串行控制臺
串行端口連接允許用戶在沒有顯示器的情況下控制系統(tǒng)。下面介紹如何在 Linux 中訪問和使用串行控制臺。
處理嵌入式 Linux 項目時必不可少的元素之一是通過串行控制臺接口訪問您的設(shè)備。為此,您正在開發(fā)嵌入式系統(tǒng)的計算機必須具有串行端口。然而,今天很少有電腦有串口,這就是我們使用 USB 轉(zhuǎn)串口轉(zhuǎn)換器的原因。
最后,您將詳細(xì)了解什么是串行控制臺以及它們?nèi)绾卧?Linux 上工作。
設(shè)置 USB 到串行轉(zhuǎn)換器
幾乎所有你能在市場上找到的 USB 串行轉(zhuǎn)換器都能被 Linux 自動識別。將任何 USB 轉(zhuǎn)換器插入您的計算機并使用 dmesg 命令找出設(shè)備的文件名。
dmesg
在上面的示例中,您可以在制造商(manufacturer)部分看到 VirtualBox,因為主機是在 VirtualBox 上運行的 Linux 發(fā)行版。在這里,制造商名稱將根據(jù)您使用的轉(zhuǎn)換器而改變。您還可以看到您正在使用的串行轉(zhuǎn)換器以名稱連接到系統(tǒng),例如ttyUSB0。
您可以通過設(shè)備文件/dev/ttyUSB0使用系統(tǒng)識別的串行轉(zhuǎn)換器。根據(jù)您使用的發(fā)行版,設(shè)備文件會自動在/dev目錄下創(chuàng)建,顯示主要、次要和設(shè)備類型。對于 USB 串行轉(zhuǎn)換器,每個同聲傳譯的命名方案通常是ttyUSB0、ttyUSB1和ttyUSBX 。
如果您在應(yīng)用程序正在使用 USB 串行轉(zhuǎn)換器時移除并重新插入它,系統(tǒng)會向設(shè)備發(fā)出一個新編號。
串行設(shè)備的訪問授權(quán)
掛載的USB轉(zhuǎn)換器設(shè)備文件的默認(rèn)訪問權(quán)限通常如下:
ls -l /dev/ttyUSB0
# 輸出crw-rw---- 1 root dialout 188, 46 Jul 17 15:34 /dev/ttyUSB0
在檢查上述輸出時,您可以知道:
- 行首的字母c表示這是一個基于字符的設(shè)備
- 文件所有者是root用戶,該用戶有讀寫權(quán)限
- 文件的組所有者是dialout組,該組中的用戶也有讀寫權(quán)限
- 其余用戶對該文件沒有任何讀寫權(quán)限
如果您當(dāng)前以非dialout組成員的普通用戶身份登錄,則無法讀取和寫入 USB 串行轉(zhuǎn)換器。要解決此問題,您必須使當(dāng)前用戶成為dialout組的成員或編輯系統(tǒng)上的udev規(guī)則文件。
為方便起見,您可以使用第一種技術(shù)。首先,使用id命令確定您的用戶屬于哪些組:
id
使用adduser或usermod命令將您的用戶添加到組中:
# 針對 Fedora
sudo usermod -aG dialout USERNAME
# 針對 Debian
sudo adduser USERNAME dialout
# 針對 Arch
sudo usermod -a -G uucp USERNAME
組成員身份程序現(xiàn)已完成。但是,系統(tǒng)會在圖形會話的第一個登錄步驟中檢查組成員信息,然后將其提供給所有正在運行的進(jìn)程。
因此,您必須退出當(dāng)前圖形會話,然后重新登錄或重新啟動計算機使修改生效。完成此操作后,您將擁有對串行轉(zhuǎn)換器設(shè)備的讀/寫訪問權(quán)限。
如何在 Linux 上連接到串行控制臺
當(dāng)您需要訪問計算機或網(wǎng)絡(luò)控制臺時,您可以參考串行控制臺應(yīng)用程序。通常,您需要通過 SSH 訪問才能這樣做。但是,從軟件和硬件的角度來看,在某些情況下,也可以僅使用串行端口訪問控制臺。
您會在較舊的計算機上最常找到這些類型的示例。以下是一些最適合您的串行控制臺應(yīng)用程序。
使用 Minicom
您可以在您的系統(tǒng)上安裝 Minicom,這是一個舊的但仍在工作的應(yīng)用程序,如下所示:
# 在 Fedora, CentOS 和 RHEL 上
sudo yum install minicom
# 在 Debian 和 Ubuntu
sudo apt-get install minicom
# 在 Arch Linux 上
sudo snap install minicom
當(dāng)您第一次啟動應(yīng)用程序時,它會默認(rèn)嘗試打開一個設(shè)備文件,例如/dev/modem。它在找不到文件時終止。要克服這個問題,您可以使用-s參數(shù)直接啟動應(yīng)用程序的設(shè)置屏幕:
minicom -s
A鍵設(shè)置設(shè)備名稱,E鍵設(shè)置串口速度。然后當(dāng)你用Exit 退出時,就可以使用對應(yīng)的串口了。
在應(yīng)用程序主屏幕上,您可以使用Ctrl + A + O 返回配置屏幕,使用Ctrl + A + X退出應(yīng)用程序,使用Ctrl + A + W激活換行模式,并使用其他快捷鍵獲取幫助Ctrl + A + Z。
使用 GTKTerm
Minicom 通常由高級 Linux 用戶使用,因此不建議初學(xué)者使用。Linux 新手可以安裝 GTKTerm,一個用于 Linux 的圖形串行終端仿真器。您可以使用以下命令在系統(tǒng)上安裝應(yīng)用程序:
# 在 Fedora, CentOS 和 RHEL 上
sudo dnf -y install gtkterm
# 在 Debian 和 Ubuntu 上
sudo apt-get install gtkterm
# 在 Arch Linux 上
yay -S gtkterm
啟動應(yīng)用程序時,您必須通過配置 > 端口菜單設(shè)置設(shè)備名稱和速度參數(shù),如下所示:
將設(shè)置保存為默認(rèn)值,方便以后使用。
使用 screen
如果你熟悉多終端管理的 screen,你就會知道你也可以用它來做串口訪問。以下是安裝它的命令:
# 在 Fedora, CentOS 和 RHEL 上
sudo dnf -y install screen
# 在 Debian, Ubuntu 和 Linux Mint 上
sudo apt-get -y install screen
# 其他發(fā)行版使用 Snap 安裝
sudo snap install screen --classic
安裝后,您可以運行如下命令連接到串行控制臺:
screen /dev/ttyUSB0 115500
現(xiàn)在您可以在 Linux 上建立串行端口連接
能夠使用串行端口訪問您的 Linux 系統(tǒng)是一個非常有用的功能,尤其是當(dāng)您不想將監(jiān)視器連接到 SBC(會話邊界控制器)時。
由于串行控制臺授權(quán)在編譯時已內(nèi)置在 Linux 內(nèi)核中,因此您至少應(yīng)該對 Linux 內(nèi)核及其工作有基本的了解。