Linux

通過串口發送linux控制台

  • March 13, 2020

我想要做的是將我的 PC 連接到我的終端 DEC vt320 並能夠將 Linux 控制台輸出到它,並且我能夠在終端中輸入命令並讓它在螢幕上發送回复。我想從 telnet 連接到東西,但我不知道如何通過串列連接。我的串列連接是 /dev/ttyS0

看起來 Mint 19.3 使用systemd,所以除非 Mint 修改了systemd父發行版(Ubuntu 和最終 Debian)的配置,否則以下命令應該可以完成這項工作。

要立即啟動串列埠以進行終端式登錄訪問:

sudo systemctl start serial-getty@ttyS0 

要使配置在重新啟動後保持不變:

sudo systemctl enable serial-getty@ttyS0

執行這些命令中的第一個後,終端上應出現登錄提示。如果沒有,請在終端上按 Enter 鍵一次或兩次:它有助於檢測終端執行的數據傳輸速度。

(串列埠速度有時也稱為波特率,儘管該術語僅適用於調製解調器連接和涉及數模調製的類似連接,而不適用於普通的數字數據傳輸。)

串列連接終端的預設systemd配置包括串列埠速度自動檢測,速度為每秒 115200、38400 和 9600 位。您可以使用命令確認這一點systemctl cat serial-getty@ttyS0。它將為該串列埠輸出自動生成的單元文件。除其他外,它應該包含啟動將管理終端的實際程序的這一行:

ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 %I $TERM

如果自動串列埠速度檢測對您不起作用,或者如果您想指定一個未包含在預設列表中的速度值,您可能需要為此 systemd 服務創建一個覆蓋文件:

sudo systemctl edit serial-getty@ttyS0.service

此命令將創建文件(如有必要)並在編輯器中為您打開它。

例如,要將串列埠速度檢測鎖定為 57600 bps,您可以將以下三行寫入覆蓋文件:

[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' 57600 %I $TERM

第一行指定我們要覆蓋[Service]自動生成的服務文件部分中的內容,第二行指定我們要覆蓋其ExecStart行而不只是添加另一個,第三行是ExecStart具有所需埠速度的新行和/或agetty管理終端的程序的其他選項。

在 Unix 世界中,此類程序的傳統名稱是.Linux 通常使用它getty增強(替代/ utobauding)版本作為串列埠:.agetty

引用自:https://unix.stackexchange.com/questions/572648