SerialLogin: различия между версиями

Материал из ALT Linux Wiki
мНет описания правки
Строка 59: Строка 59:
== настройка getty ==
== настройка getty ==


Годятся mgetty и agetty. Ставятся из соответствующих пакетов.
=== Установка ===
 
Годятся mgetty и agetty. Ставятся из соответствующих пакетов. Для настройки входа вам нужно установить одну из этих утилит. Сделайте это обычным методом (apt-get, aptitude, synaptic).
=== Установка mgetty ===
В ALT Linux вход по модемным линиям (здесь я их не рассматриваю) и последовательным портам обслуживает утилита '''mgetty'''. Для настройки входа вам нужно установить её. Сделайте это обычным методом (apt-get, aptitude, synaptic).


=== /etc/inittab ===
=== /etc/inittab ===
Нужно поправить файл {{path|/etc/inittab}}, указать init-у запускать mgetty на нужных портах. Формат файла довольно прост и хорошо комментирован (в частности, есть пример и для mgetty). Подробности можно уточнить в inittab(5).
Нужно поправить файл {{path|/etc/inittab}}, указать init-у запускать mgetty на нужных портах. Формат файла довольно прост и хорошо комментирован (в частности, есть пример и для mgetty). Подробности можно уточнить в inittab(5).


Например, это может выглядеть так:
Например, это может выглядеть так (mgetty):
<pre>
<pre>
~ # grep -iE '^[^#].*mgetty' /etc/inittab
~ # grep -iE '^[^#].*mgetty' /etc/inittab
Строка 74: Строка 72:
</pre>
</pre>


Эти параметры (с которыми init запустит mgetty для первых двух последовательных портов) означают, что на портах /dev/ttyS[01] (mgetty сам умеет добавлять /dev/) ожидаются прямые (-r, то есть, с других компьютеров/терминалов, в противоположность модемным) соединения со скоростью 9600 бод (-s) и с уровнем отладочной информации равным нулю (-x). Изменения вступят в силу лишь после прочтения файла init-ом (в результате команды {{cmd|telinit q}} от суперпользователя или перезагрузки машины).
Эти параметры (с которыми init запустит mgetty для первых двух последовательных портов) означают, что на портах /dev/ttyS[01] (mgetty сам умеет добавлять /dev/) ожидаются прямые (-r, то есть, с других компьютеров/терминалов, в противоположность модемным) соединения со скоростью 115200 бит/с (-s) и с уровнем отладочной информации равным нулю (-x). Изменения вступят в силу лишь после прочтения файла init-ом (в результате команды {{cmd|telinit q}} от суперпользователя или перезагрузки машины).


Дополнительную краткую информацию по вызову mgetty можно почерпнуть из mgetty(8).
Дополнительную краткую информацию по вызову mgetty можно почерпнуть из mgetty(8).
agetty настраивается аналогично, но командная строка отличается:
T0:23:respawn:/sbin/agetty -L ttyS0 115200 vt100


=== /etc/mgetty+sendfax/mgetty.config ===
=== /etc/mgetty+sendfax/mgetty.config ===

Версия от 11:45, 28 октября 2016

Как настроить вход на машину через последовательный порт (Serial Login)

Для чего может понадобиться вход на Linux-машину через последовательный порт? Да мало ли для чего — например, если других способов связи нет, или для подключения к «безголовой» машине, конфигурация сети которой в общем случае неизвестна. В общем, бывает нужно.

Напомню, что последовательные порты в Linux именуются в виде файлов /dev/ttyS* (на месте звёздочки может быть любой номер порта, начиная с нуля). Иногда, если используются адаптеры COM2USB, порты могут именоваться /dev/ttyUSB* (тоже начиная с нуля).

Задача состоит из 4-х этапов, каждый из которых может быть необязательным, в зависимости от конечной цели.

  1. Настройка редиректа в BIOS. У десктопных материнских плат, как правило, отсутствует. Позволяет видеть процесс загрузки BIOS и управлять им.
  2. Настройка редиректа у загрузчика. Позволяет видеть сообщения загрузчика и управлять им.
  3. Настройка редиректа у ядра. Позволяет видеть сообщения ядра в процессе загрузки (включая kernel panic).
  4. Настройка getty. Позволяет получить доступ к загруженной ОС.

На всех этапах следует выбирать одинаковую скорость порта.

Настройка BIOS

Как выше было написано, это есть не в каждом BIOS. Практически всегда встречается в BIOS серверных материнских плат Intel. Следует найти соответствующий раздел и настроить.

Настройка загрузчика

Grub

Может случиться так, что до входа в систему дело не дойдёт из-за неправильно настроенной загрузки. Существует способ взаимодействовать с загрузчиком GRUB по последовательному порту. Для этого в файл /boot/grub/menu.lst (или /boot/grub/grub.conf, смотря как у вас) нужно записать:

serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=30 console serial

