我想要做的是將我的 PC 連接到 DEC vt320 終端,並能夠將 Linux 控制台輸出到它,這樣我就能夠在終端機中輸入命令,並讓它在螢幕上發送回應。我想從 telnet 連接到東西,但我不知道如何透過串行連接。我的串列連接是/dev/ttyS0
答案1
看起來 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 [email protected]
此命令將建立文件(如果需要)並在編輯器中開啟它。
例如,要將序列埠速度偵測鎖定為 57600 bps,您可以將以下三行寫入覆蓋檔案:
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' 57600 %I $TERM
第一行指定我們要覆寫[Service]
自動產生的服務文件部分中的內容,第二行指定我們要覆寫其ExecStart
行而不僅僅是新增另一個行,第三行是ExecStart
具有所需連接埠速度的新行和/或agetty
管理終端的進程的其他選項。
Unix 世界中此類進程的傳統名稱是getty
,Linux 通常使用增強的 (A替代/Autobauding)序列埠版本:agetty
.
答案2
最簡單的答案是在串行設備上啟動終端登入服務,如 telcoM 的答案所示。這不會改變Linux控制台。將 Linux 控制台移至串行設備更容易實施,但會產生更多副作用。
只需console=ttyS0
在核心的命令列中使用引導程式(在您的情況下可能是 GRUB)提供的命令。
systemd 提供的生成器將看到這一點並自動啟用serial-getty@ttyS0
服務。但是,此外,所有實際的安慰來自核心和寫入 的程式的輸出/dev/console
現在將轉到您的 DEC VT320。
不幸的是,VT320不支援顏色。 (VT340 可以,而且只有 16 個。)
這是不幸的,因為現在很多程式只是硬連線 ECMA-48 顏色控制序列,包括那些向/dev/console
. systemd 套件中的程式都這樣做,只要環境進程#1的,他們去讀,才不是包含TERM=dumb
。其他程序做出不同的決定,通常是基於他們自己的流程環境,有些不根據終端做出決定類型根本沒有,因為作者從未想過該程式的輸出可能是具有真正單色終端的串行設備。
那麼你也必須確保內核命令列指定TERM=dumb
,這不是對 VT320 的正確描述,而且嚴重不足。
進一步閱讀
- https://unix.stackexchange.com/a/447098/5132
- https://unix.stackexchange.com/a/475043/5132
- 喬納森·德博因·波拉德 (2018)。Linux 核心虛擬終端設備的手冊頁。提案。
- 喬納森·德博因·波拉德 (2018)。
linux-console
。小吃指南。軟體. - 喬納森·德博因·波拉德 (2018)。
linux-vt
。小吃指南。軟體.
- 喬納森·德博因·波拉德 (2018)。