如何在 Linux 中連接到串行控制臺
串行端口連接允許用戶在沒有顯示器的情況下控制系統。下面介紹如何在 Linux 中訪問和使用串行控制臺。
處理嵌入式 Linux 項目時必不可少的元素之一是通過串行控制臺接口訪問您的設備。為此,您正在開發嵌入式系統的計算機必須具有串行端口。然而,今天很少有電腦有串口,這就是我們使用 USB 轉串口轉換器的原因。
最后,您將詳細了解什么是串行控制臺以及它們如何在 Linux 上工作。
設置 USB 到串行轉換器
幾乎所有你能在市場上找到的 USB 串行轉換器都能被 Linux 自動識別。將任何 USB 轉換器插入您的計算機并使用 dmesg 命令找出設備的文件名。
dmesg
在上面的示例中,您可以在制造商(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
使用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
當您第一次啟動應用程序時,它會默認嘗試打開一個設備文件,例如/dev/modem。它在找不到文件時終止。要克服這個問題,您可以使用-s參數直接啟動應用程序的設置屏幕:
minicom -s
A鍵設置設備名稱,E鍵設置串口速度。然后當你用Exit 退出時,就可以使用對應的串口了。
在應用程序主屏幕上,您可以使用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
啟動應用程序時,您必須通過配置 > 端口菜單設置設備名稱和速度參數,如下所示:
將設置保存為默認值,方便以后使用。
使用 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
安裝后,您可以運行如下命令連接到串行控制臺:
screen /dev/ttyUSB0 115500
現在您可以在 Linux 上建立串行端口連接
能夠使用串行端口訪問您的 Linux 系統是一個非常有用的功能,尤其是當您不想將監視器連接到 SBC(會話邊界控制器)時。
由于串行控制臺授權在編譯時已內置在 Linux 內核中,因此您至少應該對 Linux 內核及其工作有基本的了解。