Примечание: ответ объединяет несколько решений с разных сайтов; на данный момент у меня нет возможности их проверить.
SysVinit
Pre- systemd
Linux может использовать sysvinit /etc/inittab
для порождения getty
на различных терминалах. Пример строки может выглядеть так (взято из этого старого руководства ):
s0:2345:respawn:/sbin/getty -L 115200 ttyS0 vt102
Выскочка
Если ваша ОС использует upstart
, процедура отличается. Например, есть следующее руководство :
Создайте файл с именем,
/etc/init/ttyS0.conf
содержащим следующее:# ttyS0 - getty # # This service maintains a getty on ttyS0 from the point the system is # started until it is shut down again. start on stopped rc RUNLEVEL=[12345] stop on runlevel [!12345] respawn exec /sbin/getty -L 115200 ttyS0 vt102
Попросить
upstart
начатьgetty
sudo start ttyS0
Systemd
В соответствии с этим сайтомsystemd
решение может быть столь же просто, как
Чтобы использовать последовательную консоль, просто используйте
console=ttyS0
в командной строке ядра, иsystemd
она автоматически запуститсяgetty
для вас.
Вы, вероятно, настроите свой GRUB2 для этого. Проанализируйте, что говорит Arch Wiki, и при необходимости настройте его на свой дистрибутив:
Чтобы grub включил последовательную консоль, откройте
/etc/default/grub
в редакторе. ИзменитеGRUB_CMDLINE_DEFAULT
строку, чтобы запустить консоль/dev/ttyS0
. Обратите внимание, что в приведенном ниже примере мы установили две консоли; один включенtty0
и один на последовательном порту.GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,38400n8"
Теперь нам нужно указать grub, где находится консоль и какую команду запустить, чтобы включить последовательную консоль (обратите внимание, как указано выше для ядра Linux, можно добавить несколько терминалов ввода / вывода в grub, например
GRUB_TERMINAL="console serial"
, активировать как display, так и serial):## Serial console GRUB_TERMINAL=serial GRUB_SERIAL_COMMAND="serial --speed=38400 --unit=0 --word=8 --parity=no --stop=1"
Восстановите
grub.cfg
файл с помощью следующей команды:grub-mkconfig -o /boot/grub/grub.cfg
После перезагрузки
getty
будет прослушивать/dev/ttyS0
, ожидая38400
бода,8
битов данных, без проверки четности и одного стоп-бита. Когда Arch загрузится,systemd
автоматически запуститgetty
сеанс для прослушивания на том же устройстве с теми же настройками.
Оба сайта согласны с тем, что если вы не хотите, чтобы GRUB2 слушал на последовательном устройстве, а хотели getty
слушать только после загрузки, вам понадобится что-то вроде
systemctl enable serial-getty@ttyS0.service systemctl start serial-getty@ttyS0.service
По запросу, по требованию
В случае каких-либо проблем помните, что getty
это просто программа, она может быть запущена по требованию или из rc.local
. Обратитесь к man getty
подробностям. Я думаю, что ваша первая попытка может быть как
sudo getty -L 115200 ttyS0 vt102
(Изменить) Это отзыв от OP, он может помочь пользователям с подобными проблемами:
Я должен был сделать так,
sudo su -c "…"
чтобы он работал правильно.