Skip to content

Работа с серийными логами

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

Совет

Если при создании виртуальной машины вы использовали стандартный образ ОС от MWS, то настройки не требуются.

  1. Откройте файл конфигурации GRUB /etc/default/grub и измените значение параметра GRUB_CMDLINE_LINUX таким образом:

    cfg
    GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200n8"

    Здесь:

    • console=tty1 — стандартный виртуальный терминал.

    • console=ttyS0серийный порт /dev/ttyS0. Поскольку порт указан последним, это приоритетное устройство вывода.

    • 115200n8 — спецификация порта /dev/ttyS0:

      • 115200 — скорость передачи данных;
      • n — отсутствие проверки на четность;
      • 8 — количество бит в одном байте данных.
  2. Обновите GRUB:

  3. Перезапустите ВМ, чтобы изменения вступили в силу.

Просмотреть серийные логи

Для просмотра серийных логов нужна роль compute.editor.

Вывести текстовое сообщение в серийный порт

  1. Выполните команду:

    bash
    echo "Message to serial port <порт>" | sudo tee <порт>

    Здесь порт — путь к порту:

    • порт 1 — /dev/ttyS0;
    • порт 2 — /dev/ttyS1;
    • порт 3 — /dev/ttyS2;
    • порт 4 — /dev/ttyS3.

Вывести информацию из Docker-контейнера в серийный порт

Для примера используется порт /dev/ttyS2.

  1. Установите и настройте Docker:

  2. Создайте Dockerfile со следующим содержанием:

    FROM alpine:latest
    
    # Устанавливается пакет procps для доступа к расширенной команде uptime
    RUN apk add --no-cache procps
    
    # 1. Запускается бесконечный цикл (while true)
    # 2. Каждые 5 секунд выводится текущая дата и загрузка системы (uptime)
    # 3. Вывод перенаправляется в порт /dev/ttyS2
    ENTRYPOINT ["/bin/sh", "-c", "while true; do echo \"[$(date)] Load: $(uptime)\" > /dev/ttyS2; sleep 5; done"]
  3. Соберите Docker-образ и запустите контейнер:

    bash
    docker build -t serial-log-app . && \
    sudo docker run -d --privileged --name serial-log-app --volume /dev/ttyS2:/dev/ttyS2 serial-log-app