--- title: VirtualBox + Windows-гость — нюансы стабильности при cross-hypervisor миграции type: concept tags: [virtualbox, windows, kvm, migration, troubleshooting] sources: [../sources/nas-recovery-session-2026-05-18.md] updated: 2026-05-19 --- # VirtualBox + Windows-гость: cross-hypervisor migration Импорт OVA с Synology VMM (KVM-based) в VirtualBox прошёл через 3 круга проблем. Записано чтобы в следующий раз не танцевать. Касается [[snolla-recovery-vm]]. ## Симптом исходный OVA импортируется через `VBoxManage import`, VM стартует, Windows валится в WinRE ("Восстановление при загрузке не удалось восстановить компьютер"). Startup Repair не помогает. ## Цепочка фиксов (применять по порядку) ### 1. Storage controller: SCSI LsiLogic → SATA AHCI OVA с KVM-источника обычно имеет SCSI LsiLogic. Windows-гость не имеет встроенного boot-driver для VBox's LsiLogic emulation. SATA AHCI — generic, поддерживается любым Windows из коробки. ``` VBoxManage controlvm "" poweroff VBoxManage storageattach "" --storagectl "SCSI" --port 0 --device 0 --medium none VBoxManage storagectl "" --name "SCSI" --remove VBoxManage storagectl "" --name "SATA" --add sata --controller IntelAhci --portcount 4 VBoxManage storageattach "" --storagectl "SATA" --port 0 --device 0 --type hdd --medium "" ``` После этого Windows бутится дальше WinRE → доходит до login screen. ### 2. Hyper-V Virtualization Infrastructure Driver — disable в Safe Mode После login Windows зависает в **чёрный экран после Welcome**. Виновник — Microsoft Hyper-V virtualization infrastructure driver, который остался от Synology VMM/KVM. Под VBox он не находит свой target hypervisor → виснет. Доступ: жмёшь power → Shift+Restart → Recovery → Troubleshoot → Advanced Options → Startup Settings → Restart → **4 (Safe Mode)** или **5 (Safe Mode with Networking)**. В Safe Mode: - Device Manager → Системные устройства → **Драйвер инфраструктуры виртуализации Microsoft Hyper-V** → правый клик → **Отключить устройство** (Disable, не удалять — потом можно вернуть). - Параллельно почистить "Другие устройства" с жёлтыми треугольниками (audio-controller, base system device) — uninstall, без удаления драйверов. Reboot нормально → Windows загружается до desktop. ### 3. Paravirt provider: default → kvm После пары часов uptime VM начинает виснуть рандомно. Корень — несоответствие paravirt-интерфейса между source-гипервизором (Synology VMM = KVM) и VBox default (`default`/`auto`, который пытается подружиться с гостем но не угадывает). ``` VBoxManage modifyvm "" --paravirtprovider kvm ``` Windows-гость, который изначально загружал KVM paravirt drivers (virtio?), теперь под VBox видит знакомый интерфейс → стабильнее. ### 4. OS type: Other_64 → Windows10_64 VBox по умолчанию ставит OS type = `Other/Unknown (64-bit)` при импорте OVA с неузнанной маркировкой. Это означает дефолтные acceleration settings, которые могут не подходить Windows. ``` VBoxManage modifyvm "" --ostype Windows10_64 ``` Включает VBox-внутренние оптимизации для Windows (HPET off, large pages on, и др.). ### 5. HPET off, vCPU 2 (а не 4), RAM 4 GB - HPET (High Precision Event Timer) — для Windows-гостя на VBox чаще создаёт jitter чем помогает. Off: ``` VBoxManage modifyvm "" --hpet off ``` - vCPU: 4 на 2-ядерном/4-ядерном хосте может создавать contention. Снизить до 2: ``` VBoxManage modifyvm "" --cpus 2 ``` - RAM: 4 GB достаточно для IIS + CMS + Windows на легкой нагрузке. ### 6. Установить **VirtualBox Guest Additions** Без GA Windows использует generic Microsoft драйверы для VBox-эмулированного железа. С GA — нативные оптимизированные VBox-драйверы для сети/видео/storage/устройств. **Установить через VRDE-консоль** (mstsc к `localhost:13389`), а не через сетевой RDP — потому что сеть может умереть до установки GA. Шаги: 1. На хосте: `VBoxManage storagectl "" --name "IDE" --add ide --controller PIIX4` (новый контроллер для DVD) 2. `VBoxManage storageattach "" --storagectl "IDE" --port 0 --device 0 --type dvddrive --medium "C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso"` 3. В VM: Win+E → D: drive → запустить `VBoxWindowsAdditions.exe` → Next/Install/доверять Oracle publisher → Restart. После: `GuestAdditionsRunLevel=3` (полностью активны). VM существенно стабильнее. ## Network nuances ### Bridged WiFi нестабильно Если хост-машина подключена по WiFi и VBox NIC = bridged через WiFi adapter — частые проблемы с promiscuous mode. Симптомы: - VM получает IP по DHCP - Работает 10-60 минут - Network "повисает": TCP-handshake проходит, но трафик не идёт - ARP-table показывает MAC, но State=`Stale` Решение: **NAT с port forwarding** вместо bridged. ``` VBoxManage modifyvm "" --nic1 nat VBoxManage controlvm "" natpf1 "rdp,tcp,127.0.0.1,23389,,3389" VBoxManage controlvm "" natpf1 "ssh,tcp,127.0.0.1,8022,,22" VBoxManage controlvm "" natpf1 "http,tcp,127.0.0.1,18080,,80" # ...и так далее на нужные порты ``` VM получает 10.0.2.15 (default NAT subnet). Host достижим из VM по 10.0.2.2 (NAT gateway). ### Network recovery inside Windows VM Если внутри VM network "повис" (бывает даже с GA + NAT): ``` VBoxManage guestcontrol "" run --exe "C:\Windows\System32\cmd.exe" \ --username vitya --password '' --wait-stdout --wait-stderr \ -- cmd.exe /c "ipconfig /release && ipconfig /renew" ``` Через GA это работает не требуя SSH/RDP связи. ## VRDE backup-доступ Всегда включён в нашей конфигурации как fallback: ``` VBoxManage controlvm "" vrde on VBoxManage controlvm "" vrdeport 13389 ``` `mstsc → localhost:13389` показывает VM-консоль независимо от состояния сети в VM. Полезно для recovery когда RDP в VM умер. ## Что не сработало - Hyper-V на хосте — рассматривался как cleaner альтернатива для Windows-гостя, но требует доустановки Hyper-V Manager и перезагрузки хоста. Отложено как Plan B, не понадобилось. - VMware Workstation Pro 17 — бесплатен с 2024, но та же migration-головная боль на Windows-госте с другого гипервизора. Связано: [[snolla-recovery-vm]], [[windows-recovery-host]].