Вопрос или проблема
Я хочу получить виртуальную машину в TTY (VT*) на полноэкранном режиме, как GDM3 может использовать TTY (VT*) для графической части Linux.
Я хочу, чтобы DISPLAY (который воспринимается как вывод графического сервера, здесь — ВМ) перенаправлялся в TTY (VT*), а не в окно, как обычно.
Это создаст впечатление, что компьютер запускает несколько ОС одновременно, но на самом деле это ядро Linux, которое виртуализирует различные ОС, которые мы можем видеть на разных TTY (VT*).
Вы знаете, TTY (VT*) в CTRL + ALT + Fi.
Хорошо.
Не хорошо.
И чтобы развить комментарий mosvy:
Если вы хотите переключаться между виртуальными терминалами с помощью Ctrl–Alt–Fi и видеть разные рабочие столы на каждом виртуальном терминале, тогда вам нужно запустить несколько 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, это может быть более сложной задачей.
-
Использование QEMU/KVM: Вы можете использовать QEMU в сочетании с KVM для создания виртуальных машин. Для преобразования вывода видео ВМ в TTY, используйте
virtio
или аналогичные технологии. Настройте вывод на framebuffer, который поддерживается вашим TTY. -
Промежуточный вывод: Чтобы контролировать графический вывод ВМ на стандартном TTY, нужно перенаправить вывод управления видеокартой на виртуальный терминал. Это может быть выполнено с помощью параметров запуска QEMU:
qemu-system-x86_64 -enable-kvm -m 2048 -vga std -display curses
Однако, учтите, что
-display curses
может не предложить тот же графический опыт, что и полноценный графический интерфейс.
4. Альтернативные подходы
Если ваши намерения не требуют жестких ограничений на использование TTY, вы можете рассмотреть возможность работы с оконными менеджерами, которые позволяют управлять несколькими ВМ в графическом интерфейсе. Это упростит процесс и сделает его более универсальным с точки зрения пользовательского опыта.
Заключение
Биржа нескольких ОС через TTY является сложной, но реализуемой задачей благодаря использованию X-серверов и грамотной конфигурации графической подсистемы. Тем не менее, переход на графическую среду часто обеспечивает более удобное и интуитивное взаимодействие с виртуальными машинами по сравнению с TTY. Если вам действительно нужно полное окружение для опытов с различными ОС, возможно, стоит рассмотреть консольные или оконные интерфейсы для управления виртуальными машинами.