Примечание: ответ объединяет несколько решений с разных сайтов; на данный момент у меня нет возможности их проверить.
SysVinit
Пред- 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"
включит оба дисплей и серийный номер):
## 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 "…"
чтобы он работал правильно.