Автозапуск виртуальной машины virtualbox при включении компьютера

Обновлено: 02.07.2024

Я всегда считал себя продвинутым пользователем компьютера, но я не сторонник Windows, по крайней мере, когда я программирую. Поэтому, когда я получил ноутбук с Windows 10 в качестве машины для повседневной работы, я был очень разочарован. К счастью, всегда есть обходной путь — это VirtualBox. Ноутбук, который я получил, был достаточно мощным, чтобы я мог выделить 16 ГБ памяти, а также 3 ядра хост-машины для виртуальной машины.

После того как я настроил свою виртуальную машину, я всегда использую Windows Terminal и SSH для подключения к машине для разработки. Однажды мне приходит в голову, что я могу (и должен) автоматизировать все это.

Проблема

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

Решение

Этого нельзя достичь за один раз, поэтому я разбиваю по компонентам:

  • Виртуальная машина — предполагается дистрибутив Linux на базе Systemd
    • Нам нужно отключить графический интерфейс входа для виртуальной машины. Для этого мы можем сделать systemctl set-default multi-user.target. Если нам нужно вернуться к графическому входу в систему, мы можем сделать systemctl set-default graphical.target . Multi-user.target и graphical.target эквивалентны тому, что традиционно называлось уровнями выполнения в SystemV.
    • Нам также необходимо настроить необходимый доступ SSH с хост-компьютера Windows 10 к виртуальной машине. Я не буду освещать это здесь. Единственное, что нужно иметь в виду, это открыть необходимые порты.
    • Пакетный сценарий
      • Что нам нужно сделать в пакетном сценарии, так это запустить машину и дождаться ее загрузки. К счастью, установка VirtualBox поставляется с чем-то, что может сделать это, он называется VBoxmanage.exe и находится в папке установки VirtualBox
      • Чтобы запустить виртуальную машину, введите команду "C:\Program Files\VirtualBox\VboxManage.exe" startvm [имя виртуальной машины] --type headless . Измените команду на имя вашей виртуальной машины, --type headless означает, что графический интерфейс виртуальной машины вообще не будет запущен.
      • Следующий шаг — дождаться запуска машины. Команда для этого будет "C:\Program Files\VirtualBox\VboxManage.exe" wait "[имя виртуальной машины]" "/VirtualBox/GuestInfo/OS/NoLoggedInUsers "
      • Последним шагом для пакетного скрипта будет wt , представляющий терминал Windows.
      • Чтобы собрать его воедино, пакетный скрипт будет
      • Создайте профиль в терминале Windows. Это можно сделать либо в пользовательском интерфейсе, либо в файле настроек json.
      • Здесь я представлю профиль, который использую лично:
      • Очевидно, что часть командной строки немного раздута, потому что я пытался сделать слишком много за один раз. На самом деле гораздо проще поместить команду в пакетный файл, и эту строку можно также заменить путем к этому конкретному пакетному файлу.
      • Нажмите Windows+R и введите shell:startup , откроется папка StartUp, в которую вы можете поместить множество вещей, которые вы хотите автоматически запускать при запуске Windows.
      • Перетащите созданный пакетный сценарий в эту папку, чтобы создать ярлык.

      После этой настройки Windows теперь будет запускать виртуальную машину каждый раз, когда вы включаете компьютер.

      Бонус: выключение ВМ в один клик

      Тот же вышеупомянутый файл VboxManage.exe можно использовать и для отключения виртуальной машины. Этого можно добиться, создав пакетный файл со следующим содержимым:

      Вы также можете остановить или сохранить состояние виртуальной машины, а не отключать питание. Дополнительную информацию об этом можно найти в руководстве по виртуальному боксу.

      Виртуальная коробка Oracle® VM

      Руководство администратора для версии 6.0

      2.22. Запуск виртуальных машин во время загрузки системы

      Вы можете автоматически запускать виртуальные машины во время загрузки системы на платформах Linux, Oracle Solaris и Mac OS X для всех пользователей.

      2.22.1. Linux: запуск службы автозапуска с помощью init

      В Linux служба автозапуска активируется установкой двух переменных в файле /etc/default/virtualbox. Первый — это VBOXAUTOSTART_DB, который содержит абсолютный путь к каталогу базы данных автозапуска. Каталог должен иметь доступ на запись для каждого пользователя, который должен иметь возможность автоматически запускать виртуальные машины. Кроме того, для каталога должен быть установлен липкий бит. Вторая переменная — VBOXAUTOSTART_CONFIG, которая указывает службе на файл конфигурации автозапуска, который используется во время загрузки, чтобы определить, разрешать ли отдельным пользователям автоматически запускать виртуальную машину и настраивать задержки запуска. Файл конфигурации можно поместить в /etc/vbox и он содержит несколько параметров. Одним из них является default_policy, который определяет, разрешает ли служба автозапуска или запрещает запуск виртуальной машины для пользователей, которых нет в списке исключений.Список исключений начинается с exception_list и содержит разделенный запятыми список с именами пользователей. Кроме того, для каждого пользователя можно настроить отдельную задержку запуска, чтобы избежать перегрузки хоста. Пример конфигурации приведен ниже:

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

      2.22.2. Oracle Solaris: запуск службы автозапуска с помощью SMF

      На хостах Oracle Solaris демон автозапуска Oracle VM VirtualBox интегрирован в структуру SMF. Чтобы включить его, вы должны указать службе существующий файл конфигурации, который имеет тот же формат, что и в Linux, см. Раздел 2.22.1, «Linux: запуск службы автозапуска с помощью init». Например:

      Когда все настроено правильно, вы можете запустить службу автозапуска Oracle VM VirtualBox с помощью следующей команды:

      Для получения дополнительной информации о SMF см. документацию по Oracle Solaris.

      2.22.3. Mac OS X: запуск службы автозапуска с помощью launchd

      В Mac OS X launchd используется для запуска службы автозапуска Oracle VM VirtualBox. Пример файла конфигурации можно найти в /Applications/VirtualBox.app/Contents/MacOS/org.virtualbox.vboxautostart.plist. Чтобы включить службу, скопируйте файл в /Library/LaunchDaemons и измените ключ Disabled с true на false. Кроме того, замените второй параметр на существующий файл конфигурации, который имеет тот же формат, что и в Linux, см. Раздел 2.22.1, «Linux: запуск службы автозапуска с помощью init».

      Чтобы вручную запустить службу, используйте следующую команду:

      Для получения дополнительной информации о настройке служб запуска см.:

      2.22.4. Windows: запуск службы автозапуска с помощью службы Windows

      В Windows автозапуск реализован как служба Windows. Служба устанавливается для каждого пользователя со своими учетными данными. Перед установкой любых служб автозапуска в системе сначала необходимо определить переменную среды VBOXAUTOSTART_CONFIG в системных переменных с указанием пути к файлу конфигурации автозапуска. Файл конфигурации имеет тот же формат, что и в Linux, см. Раздел 2.22.1, «Linux: запуск службы автозапуска с помощью init», за исключением того, что имя пользователя может быть указано в следующих форматах: «пользователь», «домен\пользователь», ".\user" и "user@domain".

      Чтобы включить автозапуск для определенного пользователя, член группы администраторов должен выполнить следующую команду:

      Файл паролей должен содержать пароль, за которым следует разрыв строки. Остальная часть файла игнорируется. У пользователя будет запрошен пароль, если файл паролей не указан.

      Чтобы отключить автозапуск для определенного пользователя, член группы администраторов должен выполнить следующую команду:

      Если пользователь изменил свой пароль, член группы администраторов должен либо переустановить службу, либо изменить учетные данные службы с помощью диспетчера служб Windows. Из-за политик безопасности Windows служба автозапуска не может быть установлена ​​для пользователей с пустыми паролями.

      Авторское право © 2004, 2020 Oracle и/или ее дочерние компании. Все права защищены. Официальные уведомления

      Я запускаю VirtualBox в Windows Server 2016. Я хочу запускать VirtualBox и виртуальную машину в нем при загрузке Windows. Я видел несколько сообщений о запуске VB при загрузке Windows, но у меня это не сработало. И даже если бы я это сделал, это не привело бы к автоматическому запуску виртуальной машины. Я чувствую, что должен быть способ сделать это, но часы гугления не нашли его.

      10 ответов 10

      У меня есть пример автоматического запуска виртуальной машины VirtualBox при запуске Windows. Я использую Windows 10, но Windows Server 2016 не должен сильно отличаться.

      Папка автозагрузки в моей системе:

      В эту папку я поместил пакетный файл kubuntu.bat со следующим содержимым:

      В моем примере виртуальная машина называется kubuntu. Вам придется изменить его для своего экземпляра.

      ДОПОЛНЕНИЕ:

      Если вам нужна помощь в поиске папки автозагрузки в вашем экземпляре Windows, нажмите клавиши WINDOWS+R и введите shell:startup .


      Я обнаружил, что виртуальная машина будет выключаться (эй, это два слова) правильно, когда я правильно отбрасываю или уничтожаю хост-бокс, да. Основное препятствие — это (повторный) запуск после загрузки.

      Что сработало для меня, так это.

      1. Создайте ярлык.
        • Открыть виртуальный ящик
        • выделите виртуальную машину, которую хотите запустить
        • нажмите "Машина" -> "Создать ярлык на рабочем столе"
      2. Добавить в автозагрузку Windows
        • Пуск -> Выполнить
        • введите "shell:startup"
        • скопируйте и вставьте сюда ярлык.


      Oracle VirtualBox 6.1.16 поддерживает автоматический запуск через службу Windows без сторонних сценариев или программного обеспечения.Это были шаги, которым я следовал. Замените мой логин на ваш везде.

      1. Создайте файл конфигурации в C:\Users\Tim\.VirtualBox\autostart.properties:
      2. Добавьте переменную среды для VBOXAUTOSTART_CONFIG и задайте для нее значение C:\Users\Tim\.VirtualBox\autostart.properties .
      3. Создайте службу автозапуска в административной оболочке Powershell:
      4. Найдите службу автозапуска VirtualBox tim@tim-pc в приложении «Службы».
      5. Убедитесь, что логин службы является вашим локальным логином, как указано выше.
      6. Убедитесь, что автоматический запуск включен.
      7. Запустите службу.
      8. Проверьте наличие ошибок в приложении просмотра событий Windows в журналах приложений. Описания ошибок находятся на вкладке "Подробности".

      Вы можете создать для него службу с помощью NSSM, например:

      Нажмите Установить службу, готово.


      Мне нужна была виртуальная машина, работающая как служба, доступная из сети до того, как пользователь впервые войдет в систему, поэтому ответ fanxings был почти идеальным решением.

      Проблема заключалась в том, что VBoxManage запускает виртуальную машину, а затем просто завершает работу. Поэтому диспетчер служб пытается запустить его снова. И опять. И снова…

      В системе Linux с установленным VirtualBox вы можете автоматически запускать виртуальные машины во время загрузки системы. В этом руководстве мы узнаем, как автоматически запускать виртуальные машины VirtualBox при загрузке системы в Linux. В этой демонстрации используется Ubuntu 16.04 в качестве машины Linux, на которой размещено несколько виртуальных машин VirtualBox 6.0.

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

      VirtualBox поставляется со службой vboxautostart-service, которая упрощает автоматический запуск виртуальных машин во время перезагрузки системы.

      Настроить службу автозапуска VirtualBox

      Чтобы настроить виртуальную машину VirtualBox для запуска при загрузке системы в Linux, вам необходимо активировать службу автозапуска. Службу автозапуска можно активировать, установив две переменные в /etc/default/virtualbox;

      • VBOXAUTOSTART_DB — определяет абсолютный путь к каталогу базы данных автозапуска, обычно это /etc/vbox.
      • VBOXAUTOSTART_CONFIG — определяет путь к конфигурации автозапуска виртуальной машины.

      Эти переменные могут быть определены как;

      Чтобы поместить эти переменные в /etc/default/virtualbox, выполните приведенную ниже команду;

      • default_policy — определяет, разрешать или запрещать автозапуск виртуальной машины по умолчанию. В приведенном выше примере мы запретили кому-либо автоматически запускать виртуальную машину и явно разрешили одному пользователю, amos.
      • имя пользователя (amos) — с помощью политики отказа по умолчанию вы можете определить конкретных пользователей, которым разрешен автозапуск виртуальной машины (allow = trues). Вы также можете указать, как долго будет откладываться запуск ВМ. В этой демонстрации используется 10 секунд.

      Установить владельца каталога базы данных

      Каталог базы данных /etc/vbox должен быть доступен для записи пользователем, чтобы он использовался для автоматического запуска виртуальных машин. Чтобы упростить задачу, вы можете просто добавить своего пользователя в группу vboxusers и установить групповое владение каталогом базы данных для группы vboxusers. После этого установите права записи для группы. В этом случае для автоматического запуска виртуальной машины будет использоваться пользователь amos.

      Назначьте группе права на запись в каталог автозапуска базы данных.

      Чтобы защитить каталог от изменения или удаления другими пользователями, кроме владельца или пользователя root, установите бит закрепления.

      Включить автозапуск виртуальной машины

      Как пользователь вы можете включить автозапуск для отдельных компьютеров. Для этого необходимо сначала определить путь к каталогу базы данных.

      После этого вы можете настроить виртуальную машину на автоматический запуск при загрузке системы.

      Где fedora30 — это UUID или имя вашей виртуальной машины.

      Перезапустите службу vboxautostart

      Конфигурация завершена. Чтобы настройки вступили в силу, вам необходимо перезапустить службу vboxautostart.

      Тестирование автозапуска виртуальной машины

      Чтобы проверить, действительно ли ваша виртуальная машина может автоматически запускаться при загрузке системы, перезагрузите систему и проверьте. Когда система загрузится, ваша виртуальная машина должна быть запущена.

      Если вы хотите отключить автозапуск виртуальной машины;

      Это все о том, как автоматически запускать виртуальные машины VirtualBox при загрузке системы в Linux. Не стесняйтесь оставлять любые комментарии. Наслаждайтесь.

      Есть ли официально задокументированный процесс? Если нет, то каковы проверенные решения некоторых людей?

      Моя наивная попытка выглядела примерно так:

      готово: настроить Windows на автоматический вход в систему при перезагрузке

      TODO: Создайте пакетный скрипт с помощью: sleep 120 && vboxmanage startvm my_vm_name

      TODO: Поместите пакетный сценарий в каталог автозагрузки моего пользователя. (Хотя я не видел каталога «автозагрузка» в Windows 10.)


      Я не был уверен в использовании меню запуска.потому что он очень похож на Windows-9x (может быть, он старше). В Linux я использовал sysvinit/systemd, но я просто не знаком с Windows (может быть, планировщик задач или что-то в этом роде).

      9 ответов 9

      Наиболее последовательный вариант — использовать планировщик заданий.

      Для этого требуется несколько довольно простых шагов, но я объясню их подробно, чтобы любой человек с любым техническим образованием мог это настроить:

      1. Укажите имя виртуальной машины
      2. Создать задачу в планировщике задач

      1. Укажите имя вашей виртуальной машины

      Перейдите к C:\Users\YourUserNameHere\VirtualBox VM

      Папка виртуальных машин VirtualBox

      Имя папки выше обычно соответствует имени виртуальной машины. Вы можете убедиться в этом, проверив сам VirtualBox Manager:

      VirtualBox GUI

      Имя компьютера — WindowsXPSP3 .

      2. Создайте задачу в планировщике заданий

      Сначала нажмите кнопку "Пуск" и введите "планировщик заданий" без кавычек. Затем откройте планировщик заданий:

      Поиск планировщика заданий

      В планировщике задач мы увидим дерево структуры с левой стороны. Щелкните правой кнопкой мыши Библиотеку планировщика заданий. Щелкните левой кнопкой мыши на «Новая папка». :

      Новая папка планировщика заданий

      Назовите папку как-нибудь запоминающимся, например Пользовательский, и нажмите OK (если у вас уже есть папка, которую вы предпочитаете использовать, это тоже нормально, вместо этого перейдите к следующему абзацу):

      Имя новой папки

      Нажмите на только что созданную папку, в моем случае User Custom , чтобы выделить ее. Щелкните правой кнопкой мыши пустой список справа и щелкните левой кнопкой мыши «Создать новую задачу». :

      Создать новую задачу

      А теперь самое сложное. Следуйте моим инструкциям дословно. Если вам хочется проголосовать против, потому что это не сработало, или сказать «это не сработало для меня» в комментариях, держу пари, что вы пропустили этот шаг. Вернитесь и попробуйте еще раз.

      Название и описание могут быть любыми по вашему желанию, это просто эстетика и не повлияет на функциональность. Я назову свою в честь моей виртуальной машины и дам краткое описание. Что важно, так это то, что вы выбираете «Выполнить», независимо от того, вошел ли пользователь в систему или нет, и «Выполнить с наивысшими привилегиями»:

      Создать задачу: Общие

      Перейдите на вкладку "Триггеры" вверху и щелкните левой кнопкой мыши "Создать". . Переключите комбинированное поле «Начать задачу:» на «При запуске», а затем щелкните левой кнопкой мыши «ОК»:

      Новый триггер

      Перейдите на вкладку "Действия" вверху и щелкните левой кнопкой мыши "Создать". . Нажмите «Обзор» (не пытайтесь ввести это вручную, вы вызовете головную боль) и перейдите в C:\Program Files\Oracle\VirtualBox. Выделите VBoxManage.exe и щелкните левой кнопкой мыши «Открыть»:

      Перейти к VBoxManage

      Скопируйте все, кроме исполняемого файла и кавычек, из Program/script: в Start in (необязательно): :

      Копировать путь к каталогу

      Наконец, добавьте следующую строку в поле Добавить аргументы (необязательно): и нажмите OK:

      startvm "YourVirtualMachineNameFromStep1" --type headless

      в моем случае я буду использовать:

      startvm "WindowsXPSP3" --type без заголовка

      Введите аргументы

      Вкладка «Мои условия» обычно имеет следующие значения:

      Вкладка

      Убедитесь, что ваша вкладка "Настройки" выглядит следующим образом, но обязательно убедитесь, что вы установили элементы, отмеченные желтым, в соответствии с моими. Это гарантирует, что, если какое-то предварительное условие еще не было готово, он несколько раз попытается запустить виртуальную машину и что виртуальная машина не будет остановлена ​​через 3 дня. Я бы оставил все остальное по умолчанию, если вы не знаете, что делаете. Если вы не сделаете то, что я вам здесь покажу, и это не сработает, это ваша проблема:

      Вкладка

      Наконец, нажмите OK в нижней части окна "Создать задачу". Готово!

      Тестирование моего поддельного сценария выше (и как вы можете проверить свой)

      Когда я перезагружаю свой компьютер, я могу войти в систему, открыть VirtualBox Manager и увидеть, что моя виртуальная машина работает:

      Запуск ВМ

      Я также могу открыть резервную копию Планировщика заданий и убедиться, что он успешно выполнился, или посмотреть, в чем была ошибка, если это не так (большинство ошибок будет связано с ошибками каталога из-за того, что люди пытаются вручную войти туда, куда я им запретил):

      Успех планировщика заданий

      Тестирование моего реального варианта использования

      На другом компьютере я настроил сервер Linux как виртуальную машину с собственным необработанным твердотельным жестким диском. Я хотел, чтобы этот сервер загружался обратно, если машина перезагружалась (сбой, обновление Windows и т. д.) автоматически, без необходимости входа пользователя в систему. Я настроил его точно так, как я описал выше, и перезапустил эту машину. Я знаю, что это сработало успешно, потому что я смог получить доступ к своему общему ресурсу Samba (непрофессионалы: папка с вещами в ней, которую я делю по своей сети с другими моими компьютерами) с другого компьютера БЕЗ предварительного входа в машину, на которой работает ВМ сервера. Это на 100 % подтверждает, что он запускается при загрузке системы, а не после входа пользователя в систему.

      Вы можете просто изменить Начать задачу: на При входе в систему вместо При запуске и Выполнять только тогда, когда пользователь вошел в систему вместо Выполнять независимо от того, вошел пользователь в систему или нет, если вы хотите, чтобы это происходило ТОЛЬКО ПОСЛЕ входа пользователя в систему. в систему.

      Боже мой. ваш ответ действительно удивителен. отличное письмо. отличные скриншоты. и даже протестировать его со скриншотами, чтобы показать тестирование. выше и выше. я оставил это нерешенным в течение многих лет. но вы, сэр, получаете зеленую галочку.

      @TrevorBoydSmith большое спасибо. Меня это тоже какое-то время мучило. Теперь, когда я снова посмотрел на это и увидел, что они реализовали startvm "name" --type без головы, я понял, что это, наконец, достижимо. Я разместил его и по другим подобным вопросам типа windows-vm-on-boot, так что, надеюсь, многим понравится эта функция.

      Не публикуйте один и тот же ответ на несколько вопросов. Если одна и та же информация действительно отвечает на оба вопроса, то один вопрос (обычно более новый) следует закрыть как дубликат другого. Вы можете указать это, проголосовав, чтобы закрыть его как дубликат, или, если у вас недостаточно репутации для этого, поднять флаг, чтобы указать, что это дубликат. В противном случае адаптируйте свой ответ к этому вопросу и не вставляйте один и тот же ответ в несколько мест.

      Каталог запуска все еще существует, хотя и находится в хорошо скрытом месте.

      Чтобы получить к нему доступ, откройте окно "Выполнить" (Win+R) и введите

      Сверните это сейчас.

      Откройте VirtualBox и щелкните правой кнопкой мыши виртуальную машину, которую вы хотите запустить автоматически, выберите параметр, чтобы создать ярлык на рабочем столе и закрыть VirtualBox.

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


      Не обязательно. Вы всегда можете настроить автовход, откройте cmd и введите control userpasswords2. Вы найдете свой путь через остальных.

      Теперь вы действительно можете запустить виртуальную машину без головы, не прибегая к помощи стороннего VBoxVmService. Просто создайте ярлык для startvm "vmname" -- введите headless и поместите его в папку автозагрузки.

      Обязательно прочитайте Howto.txt и отредактируйте VBoxVmService.ini

      Большое спасибо! это выглядит очень многообещающе. В Windows отсутствие интеграции Virtualbox с запуском / завершением работы системы всегда было большим минусом, когда вы хотели сравнить windows-virtualbox с linux-virtualbox (даже несмотря на то, что интеграция linux virtualbox — это только sysvinit. и IMO не очень надежна (отключение VMs не ждет завершения работы VM, прежде чем система выдаст сигнал SIGKILL, а затем выключит систему)).

      Я попробовал это около года назад. Это решение требует, чтобы вы обновляли виртуальный бокс синхронно с кодом-оболочкой, который выполняет службу Windows. И поэтому вы должны быть осторожны. Также обновление Windows, я думаю, сломало эту функцию для меня. В итоге я удалил этот код vbox-service.

      Я посмотрел этот проект. Огромное количество орфографических ошибок заставляет меня беспокоиться о подобных проблемах в коде. Шахта + канарейка.

      @user2066657 хорошо, вы можете прочитать мои комментарии и увидеть, что я попробовал, и это немного поработало, а затем сломалось. ваши опасения по поводу орфографических ошибок, указывающих на качество кода, вероятно, вполне обоснованы. я все равно не вернусь к этому сегодня.

      Хотя служба — это хорошо, вы можете сделать это с помощью запланированного задания. Возьмите загрузку системы в качестве триггера, установите флажок для запуска задачи без вошедшего в систему пользователя и установите действие startvm "vmname" --type headless . Обязательно снимите флажок с непонятной опции по умолчанию «убить задачу, если она выполняется более 3 дней».Сердечно, М.С., а вы думали, что ни один Windows-компьютер не продержится так долго без перезагрузки?

      Существует предостережение: если виртуальная машина запускается таким образом при загрузке, вы увидите ее в диспетчере VirtualBox как "выключенную", поэтому нет кнопки для отображения отображения виртуальной машины. Есть только кнопка «Пуск», и вы, вероятно, все испортите, когда попытаетесь запустить ее дважды.

      Вы можете определить порт удаленного дисплея, чтобы получить доступ к консоли виртуальной машины через RDC (mstsc.exe) без диспетчера VirtualBox, но вы все равно должны помнить, что не следует верить информации об отключении питания. Я не знаю, работает ли это лучше с реальным сервисом.

      re "иметь Службу приятно". к сожалению, служба VirtualBox выходит из строя каждый раз, когда происходит незначительное обновление виртуального бокса. поэтому я удалил службу, и сейчас моя виртуальная машина больше не запускается при загрузке.

      re «[ВМ отображается как] выключенная [в VirtualBox Manager]», я полагаю, что это вызвано тем, как вы запускаете ВМ. я подозреваю, что вы запускаете виртуальную машину как пользователь root. если бы вы попытались запустить виртуальную машину с помощью «runas» вашего пользователя. ваш менеджер VirtualBox может работать.

      Теперь, когда я думаю об этом. сервис VirtualBox. ТАКЖЕ отображается как «выключено», когда вы запускаете его через сервис.

      Это выглядит очень многообещающе, но я не могу заставить его работать. Я создал задание с двумя командами — для запуска моих слишком «основных» виртуальных машин. Я вижу это в планировщике. Я могу щелкнуть по нему, выбрать «Выполнить» - состояние изменится с «Готово» на «Выполняется», но виртуальные машины не запускаются. Они также не запускаются при загрузке. Там должно быть что-то еще.

      ЭТО РАБОТАЕТ, протестировано на Windows 10 + Virtualbox 6.0.2. Рецепт: ключ Windows, введите SCHED и запустите планировщик задач, создайте базовую задачу, триггер: при запуске компьютера, действие: запустите программу, программа (перейдите к VBoxManage.exe), аргументы: startvm "vmname" --type headless, отметьте «Открыть диалоговое окно свойств для этой задачи.. и завершите, отметьте Выполнять независимо от того, вошел ли пользователь в систему или нет, возможно, удалите Условия/Запуск, только если компьютер подключен к сети переменного тока, и Настройки/Остановить задача, если она выполняется дольше, чем.. (хотя на самом деле это не имеет значения, поскольку запуск происходит быстро).

      Попробуйте VBoxHeadlessTray.
      Он действительно прост в использовании, автоматически восстанавливает состояние виртуальной машины при загрузке Windows и сохраняет состояние при завершении или перезапуске Windows. Самое замечательное, что вы можете использовать VBoxHeadlessTray для настройки каждой из ваших виртуальных машин.


      Как ранее заявляли chad и gonesoft, вы можете использовать VboxManage.exe для запуска виртуальной машины при запуске, однако, если вы не укажете «--type headless», она фактически будет отображаться в диспетчере VirtualBox как работающая и т. д. точно так же, как если бы вы запустили его в обычном режиме, безголовый делает его скрытым - не то, что вы, вероятно, захотите сделать во всех случаях.

      Публикую как ответ, так как у меня недостаточно репутации, чтобы написать комментарий к предыдущим ответам

      Эта программа позволяет запускать виртуальные машины, корректно их останавливать и не имеет файлов конфигурации.


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

      Вот скрипт (названный, например, startvm.ps1 ):

      Ярлык, расположенный в C:\Users\yourusername\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup , к которому можно удобно получить доступ через WIN + R и запустив shell:startup , имеет что-то вроде:< /p>

      Цель: C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "C:\Users\Public\Scripts\startvm.ps1"

      Начать в: C:\Users\Public\Scripts

      Я вижу всплывающее окно powershell после входа в систему и исчезает через несколько секунд. Однако из-за того, что я установил ограничение производительности ЦП, может потребоваться много времени, чтобы машина стала доступной во время интенсивного запуска, когда множество приложений поглощают циклы ЦП и переводят вентиляторы в режим вертолета. Возможно, потребуется использовать пользовательский интерфейс VirtualBox, чтобы дать ему приоритет, нажав «Показать», или просто перезагрузить машину еще раз, чтобы заглушить вентиляторы!

      Другие попытки, которые я пробовал, но не увенчались успехом

      Создал ярлык в автозагрузке для прямого запуска VBoxManage.exe startvm "VMname" --type headless, отредактировав ярлык, добавленный пользовательским интерфейсом VirtualBox. Исходный ярлык работает, когда я дважды щелкаю по нему, но не отредактированный.

      Следовал соответствующему ответу, чтобы запустить его перед входом в систему, поместив сценарий PowerShell в папку C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup (пришлось создать Scripts\Startup ).Возможно, мне придется вернуться к этому, когда у меня будет больше времени, и найти решение, которое работает, не затрагивая глобальную политику выполнения.

      Поскольку ярлык по умолчанию (созданный интерфейсом VirtualBox) использует VirtualBoxVm.exe, я сделал .\VirtualBoxVm.exe --help, чтобы увидеть, есть ли вариант без головы. Я видел бесшовные и пробовал, но это не то же самое, что безголовые.

      Вместо этого запустил VBoxHeadless.exe, но он открыл окно терминала, которое я не мог закрыть, не остановив виртуальную машину, что нарушило ее назначение, поэтому он не удосужился попробовать использовать ярлык с ним.

      Запустил .\VBoxManage.exe modifyvm "" --defaultfrontend headless , затем поместил ярлык по умолчанию в папку Автозагрузка.

      Возможно, я что-то упустил, и вам может подойти один из этих вариантов.

      Читайте также: