Подключите Minitel1B к Ubuntu 20.04

Вопрос или проблема

Я пытаюсь использовать Минитель в качестве консоли для подключения к моему Ubuntu. Я прочитал много информации об этом, но, похоже, это работает со старыми версиями Ubuntu. Эти два файла:

  • etc/inittab
  • etc/gettydefs

… не работают для меня!

Мой inittab:

1:2345:respawn:/sbin/agetty ttyUSB0 4800v23

Мой gettydefs:

4800v23# B4800 CS7 PARENB -PARODD GLOBAL # B4800 ISTRIP CS7 PARENB -PARODD GLOBAL BRKINT IGNPAR ICRNL IXON IXANY OPOST ONLCR CREAD HUPCLISIG ICANON ECHO ECHOE ECHOK #@S login: #4800v23

Результат “sudo lsusb -v”:

Bus 003 Device 002: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass          255 Vendor Specific Class
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x1a86 QinHeng Electronics
  idProduct          0x7523 HL-340 USB-Serial adapter
  bcdDevice            2.64
  iManufacturer           0 
  iProduct                2 USB Serial
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0027
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               98mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           3
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      1 
      bInterfaceProtocol      2 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0020  1x 32 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               1
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)

Сегодня я могу сделать это:

sudo stty -F /dev/ttyUSB0 4800 parenb cs7 hupcl cread ignpar clocal ixon ixoff opost  onlcr isig echoe echok echoctl echoke

и это:

echo "Hello Minitel" > /dev/ttyUSB0

… выводит Hello Minitel на моем экране Minitel. Но я не могу получить приглашение на моем миниителе.

Спасибо за вашу помощь, и извините за мой “плохой английский” (я старый французский разработчик 😉

/etc/inittab и /etc/gettydefs были заменены системой systemd на многих системах. Вы можете создать модуль systemd для запуска agetty на /dev/ttyUSB0, используя команду

sudo systemctl edit serial-getty@ttyUSB0

Это запустит ваш редактор (установленный в переменной окружения EDITOR) на временном файле, полном закомментированных строк. Добавьте 3 строки

[Service]
ExecStart=
ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 4800 - $TERM

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

/etc/systemd/system/[email protected]/override.conf

и если вы выполните

systemctl cat serial-getty@ttyUSB0

вы должны увидеть ваши строки в конце, переопределяющие стандартный ExecStart. Теперь вы можете запустить agetty, запустив модуль:

sudo systemctl start serial-getty@ttyUSB0

Вы можете узнать, работает ли он, с помощью

systemctl status serial-getty@ttyUSB0

Вы можете включить его для запуска при перезагрузке:

sudo systemctl enable serial-getty@ttyUSB0

Я не знаю, как добавить какие-либо специфические настройки stty, кроме скорости передачи, используя systemd, но, возможно, значения по умолчанию будут подходящими.

Ответ или решение

Подключение устройства Minitel1B к Ubuntu 20.04 для использования его в качестве консоли требует некоторой настройки из-за различий в управлении системными службами между более старыми и новыми версиями Ubuntu. В системах с init, таких как старые версии Ubuntu, конфигурация выполнялась с использованием файлов /etc/inittab и /etc/gettydefs. Однако, в более новых системах, включая Ubuntu 20.04, управление системными службами осуществляется с помощью systemd, что накладывает свои особенности на процесс настройки. Давайте рассмотрим, как можно настроить соединение вашего устройства Minitel1B с системой Ubuntu 20.04.

Теория

Система управления службами systemd внедряет концепцию unit-файлов для управления службами и демонами. Один из видов unit-файлов — это service-файл, который описывает команду, используемую для запуска службы, а также такие параметры, как условия перезапуска, переменные среды и зависимости от других служб. В нашей ситуации нам будет нужно создать и настроить такой systemd unit для управления процессом agetty, который будет использован для работы с Minitel1B.

AGetty — это утилита, используемая для управления терминальными линиями. Она отвечает за инициализацию терминала и предъявление приглашения для ввода имени пользователя, после чего передает управление программе login, которая запрашивает пароль и устанавливает сеанс пользователя. В контексте использования Minitel1B, agetty будет отвечать за установку соединения и обеспечение возможности ввода команд с Minitel.

Пример

  1. Редактирование systemd unit для agetty:

    Вам нужно создать или отредактировать конфигурацию для serial-getty@ttyUSB0 через systemd. Это делается с помощью команды:

    sudo systemctl edit serial-getty@ttyUSB0

    Эта команда откроет ваш текстовый редактор в режиме редактирования unit-файлов systemd. Изменения, которые вы сделаете, будут сохранены в /etc/systemd/system/[email protected]/override.conf.

  2. Добавление конфигурации agetty:

    Добавьте следующие строки в отредактированный файл, чтобы настроить agetty для работы с вашим адаптером USB-Serial и устройством Minitel1B:

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 4800 - $TERM

    Эти строки очищают текущую настройку ExecStart и устанавливают новую, которая будет запускать agetty с необходимыми параметрами.

  3. Инициализация и тестирование:

    После того как изменения внесены, запустите службу с помощью команды:

    sudo systemctl start serial-getty@ttyUSB0

    Для проверки статуса службы и подтверждения ее работы, используйте:

    systemctl status serial-getty@ttyUSB0

    С помощью этой команды вы увидите, активна ли служба и функционирует ли она без ошибок.

  4. Автозапуск службы при загрузке:

    Чтобы обеспечить запуск agetty каждый раз при перезапуске системы:

    sudo systemctl enable serial-getty@ttyUSB0

Применение

После выполнения описанных выше шагов, устройство Minitel1B должно начать функционировать как консоль для вашей системы Ubuntu 20.04. Вы сможете вводить команды на Minitel, и они будут обрабатываться вашей системой, как если бы команды вводились непосредственно в терминале Ubuntu.

Несмотря на то, что данная инструкция касается специфики подключения устройств через старые протоколы и интерфейсы, она показывает, как современные системы с systemd обеспечивают гибкость и позволяют адаптировать существующие инструменты для новых условий. При возникновении дополнительных проблем с настройкой или специфичными потребностями, документация systemd и man-страницы для agetty предоставят исчерпывающее руководство по доступным параметрам конфигурации.

Оцените материал
Добавить комментарий

Капча загружается...