При этом во время загрузки GRUB 30 секунд будет выводить и на VGA-консоль и в последовательный порт сообщение "press any key". Откуда поступит первое нажатие клавиши, та консоль и будет считаться рабочей. Туда выведется стандартное меню GRUB, в котором обычно можно выбрать ядро или отредактировать параметры, передаваемые ядру.

Lilo

В общие параметры загрузчика следует добавить

serial=0,115200n8

0 - номер порта com1, 1 - номер порта com2. К сожалению, это переключит весь ввод/вывод на RS-232, на мониторе сообщения загрузчика отображаться не будут. USB-serial с Lilo использовать невозможно.

Настройка ядра

Загрузчик не влияет на то, как будет выводить сообщения ядро. Для него существует отдельный параметр console, который может иметь различное содержание в зависимости от конкретной ситуации. Добавляется в соответствии с используемым загрузчиком.

Пример для Grub (с подсказками от Сергеея Власова):

title ALTLinux Sisyphus
        root (hd0,0)
        kernel /vmlinuz-smp ro root=/dev/hda2 console=uart,io,0x3f8,115200n8 fastboot
        initrd /initrd-smp.img

Пример для Lilo:

image="/boot/vmlinuz-2.6.32-ovz-el-alt145"
        initrd="/boot/initrd-2.6.32-ovz-el-alt145.img"
        label="2.6.32-ovz-el-alt145"
        addappend=" console=ttyS0,115200"
        root="UUID=c0de2323-72f0-4d8a-bcd0-6bc4815dfac1"
        read-only
        optional

настройка getty

Установка

Годятся mgetty и agetty. Ставятся из соответствующих пакетов. Для настройки входа вам нужно установить одну из этих утилит. Сделайте это обычным методом (apt-get, aptitude, synaptic).

/etc/inittab

Нужно поправить файл /etc/inittab, указать init-у запускать mgetty на нужных портах. Формат файла довольно прост и хорошо комментирован (в частности, есть пример и для mgetty). Подробности можно уточнить в inittab(5).

Например, это может выглядеть так (mgetty):

~ # grep -iE '^[^#].*mgetty' /etc/inittab
T3:23:respawn:/sbin/mgetty -r -s 115200 -x 0 ttyS0
T4:23:respawn:/sbin/mgetty -r -s 115200 -x 0 ttyS1

Эти параметры (с которыми init запустит mgetty для первых двух последовательных портов) означают, что на портах /dev/ttyS[01] (mgetty сам умеет добавлять /dev/) ожидаются прямые (-r, то есть, с других компьютеров/терминалов, в противоположность модемным) соединения со скоростью 115200 бит/с (-s) и с уровнем отладочной информации равным нулю (-x). Изменения вступят в силу лишь после прочтения файла init-ом (в результате команды telinit q от суперпользователя или перезагрузки машины).

Дополнительную краткую информацию по вызову mgetty можно почерпнуть из mgetty(8).

agetty настраивается аналогично, но командная строка отличается:

T0:23:respawn:/sbin/agetty -L ttyS0 115200 vt100

/etc/mgetty+sendfax/mgetty.config

Это необязательный шаг. Всё поведение mgetty контролируется ключами командной строки, однако если вы захотите задать параметры в отдельном файле (и перенести туда все специфичные для портов параметры), то для этого есть файл /etc/mgetty+sendfax/mgetty.config. Здесь вы можете задать как параметры, общие для всех портов, так и индивидуальные параметры линий. Подробности (а так же множество другой информации по последовательному входу) можно уточнить в полном руководстве — info mgetty.

Проверка

Для проверки надо присоединить к только что настроенному порту кабель (COM2USB или DB-9 «мама-мама», для соединения с другим компьютером, либо другие кабеля, для другого оборудования), запустить терминальную программу (cu, minicom, cutecom), указать ей параметры соединения — порт (на машине откуда соединяемся) и скорость (указанную при запуске mgetty) и дать команду на соединение. В случае успеха на экран ничего не выводится — надо попробовать нажать несколько буквенно-цифовых (не функциональных) клавиш, чтобы mgetty распознал, что его зовут. Если всё хорошо — mgetty откликнется приглашением login:. Можно вводить имя пользователя и пароль, как обычно. Заметьте, что по умолчанию ALT Linux не пускает пользователя root через последовательные порты. Вы можете это изменить, поправив файл /etc/securetty.

Systemd

Всё вышеизложенное касается настройки для классического SySV-init. В случае использования systemd достаточно дать от суперпользователя команду ln -s /lib/systemd/system/serial-getty@.service /etc/systemd/system/getty.target.wants/serial-getty@ttyS0.service (Команда systemctl enable getty@ttyS0 по умолчанию не действует, т.к. нет отдельного service-файла). Аналогично для других консолей. Это запустит agetty, требуемый systemd, при загрузке. Заметьте, что файл /etc/securetty действует и тут. Параметры запуска getty можно посмотреть в /lib/systemd/system/getty@.service.

Дополнительное чтение.