Гид по технологиям

Автозапуск виртуальной машины при входе в Linux

5 min read Linux Virtualization Обновлено 22 Nov 2025
Автозапуск VM при входе в Linux
Автозапуск VM при входе в Linux

Зачем это нужно

Linux позволяет полностью настроить среду для каждого пользователя. Вместо дуального загрузчика и постоянного переключения операционных систем можно настроить так, чтобы при входе определённый пользователь автоматически попадал в виртуальную машину с любимой ОС — всё это без остановки фоновых процессов основной системы.

Кому подойдёт эта инструкция

  • Пользователям, которым нужна отдельная среда (например, Windows или macOS) на общем компьютере.
  • Администраторам, которые хотят упростить рабочий процесс для конкретных учётных записей.
  • Тем, кто использует VirtualBox и может запускать VM из командной строки.

Необходимые условия

  1. Установлён VirtualBox (или другой гипервизор с возможностью запуска VM из CLI).
  2. Создана и настроена виртуальная машина с требуемой ОС.
  3. У вас есть права root для копирования скриптов в системные директории (если делаете системный доступ) или вы знаете, куда поместить скрипт в пользовательской среде.

Как работает вход в GUI в Linux — кратко

Когда система загружается, дисплейный менеджер (например, GDM, LightDM, SDDM) отображает графический экран входа. После успешной авторизации дисплейный менеджер запускает стартовый скрипт/сессию указанного типа (файл .desktop в /usr/share/xsessions или ~/.local/share/xsessions). Пока длится сессия, стартовый скрипт остаётся активен; когда вы выходите из сессии, дисплейный менеджер возвращает экран входа.

Важно: мы воспользуемся этим механизмом, создав свою сессию, которая запускает VirtualBox и удерживает сессию открытой, пока работает VM.

Шаг 1. Создаём стартовый скрипт

Создайте текстовый файл, например winxp-session, и поместите в него следующий содержимое (с исправленными пробелами и корректным путём к VM):

#!/bin/bash

# Запуск VirtualBox GUI с указанной виртуальной машиной
# Если в имени VM есть пробелы — берите имя в кавычки
VirtualBox --startvm 'Имя вашей виртуальной машины'

# Если нужно дождаться завершения VirtualBox, скрипт завершится, когда процесс GUI закрыт

Примечания:

  • Альтернатива: для безголовой (headless) работы используйте VBoxManage: VBoxManage startvm 'Имя VM' --type headless.
  • Убедитесь, что команда работает вручную из терминала под тем же пользователем.

Сценарий winxp-session с запуском VirtualBox

Шаг 2. Сделайте скрипт исполняемым

chmod 755 winxp-session

Если планируете поместить скрипт в системные каталоги, выполните копирование от root:

sudo cp winxp-session /usr/bin/

Совет: вместо /usr/bin можно использовать /usr/local/bin для локальных утилит. Если вы хотите ограничить запуск только для конкретного пользователя, храните скрипт в его домашней директории и указывайте полный путь в .desktop.

Шаг 3. Создаём файл сессии для дисплейного менеджера

В каталоге, где дисплейный менеджер ищет доступные сессии, создайте .desktop файл. Для Ubuntu и многих систем это /usr/share/xsessions/.

Создайте файл /usr/share/xsessions/winxp-session.desktop с содержимым:

[Desktop Entry]
Name=Windows XP
Exec=/usr/bin/winxp-session
Type=Application

Файл .desktop для сессии Windows XP

После этого при выходе из текущей сессии на экране выбора сеанса появится пункт «Windows XP» — выберите его, чтобы попасть в стартовую сессию, которая запустит вашу VM.

Important: Если VM находится в домашней папке пользователя (~/VirtualBox VMs/), сессия будет доступна только этому пользователю. Для системного доступа переместите VM или настройте права соответствующим образом.

Экран входа с новой опцией сессии

