Виртуализировать в нескольких TTY (VT*)

Вопрос или проблема

Я хочу получить виртуальную машину в TTY (VT*) на полноэкранном режиме, как GDM3 может использовать TTY (VT*) для графической части Linux.

Я хочу, чтобы DISPLAY (который воспринимается как вывод графического сервера, здесь — ВМ) перенаправлялся в TTY (VT*), а не в окно, как обычно.

Это создаст впечатление, что компьютер запускает несколько ОС одновременно, но на самом деле это ядро Linux, которое виртуализирует различные ОС, которые мы можем видеть на разных TTY (VT*).

Вы знаете, TTY (VT*) в CTRL + ALT + Fi.


Хорошо.

Хотелось бы получить возможное решение


Не хорошо.

Не то, что нужно

И чтобы развить комментарий mosvy:

Если вы хотите переключаться между виртуальными терминалами с помощью CtrlAltFi и видеть разные рабочие столы на каждом виртуальном терминале, тогда вам нужно запустить несколько X серверов, по одному для каждого VT, где вы хотите видеть рабочий стол.

Эти X серверы должны работать на хосте (не в ВМ). Вы можете запустить X серверы напрямую с помощью startx, но чаще X серверы запускаются из менеджера дисплея (DM). Существует несколько менеджеров дисплея (например, xdm, kdm, gdm, lightdm и другие), так что выясните, что использует ваша дистрибуция, и настройте его.

После того как вы запустите X серверы, вы можете войти в каждый из них и иметь разные сеансы для разных пользователей (не нужны ВМ, но все будут использовать одну и ту же ОС), или если вам действительно нужны ВМ, в зависимости от того, какой тип ВМ вы используете, вы можете либо подключить правильный X протокол unix доменной сокет в ВМ, либо настроить ВМ для доступа к X серверу через внутреннюю сеть.

Правка

Действительно ли мне нужно запускать несколько экземпляров X или я могу использовать один и тот же на разных VT?

Нет, X сервер привязан к VT (и более недавно может использоваться независимо от VT). Вы не можете использовать один и тот же X сервер на нескольких VT.

Действительно ли нужен X или я могу просто связать ВМ без DE на VT?

Как я писал в комментарии, ВМ и VT не имеют ничего общего. Совсем.

Цель состоит в том, чтобы иметь несколько ОС (здесь W10/OSX/GNU), чтобы работать “нативно” с ними одновременно.

Windows 10 и OSX? Это не сработает с виртуальными терминалами, извините. Я понимаю, что вы думаете, что было бы удобно просто переключаться между этими ОС с помощью Ctrl-Alt-Fi, но я не думаю, что это возможно.

Ответ или решение

Создание виртуальных машин (ВМ) в рамках TTY (виртуальных терминалов) на Linux является интересной задачей, и, в то же время, отталкивается от нескольких технических аспектов, которые следует учитывать. При этом важно помнить, что в отличие от графического интерфейса, который, как правило, используется для запуска ВМ, в TTY это может вызвать некоторые сложности.

1. Понимание TTY и X-серверов

Управление виртуальными терминалами (TTY) в Linux позволяет пользователям переключаться между разными сессиями, используя комбинации клавиш Ctrl+Alt+F1, F2 и т.д. Каждый TTY может отображать отдельную сессию, что позволяет, например, запускать несколько графических интерфейсов одновременно.

При необходимости запуска нескольких графических окружений или отображения различных операционных систем в VT, необходимо запустить несколько X-серверов (X Server) — по одному для каждого виртуального терминала. Это связано с тем, что каждый X-сервер ограничивается своим TTY и в рамках него реализует управление графикой.

2. Запуск X-серверов

Для начала вам нужно установить и настроить дисплейный менеджер, такой как GDM, KDM или LightDM, в зависимости от вашей дистрибуции. Это, как правило, делается через стандартные репозитории вашей системы. После установки, дисплейный менеджер должен автоматически обрабатывать запуск X-серверов.

Запуск X-серверов можно выполнить вручную, используя команду startx, однако на практике часто используется дисплейный менеджер для упрощения процесса. Когда каждый X-сервер запущен, вы можете переключаться между ними на соответствующих TTY с помощью комбинаций клавиш.

3. Настройка виртуальных машин в TTY

Теперь, если ваша цель заключается в том, чтобы запустить виртуальные машины (например, Windows 10 или macOS) и отображать их в режиме полноэкранного TTY, это может быть более сложной задачей.

  1. Использование QEMU/KVM: Вы можете использовать QEMU в сочетании с KVM для создания виртуальных машин. Для преобразования вывода видео ВМ в TTY, используйте virtio или аналогичные технологии. Настройте вывод на framebuffer, который поддерживается вашим TTY.

  2. Промежуточный вывод: Чтобы контролировать графический вывод ВМ на стандартном TTY, нужно перенаправить вывод управления видеокартой на виртуальный терминал. Это может быть выполнено с помощью параметров запуска QEMU:

    qemu-system-x86_64 -enable-kvm -m 2048 -vga std -display curses

    Однако, учтите, что -display curses может не предложить тот же графический опыт, что и полноценный графический интерфейс.

4. Альтернативные подходы

Если ваши намерения не требуют жестких ограничений на использование TTY, вы можете рассмотреть возможность работы с оконными менеджерами, которые позволяют управлять несколькими ВМ в графическом интерфейсе. Это упростит процесс и сделает его более универсальным с точки зрения пользовательского опыта.

Заключение

Биржа нескольких ОС через TTY является сложной, но реализуемой задачей благодаря использованию X-серверов и грамотной конфигурации графической подсистемы. Тем не менее, переход на графическую среду часто обеспечивает более удобное и интуитивное взаимодействие с виртуальными машинами по сравнению с TTY. Если вам действительно нужно полное окружение для опытов с различными ОС, возможно, стоит рассмотреть консольные или оконные интерфейсы для управления виртуальными машинами.

Оцените материал
Добавить комментарий

Капча загружается...