4

Фон

У меня есть терминал 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 приводят к искаженному выводу.

На фото ниже:

Искаженный 'ls' и шумный экран

Программы убеждены, что тип терминала установлен на screen , даже если я делаю условие export term='vt100' - это означает, что большинство полноэкранных приложений терминала, таких как vim и mutt сбрасывают много управляющих кодов, которые терминал не может обработать, обычно его подвешивают к точке сброса, чтобы получить ввод снова.

Я все еще ищу способ иметь терминал Just Work при входе в систему.

1 ответ1

7

После долгих раздумий я наконец-то нашел правильную комбинацию вещей, которую можно использовать для полноценного терминала.

tl; dr: основанный на FTDI USB / последовательный адаптер, терминал установлен на VT220 с управлением потоком в обе стороны, специальные настройки в /etc/gettytab

Детали

аппаратные средства

Я получил новый USB/ последовательный кабель. У этого есть FTDI, а не чипсет Prolific. Это важно, поскольку OSX поставляется с драйверами FTDI в комплекте, а не требует установки сторонних драйверов Prolific. Это значительно упростило поиск и устранение неисправностей, поскольку последовательный порт перестал зависать после каждого эксперимента, что означает, что больше не нужно перезагружаться, чтобы снова стать пригодным для использования.

Если вы собираетесь попробовать это сами, то кабелем, который я использовал, был последовательный адаптер StarTech Industrial USB RS232. Это было в сочетании со случайным адаптером DB9/DB25 и сменой пола, поскольку порты на задней панели терминала являются гнездовыми.

Примечание. В предыдущей версии этого руководства предлагалось использовать другой кабель - этот конкретный кабель позволит нам использовать порт модема на терминале, исправляя некоторые различные проблемы с отображением!

Этот кабель должен быть подключен к порту MODEM на терминале.

Конфигурация системы

Не обращайте внимания на любое руководство, которое предлагает вам использовать /etc/ttys , так как этот файл игнорируется в современных версиях OS X. Это будет путь для Linux/BSD, но не здесь.

Мне было интересно узнать, как установить тип терминала для входа в систему, так как, как описано выше, просто с помощью std.19200 который предоставляется в /etc/gettytab оставил для терминала значение su по какой-то причине, и ничего не работало.

Я добавил строку следующим образом:

std.ttyUSB:\
    :np:im=\r\n:sp#57600:tt=vt220:

Это устанавливает баннер входа в систему в простой CRLF, устанавливает скорость линии 57600 бод и, самое главное, устанавливает терминал vt220 . Это станет важным позже.

Теперь нам нужно на самом деле начать это. Как описано в другом месте, вы не можете просто запустить getty , так как это ограничено launchd . Мы должны создать и загрузить демон-лист.

В /Library/LaunchDaemons я добавил serialconsole.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>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>serialconsole</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/libexec/getty</string>
        <string>std.ttyUSB</string>
        <string>cu.usbserial-AI02GVBH</string>
    </array>
</dict>
</plist>

Если вы сделаете это самостоятельно, третья строка почти наверняка будет другой, так как это серийный номер адаптера. Вторая строка ссылается на строку, которую мы только что добавили в /etc/gettytab . Также обратите внимание, что для KeepAlive значение true - это означает, что при выходе из процесса (скажем, мы вышли из системы) появится новый экземпляр. Без этого вам придется вручную начинать работу.

Настройки терминала

Наконец, сам терминал должен быть настроен. Это Wyse WY50, но он может эмулировать многие другие типы терминалов. Я считаю, что режим VT220 дает лучший опыт.

Чтобы войти в режим настройки на терминале из заводских настроек, нажмите Shift + Setup.

Нажав F1, чтобы войти в меню DISP , я установил:

  • Колонны до 132
  • строки до 42,
  • Autopage OFF
  • 80/132 CLR ON. (Очищает экран при изменении режима персонажа)

F2 на общий экран.

  • Личность установлена на VT220-8 важно!
  • Scrl установлен на Jump (прокрутка экрана идет до смешного медленно при других настройках)
  • RCV CR установлен в CR (передает только CR, а не CRLF)
  • Enhance установлен на ON (принимает расширенные управляющие коды)
  • Autoscrl установлен на ON (говорит сам за себя - прокручивает экран, а не перезаписывает его)
  • Монитор выключен
  • Распознать DEL установлен на ON

F3 на экран KEYCODE

  • Код ключа установлен в ASCII
  • Угловой ключ установлен в META (также известный как Alt)

F4 на экране COMM

Более супер важные вещи:

  • Связь установлена на FDX (полный дуплекс)
  • MDM RC HSK установлен на Оба (управление потоком приема)
  • Send Ack установлен на On
  • MDM XMT HSK установлен в Xon-Xoff

Еще один - F5 на экране PORTS

  • MDM BAUD RATE установлен на 57600
  • Данные AUX / Четность установлены на 8 / Нет
  • Стоповые биты AUX установлены на 1

Все остальное я оставил на заводских настройках.

Нажмите F12, затем Пробел, чтобы установить для «Сохранить» значение «Да», и затем F12 еще раз, чтобы сохранить настройки.

Собираем все вместе

Мы готовы к работе. Убедитесь, что терминал включен и подключен к порту, убедитесь, что настройки, как описано выше, как gettytab и созданный вами файл plist.

Загружаем созданный plist в launchd:

launchctl load -w /Library/LaunchDaemons/serialconsole.plist

И, наконец, начать это:

launchctl start serialconsole.plist

И через мгновение у вас должно появиться приглашение для входа в систему на вашем терминале! Некоторые фотографии:

Вход в систему

Бег топ

Глюки дисплея

Вы можете заметить, что некоторые приложения по-прежнему выводят мусор на экран, особенно если они делают что-то необычное, например, полужирный текст или определенные символы ASCII. Самые последние машины, включая Mac, используют UTF-8 для своего набора символов. Но этот почтенный стеклянный терминал понятия не имеет, что это такое! Вам нужно будет установить для локали соответствующую устаревшую кодовую страницу для вашего региона. В США это en_US.ISO-8859-1 . Посмотрите на вывод locale и введите команду export LC_ALL='en_US.ISO-8859-1' в сценарий входа, который проверяет вашу переменную $TERM . Вы действительно не хотите устанавливать эту систему широко, но только на сеансах, где используется ваш стеклянный терминал.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .