Я хочу подключить свой ПК к терминалу 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 бит/с, вам нужно записать следующие три строки в файл переопределения:
[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' 57600 %I $TERM
Первая строка указывает, что мы хотим переопределить данные в [Service]
разделе автоматически сгенерированного файла службы, вторая указывает, что мы хотим переопределить его ExecStart
строку, а не просто добавить еще одну, а третья строка — это новая ExecStart
строка с желаемой скоростью порта и/или другими параметрами для agetty
процесса, который управляет терминалом.
Традиционное название такого процесса в мире Unix — getty
, а в Linux обычно используется расширенное (аальтернатива/аutobauding) версия для последовательных портов: 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).