Альтернативные подходы и когда они подходят

  • systemd user service: вместо .desktop можно создать пользовательскую systemd‑службу (в ~/.config/systemd/user/), которая запускает VM при старте пользовательской сессии. Подходит, если хотите гибкости (рестарты, зависимость от других юнитов).
  • Headless VM + RDP/VNC: если хотите, чтобы основной рабочий стол оставался доступен, запускайте VM в headless и подключайтесь по RDP. Подходит для серверных задач и удалённого доступа.
  • KVM/QEMU + virt-manager: если вам нужна лучшая производительность, предпочтите KVM/QEMU вместо VirtualBox.

Возможные проблемы и решения

  • VirtualBox не запускается: проверьте лог (~/.VirtualBox или ~/.config/VirtualBox) и права на файлы VM.
  • Имя VM с пробелами: используйте одинарные кавычки в скрипте.
  • Сессия закрывается сразу: убедитесь, что стартовый скрипт не завершается раньше, чем нужен. Запуск GUI‑версии VirtualBox оставляет процесс работающим, а systemd требует отдельной настройки с параметрами Restart.
  • Wayland vs Xorg: некоторые дисплейные менеджеры и приложения ведут себя по-разному под Wayland; тестируйте поведение для вашей среды.

Безопасность и права доступа

  • Не давайте ненужных прав root пользователям. По возможности используйте пользовательские скрипты в домашней директории.
  • Если VM содержит чувствительные данные, настройте шифрование виртуального диска.
  • Проверьте, какие устройства хост передаёт VM (USB, диски) — это может влиять на безопасность хоста.

Критерии приёмки

  • При выборе сессии «Windows XP» дисплейный менеджер запускает VirtualBox и загружает указанную VM.
  • VM корректно получает доступ к необходимым устройствам (если заявлено в требованиях).
  • При выходе из сессии VirtualBox закрывается и дисплейный менеджер возвращает экран входа.
  • Пользователи без прав не могут запускать системные скрипты вручную (если это требование).

Чек‑лист для администратора (роль‑ориентированный)

  • Установить и протестировать VirtualBox под нужным пользователем.
  • [ ] Создать и проверить скрипт winxp-session локально.
  • [ ] Назначить права chmod 755 и поместить в выбранный каталог.
  • [ ] Создать .desktop в правильной директории дисплейного менеджера.
  • Проверить появление новой сессии на экране входа.
  • Протестировать прерывание, перезапуск и закрытие VM через сессию.

Краткая методология тестирования

  1. Вручную запустите команду из скрипта под тем же пользователем — убедитесь, что VM стартует.
  2. Сделайте скрипт исполняемым и укажите полный путь в .desktop.
  3. Выйдите из текущей сессии и выберите новую — проверьте поведение.
  4. Проверьте логи дисплейного менеджера при проблемах (обычно в /var/log/ или journalctl).

1‑строчный глоссарий

  • Дисплейный менеджер: программа, которая показывает экран входа и запускает пользовательскую сессию.
  • .desktop: файл, описывающий сессию или приложение для графической среды.

Резюме

Создание пользовательской стартовой сессии, запускающей VirtualBox с нужной виртуальной машиной, — простой и удобный способ предоставить отдельную ОС конкретному пользователю без изменения настроек всего компьютера. Этот метод работает с любой средой, где дисплейный менеджер поддерживает пользовательские .desktop сессии. Альтернативы — systemd user services и headless‑режим с удалённым подключением.

Если нужна помощь с конкретным дисплейным менеджером (GDM, LightDM, SDDM) или пример systemd‑юнита для VM — напишите, укажете дистрибутив и тип VM, и я подготовлю точный шаблон.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Обновление видеодрайвера для Rainbow Six Siege
Windows

Обновление видеодрайвера для Rainbow Six Siege

Ограничение частоты запросов в ASP.NET Core
Backend

Ограничение частоты запросов в ASP.NET Core

Исправление лагов Android: TRIM и LagFix
Mobile

Исправление лагов Android: TRIM и LagFix

Семафоры в Bash: что это и как реализовать
Bash

Семафоры в Bash: что это и как реализовать

Что делать при перегреве PS5
Гайды

Что делать при перегреве PS5

Разбить и собрать большие файлы — лучшие инструменты
Утилиты

Разбить и собрать большие файлы — лучшие инструменты