Вопрос или проблема
Я настраиваю хост с Windows 10/11 с помощью Vagrant+Ubuntu+VirtualBox. Использую эти образы:
StefanScherer/windows_10
StefanScherer/windows_11
Код для машины, пример для Windows 10 (то же самое для других):
config.vm.define "win1" do |win1|
win1.vm.box = "StefanScherer/windows_10"
win1.vm.boot_timeout = 120
win1.vm.hostname = "win1"
win1.vm.communicator = "winrm"
win1.vm.network :private_network, ip: "192.168.56.4"
win1.winrm.port = 55986
win1.winrm.scheme = "http"
win1.winrm.ssl_peer_verification = false
win1.vm.boot_timeout = 300
Эта машина запускается хорошо, но через 30-60 минут переходит в статус “Power Off” (в “vagrant status” и в интерфейсе VBox).
Я пытался отключить режим энергосбережения через ansible provisioner:
- name: Disable suspend and sleep
ansible.windows.win_shell: |
powercfg /x -hibernate-timeout-ac 0
powercfg /x -hibernate-timeout-dc 0
powercfg /x -disk-timeout-ac 0
powercfg /x -disk-timeout-dc 0
powercfg /x -monitor-timeout-ac 0
powercfg /x -monitor-timeout-dc 0
powercfg /x -standby-timeout-ac 0
powercfg /x -standby-timeout-dc 0
Это работает. Я захожу в управление питанием и вижу там “Никогда”. Но это не помогает.
После включения этих машин я вижу сообщение Windows Update об ожидании и прогрессе и отключаю Windows Updates с помощью PowerShell:
win1.vm.provision "shell", name: 'disable-updates', inline: <<-SHELL
$ErrorActionPreference = "SilentlyContinue"
Set-Location HKLM:/Software/Policies/Microsoft/Windows
New-Item WindowsUpdate
New-ItemProperty -Path WindowsUpdate -Name ElevateNonAdmins -Value 1 -Type DWORD
New-ItemProperty -Path WindowsUpdate -Name WUServer -Value "https://10.100.100.100:8530" -Type String
New-ItemProperty -Path WindowsUpdate -Name WUStatusServer -Value "https://10.100.100.100:8530" -Type String
Set-Location WindowsUpdate
New-Item AU
New-ItemProperty -Path AU -Name NoAutoUpdate -Value 0 -Type DWORD
New-ItemProperty -Path AU -Name AUOptions -Value 3 -Type DWORD
New-ItemProperty -Path AU -Name ScheduledInstallDay -Value 0 -Type DWORD
New-ItemProperty -Path AU -Name ScheduledInstallTime -Value 15 -Type DWORD
New-ItemProperty -Path AU -Name AutoInstallMinorUpdates -Value 1 -Type DWORD
New-ItemProperty -Path AU -Name UseWUServer -Value 1 -Type DWORD
SHELL
Я знаю, что Windows Update не следует отключать, но я тестирую, как сделать так, чтобы виртуальная машина оставалась включенной без выключения питания.
Это тоже не помогло.
Но если я использую образы с Windows Server, такие как StefanScherer/windows_2019, виртуальная машина работает прекрасно. Много часов, без перехода в режим ожидания, сна или выключения.
В журналах событий я не вижу никаких ошибок или другой информации о выключении питания.
В чем причина такого поведения?
Ответ или решение
Чтобы разобраться, почему виртуальные машины Windows 10/11 выключаются через 30-60 минут при использовании Vagrant, Ubuntu и VirtualBox, необходимо подробно изучить несколько аспектов ваших настроек и конфигураций.
Анализ проблемы
Вы используете Vagrant и изображения Windows 10 и 11 от StefanScherer для создания виртуальных машин на хосте под управлением Ubuntu и VirtualBox. Несмотря на то, что виртуальные серверы с Windows Server работают стабильно, возникает проблема с отключением на клиентских выпусках Windows, таких как Windows 10 и 11.
Шаги для устранения проблемы
-
Питание и управление питанием:
- Вы правильно попытались отключить режимы экономии энергии через Ansible. Убедитесь, что эти настройки применились корректно. Проверьте состояние питания непосредственно на виртуальной машине.
-
Обновления Windows:
- Хотя вы отключили обновления Windows, следует учесть, что могут возникать временные проблемы, связанные с обновлениями, которые не удается отключить должным образом. Попробуйте использовать команду
sconfig
для временного отключения обновлений.
- Хотя вы отключили обновления Windows, следует учесть, что могут возникать временные проблемы, связанные с обновлениями, которые не удается отключить должным образом. Попробуйте использовать команду
-
Настройки VirtualBox:
- Проверьте, нет ли настроек оболочки или других параметров, которые могут привести к выключению. Например, убедитесь, что VirtualBox настроен на сохранение, а не на выключение при временной потере соединения.
-
Журналы событий:
- Хотя скрипты и не показывают явных ошибок, проверьте другие журналы в Windows, которые могут не выделять ошибки в стандартных системных логах. Это могут быть службы или приложения, которые вызывают критические завершения.
-
Совместимость и тестирование:
- Рассмотрите возможность использования других версий Vagrant или VirtualBox. Иногда обновление программного обеспечения решает проблемы несовместимости.
- Попробуйте поднять тестовую виртуальную машину менее нагруженной версии Windows, например, Windows 10 LTSC, которая имеет менее агрессивную политику обновлений и энергоэффективности.
Заключение
Проблема может заключаться в комбинации настроек экономии энергии, некорректной работы Windows Update или специфике работы клиентских версий Windows на платформах виртуализации. Обратите внимание на настройку вашей платформы виртуализации и использование последних обновлений для всех используемых инструментов. Успешное решение этой проблемы будет сочетанием тщательного тестирования и индивидуальных настроек рабочей среды.