Консоль · 4 min read · Feb 02, 2026

Настройка последовательной консоли

Настройка последовательной консоли

Этот учебник покажет вам, как настроить последовательную консоль на системе Linux и подключиться к ней через кабель нулевого модема. Это довольно полезно, если ваш сервер Linux находится в безголовой конфигурации (без клавиатуры или монитора), так как это позволяет вам легко получить консоль на системе, если с ней возникают какие-либо проблемы (особенно сетевые проблемы, когда SSH недоступен). В конце меню GRUB появится через последовательное соединение, как и сообщения о загрузке (вывод при загрузке системы). Я использую Debian Etch на сервере и Ubuntu Edgy на своем клиенте, хотя это должно работать на любой дистрибутиве Linux.

Первые шаги

Одной из самых важных вещей, которую нам нужно проверить, является наличие последовательного порта на сервере :). Посмотрите на заднюю панель вашего сервера и посмотрите, есть ли у него 9-контактный последовательный порт. Большинство материнских плат имеют либо один, либо два последовательных порта. На системе проверьте, распознает ли Linux последовательные порты:

root@server:~# dmesg | grep tty
serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

Это показывает, что в моей системе есть один последовательный порт, ttyS0 (запомните это на будущее).

Конфигурация GRUB

Следующий шаг — отредактировать конфигурацию GRUB, чтобы он отправлял свои сообщения на последовательную консоль. Одной из самых важных вещей является установка пароля, иначе любой может подключить последовательный кабель, отредактировать строку конфигурации GRUB во время загрузки системы (нажав клавишу “e”) и получить доступ root. Когда установлен пароль, интерактивное редактирование меню будет отключено, если не введен правильный пароль. Чтобы установить пароль, нам сначала нужно получить его зашифрованную версию.

Запустите grub и используйте команду “md5crypt” для шифрования пароля:

grub> md5crypt

Пароль: **
Зашифрованный: $1$AlfMq1$FxRolxW5XvSLAOksiC7MD1

Скопируйте зашифрованную версию пароля (она нам нужна для следующего шага), а затем введите quit для выхода.

Теперь нам нужно отредактировать конфигурацию GRUB. Отредактируйте файл /boot/grub/menu.lst (нажав nano /boot/grub/menu.lst) и найдите этот раздел:

## password ['--md5'] passwd
   # Если используется в первом разделе файла меню, отключите все интерактивное редактирование
   # управление (редактор записей меню и командная строка) и записи, защищенные
   # командой 'lock'
   # например, password topsecret
   #      password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/
   # password topsecret

Ниже этого добавьте:

password --md5 $1$AlfMq1$FxRolxW5XvSLAOksiC7MD1
serial --unit=0 --speed=38400 --word=8 --parity=no --stop=1   
terminal --timeout=10 serial console

Замените $1$AlfMq1$FxRolxW5XvSLAOksiC7MD1 на зашифрованную форму вашего пароля. Вторая строка говорит GRUB инициализировать последовательный порт на 38,400 бит в секунду (такая же скорость, как и у стандартной консоли), 8 бит данных, без четности и 1 стоп-бит (в основном, стандартные настройки). Обратите внимание, что –unit=0 означает, что будет использоваться первый последовательный порт (ttyS0). Если вы используете второй последовательный порт (ttyS1), измените его на –unit=1. Последняя строка говорит GRUB показывать свое меню как на последовательной линии, так и на консоли (мониторе).

Теперь нам также нужно отредактировать разделы ядра, чтобы они выводили сообщения на последовательную консоль. В конце каждой строки ядра добавьте console=tty0 console=ttyS0,38400n8 (замените ttyS0 на правильный последовательный порт). В моем случае это выглядело так:

title           Debian GNU/Linux, kernel 2.6.18-4-vserver-686
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-4-vserver-686 root=/dev/hda3 ro console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-4-vserver-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-4-vserver-686 (single-user mode)
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-4-vserver-686 root=/dev/hda3 ro single console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-4-vserver-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-3-686
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-3-686 root=/dev/hda3 ro console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-3-686
   savedefault
title           Debian GNU/Linux, kernel 2.6.18-3-686 (single-user mode)
   root            (hd0,1)
   kernel          /vmlinuz-2.6.18-3-686 root=/dev/hda3 ro single console=tty0 console=ttyS0,38400n8
   initrd          /initrd.img-2.6.18-3-686  
   savedefault  
 

Сохраните и выйдите, нажав CTRL+O (для “вывода” или сохранения файла), Enter (для подтверждения имени файла) и CTRL+X (чтобы действительно выйти).

Разрешить вход через последовательную консоль

Теперь меню GRUB будет появляться через последовательное соединение, но мы все еще не слушаем входы через него (на нем еще не запущен “getty”). Отредактируйте файл /etc/inittab и найдите этот раздел:

# Пример того, как установить getty на последовательной линии (для терминала)
#
#T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
#T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

Ниже этого (я не люблю редактировать стандартные строки :P) добавьте:

T0:2345:respawn:/sbin/getty -L ttyS0 38400 vt100

И это все. Ваш сервер теперь будет показывать меню GRUB через последовательную консоль и также разрешать входы (как только он завершит загрузку).

Давайте протестируем это!

Теперь, когда все готово, нам нужно настроить наш клиент. Я использую GtkTerm на своем ноутбуке, хотя любая программа терминала должна работать (если она может использовать последовательный порт. На Windows должен работать HyperTerminal). У моего ноутбука нет последовательного порта, поэтому я использую адаптер USB на последовательный порт, который купил на eBay (он создает устройство ttyUSB0). Установите вашу программу терминала на следующие настройки:

  • Порт (Linux): ttyS0 или ttyS1 (если у вашей системы есть последовательный порт), или ttyUSB0 (если вы используете преобразователь USB на последовательный).
  • Порт (Windows): COM1 или COM2
  • Бит в секунду: 38400
  • Биты данных: 8
  • Четность: Нет
  • Стоп-биты: 1
  • Управление потоком: Нет, хотя аппаратное (RTS/CTS) должно работать правильно

Перезагрузите сервер (возможно, через SSH-соединение или как вы редактировали конфигурацию GRUB выше), а затем подключите кабель нулевого модема, когда он запускается (т.е. на экране BIOS). Нажмите любую клавишу, когда будет предложено, и вы получите что-то вроде:

Как использовать последовательную консоль - меню GRUB

Это означает, что GRUB работает нормально :). Нажмите Enter, и он должен загрузиться, показывая все сообщения в окне терминала. После загрузки это будет выглядеть примерно так:

Как использовать последовательную консоль - Загрузка

Наконец, войдите в систему и проверьте, что все работает нормально:

Как использовать последовательную консоль - Вошел в систему

Поздравляю, все настроено и работает отлично.

Надеюсь, вам понравился этот учебник! :)

Daniel15 (Даниэль Ло Нигро)
http://www.daniel15.com/
http://www.dansoftaustralia.net/

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.