Получаем доступ к консоли VM с помощью virsh

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Сегодня использование виртуальных машин повсеместно. Кто-то на них держит продакшн-сервисы, кто-то тестовые хосты, кто-то раскатывает на них лабораторные работы.
Я сижу на Linux и для виртуализации использую KVM. Иногда у меня нет возможности подключиться к VM через ssh, также невозможно и через virt-manager

- Что делать?
- Использовать virsh console

Окей, давайте посмотрим.

virsh — утилита, из состава библиотеки libvirt, для командной строки Linux, предназначенная для управления виртуальными машинами и гипервизорами KVM и Xen.

Библиотека libvirt используется в качестве интерфейса к различным технологиям виртуализации.

Все, что нам нужно сделать - это предварительно настроить виртуальную машину

Необходимо внести изменения в параметры конфигурации загрузчика GRUB.
У меня на VM установлен Debian 11, конфиг располагается по пути /etc/default/grub

Учтите, что я все настраиваю на свежей системе, если у вас измененный конфиг GRUB, то вносите изменения вручную.
Буду делать заметки для CentOS, под командами Debian, т.к. настройка немного отличается.

Для начала сделаем бэкап конфигурации (Всегда это делаю при изменении конфигов и вам советую)

sudo cp /etc/default/grub /etc/default/grub.default

Передаем ядру параметр вывода в tty
GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0"

sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet console=tty0 console=ttyS0"/g' /etc/default/grub

В CentOS нет строки GRUB_CMDLINE_LINUX_DEFAULT, поэтому добавим её следующей командой:

echo 'GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0"' | sudo tee -a /etc/default/grub

Раскоментируем строку включения консольного режима

sudo sed -i 's/#GRUB_TERMINAL=console/GRUB_TERMINAL=console/g' /etc/default/grub

В CentOS по-умолчанию режим уже активирован в параметре GRUB_TERMINAL_OUTPUT

Укажем настройки serial

echo 'GRUB_SERIAL_COMMAND="serial -unit=0 -speed=115200 -word=8 -parity=no -stop=1"' | sudo tee -a /etc/default/grub

Обновим GRUB

sudo update-grub

Обновление изменений GRUB в CentOS:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Запустим сервис serial-getty с указанным нами ранее ttyS0

sudo systemctl start serial-getty@ttyS0

А также добавим его в автозапуск, чтобы не приходилось стартовать сервис вручную после ребута VM.

sudo systemctl enable serial-getty@ttyS0

Теперь можно пробовать подключиться к VM

Переходим на наш гипервизор и смотрим под каким ID/Name работает VM c помощью команды virsh list.
Стоит учесть, что лучше всего для подключений использовать Name, при перезапусках VM - ID может меняться.

┌[user@sdnv-pc]-(~)
└> virsh list
 Id   Name     State
------------------------
 9    debian   running

Пробуем зайти в консоль VM debian с помощью команды virsh console "Name" и видим сообщение о подключении.

┌[user@sdnv-pc]-(~)
└> virsh console debian
Connected to domain 'debian'
Escape character is ^] (Ctrl + ])

Нажимаем Enter, чтобы попасть в приглашение, логинимся под нашим пользователем VM и проверяем под каким tty мы зашли:

debian login: user
Password: 

user@debian: w
16:23:01 up 4 min,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
user     ttyS0    -                16:22    0.00s  0.16s  0.00s w

Все работает! Теперь можно не бояться за свои виртуалки и всегда иметь доступ к ним из KVM-хоста.

Источник: https://habr.com/ru/post/700196/


Интересные статьи

Интересные статьи

Как часто рано или поздно при решении новой задачи приходит мысль: а нельзя ли для неё переиспользовать код из реализованной ранее аналогичной задачи? Думаю, что в такой момент нами движет что-то сред...
На сегодняшний день Facebook Ads – это самый эффективный инструмент для привлечения потенциальных клиентов и генерации продаж. Это, в свою очередь, приводит к росту конку...
XMage — клиент-серверное приложение для игры в Magic: The Gathering (MTG). XMage начал развиваться еще в начале 2010 года. За это время было выпущено 182 релиза, набралась целая арм...
Компилятор GCC написан с обильным использованием макросов. Очередная проверка кода GCC с помощью PVS-Studio вновь подтверждает мнение нашей команды, что макросы – это плохо. В таком коде тяжело...
Привет, Хабр. Я хочу рассказать об утилите под названием DocumentBuilder, которая позволяет генерировать документы, таблицы и презентации, а также показать, как можно его использовать для реш...