Фон
У меня есть терминал Wyse WY-50, который по разным причинам, связанным с нольстагией и производительностью (действительно!), Я бы хотел подключить к своему Macbook и использовать в качестве терминала для входа. Я использую OSX 10.10 El Capitan.
Сам терминал имеет два порта сзади, один с маркировкой MODEM и один с маркировкой AUX. Из руководства обычно устройство, к которому вы подключаетесь, использует порт MODEM, а другое вспомогательное устройство, например принтер, использует порт AUX. Это оба порта DB25.
Порт MODEM подключен к моему компьютеру Mac через конвертер DB25-DB9, а оттуда к компьютеру Mac через адаптер USB-DB9 с использованием набора микросхем Prolific.
Мне пришлось установить драйвер для конвертера, чтобы стать доступным. После этого я получил два устройства, созданные в /dev/
, это cu.usbserial
и tty.usbserial
.
Я следовал приведенному здесь руководству, чтобы настроить LaunchDaemon Plist для запуска сеанса getty
подключенного к терминалу, поскольку, очевидно, вы не можете просто отредактировать /etc/ttys
или запустить getty
вручную в современных OSX.
Сам терминал установлен в режим эмуляции VT100 со скоростью 19200 бод, с контролем потока DTR при получении и без контроля потока при отправке (единственная опция для управления потоком отправки - XON/XOFF
)
трудность
Эту настройку оказалось трудно устранить, поскольку неправильная связь с последовательным устройством имеет тенденцию "зависать", требуя перезагрузки, чтобы снова стать пригодной для использования.
Во всех случаях вызовы getty
в файле или вручную имели вид /usr/libexec/getty std.19200 cu.usbserial
Каждый раз, когда вы видите "Нет вывода", это означает, что терминал был скользким, ничего не показывал и не реагировал на нажатия клавиш.
- Запуск
getty
вручную: нет вывода. (Кажется, чтобы проверить руководство) - Добавление строки в
/etc/ttys
: не выводится. (Опять же, проверяет руководство)
Здесь я попробовал метод plist, добавив в /Library/LaunchDaemons
именем console.plist
со следующим содержимым:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>KeepAlive</key>
<false/>
<key>Label</key>
<string>serialconsole</string>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/getty</string>
<string>std.19200</string>
<string>cu.usbserial</string>
</array>
<key>StandardErrorPath</key>
<string>/tmp/serialconsole.err</string>
<key>StandardOutPath</key>
<string>/tmp/serialconsole.out</string>
</dict>
</plist>
После загрузки и запуска задания выполнялись следующие действия, каждый раз при попытке остановить, отредактировать, выгрузить, перезагрузить и запустить задание по порядку:
- Управление потоком на терминале установлено в NONE: Нет выхода.
- Различные скорости передачи данных, установленные для команды
getty
и терминала (от 9600 до 19200): не выводятся. - Использование устройства
tty.usbserial
вместо устройстваcu.usbserial
в сочетании с приведенным выше описанием . Нет вывода. - Перемещение последовательной линии на терминале в порт AUX и его перенастройка для использования порта AUX для связи: ЧТО-ТО ПРОИСХОДИТ!
На другой порт
Таким образом, я могу получить базовую связь, если компьютер подключен к терминалу через порт AUX. С настройками следующим образом:
getty
работает подlaunchd
программ с выше PLIST- Терминал личности установлен на
VT100
- Управление потоком отключено
Однако это приводит к большому количеству мусорных символов на экране терминала. Само приглашение на вход в систему чистое, но нажатие клавиши return всегда приводит к небольшому количеству мусора. После входа в систему этот мусор имеет тенденцию соединяться до конца команд, что делает сеанс почти ненадежным и непригодным для использования.
С настройками, как описано выше, вот пример того, что я имею в виду на выводе терминала:
После инициализации порта вы можете увидеть шум, а затем "чистый" экран входа в систему. Я ввожу свое имя пользователя и нажимаю Return на клавиатуре терминала. Вместо того, чтобы опускать строку и запрашивать пароль, вы видите UTHx
, а затем приглашение на ввод пароля в той же строке.
При вводе моего пароля (который не отображается должным образом) отображается сообщение "Последний вход в систему", а затем полностью перехваченная оболочка. Это похоже на то, как будто символы перевода строки искажены.
Если я нажимаю Ctrl+l на терминале, последняя строка сбрасывается сама, и я вижу чистое приглашение (не изображено). Тем не менее, мусор возвращается в следующий раз, когда я нажимаю кнопку возврата на терминале.
Мой терминал установлен на /bin/sh
.
Еще одно предложение, которое я прочитал, состояло в том, чтобы попытаться использовать команду reset
чтобы очистить дисплей от заведомо исправных настроек. Ввод сброса и нажатие клавиши return дает мне чистую ошибку "Неизвестный тип терминала: su (-1)". С подсказкой для Terminal type?
,
Изменение настройки "индивидуальности" на терминале, связанной со сбросом выше, на другие многообещающие опции только изменяет "вид" мусора, который я вижу - ни один из них не является чистым.
- VT100 (как показано)
- UNIX CONSOLE (много символов высокого уровня)
- WY-50 (актуальная модель терминала: множество символов высокой четкости разбросано по всему экрану)
Аппаратные средства?
Я так не думаю. Точно такая же настройка адаптера / терминала / и т.д. Была подключена к машине с Ubuntu Linux, с настройкой getty
как описано, и с Just Worked®, без шума и мусора на экране.
Кроме того, использование стороннего приложения Serial для простой записи простого текста в терминал работает без проблем - без мусора, и переводы строк обрабатываются правильно.
Что-то в конфигурации Mac OS с getty
вызывает проблемы с этим терминалом.
Есть идеи?
Обновление 1
Я нашел способ получить полезную терминальную сессию. Запустите screen
, указывающий на последовательный порт примерно так:
screen /dev/cu.usbserial 57600
А потом внутри экрана, нажмите Ctrl + A,:, а затем введите:
exec ::: /usr/libexec/getty std.57600
Et voila, на терминале появляется чистая и полезная оболочка для входа!
Однако этот метод все еще имеет некоторые недостатки.
Строка подсказки удваивается. то есть каждый раз, когда вы нажимаете клавишу возврата, появляется подсказка, подсказка, новая строка и другая подсказка. В строке все еще остается много шума - любые команды, которые выводят много текста одновременно, как ls
приводят к искаженному выводу.
На фото ниже:
Программы убеждены, что тип терминала установлен на screen
, даже если я делаю условие export term='vt100'
- это означает, что большинство полноэкранных приложений терминала, таких как vim
и mutt
сбрасывают много управляющих кодов, которые терминал не может обработать, обычно его подвешивают к точке сброса, чтобы получить ввод снова.
Я все еще ищу способ иметь терминал Just Work при входе в систему.