Особенности работы Windows Virtual PC в Windows 7

В Windows 7 Microsoft сменил среду виртуализации, предложив Windows Virtual PC вместо Virtual PC 2007. Изменения коснулись не только названия, но и некоторых, довольно существенных, сторон работы программы виртуализации. Довольно часто на практике мы сталкиваемся с ситуацией, когда у нас уже есть виртуальная машина, которая работала под Virtual PC 2007, и нам требуется запустить ее под Windows Virtual PC. Здесь я разберу основные моменты, с которыми вы можете столкнуться при таком сценарии.

Совместимость файлов – подойдут ли vhd файлы от старых виртуальных машин? Да, подойдут. А вот конфигурационные файлы виртуальной машины теперь устроены по-другому. Каждая виртуальная машина теперь имеет два конфигурационных файла – с расширениями .vmc и .vmcx. Файл .vmcx  по умолчанию находится в папке \Users\YourName\Virtual Machines, а файл .vmc находится в папке \Users\YourName\AppData\Local\Microsoft\Windows Virtual PC\Virtual Machines. (Подробнее смотрите здесь.)

Integration components (IC) – компоненты интеграции. Это замена старых VM Additions. В рамках нашего сценария (когда мы имеем старую виртуальную машину Virtual PC 2007) Windows Virtual PC предложит нам обновить компоненты интеграции. Эта операция содержит несколько подводных камней. При обновлении программа запросит драйвера для usb, и, возможно, флеш-дисков. Если у вас их не окажется, то система откатит операцию обновления, и, внимание!, вы окажетесь вообще без компонентов интеграции, что приведет к неудобству в работе с виртуальной машиной. Например, захват курсора, который каждый раз надо будет освобождать так называемой хост-клавишей (это ctrl+shift+стрелка влево),  невозможность работать с локальными и usb дисками хостовой машины и передавать информацию через буфер обмена.

Встает вопрос – откуда брать искомые драйвера? Эти драйвера надо брать из дистрибутива гостевой ОС – надо скопировать всю папку system, которая при установке располагается в папке Windows.  Эти драйвера надо сбросить внутрь виртуальной машины (например, завернув их в iso образ). После этого надо перегрузить виртуальную машину (иначе инсталлятор компонентов интеграции может не запуститься как надо) и заново запустить обновление компонентов интеграции. Далее, когда будут запрошены драйвера, указать на ту папку внутри виртуальной машины, где вы их сохранили. Теперь установка пройдет нормально и после перезагрузки виртуальной машины вы получите работающие компоненты интеграции.

Выключение виртуальной машины и слияние undo дисков. Раньше эти операции были в одном окне, которое вызывалось при закрытии виртуальной машины. Теперь при закрытии виртуальной машины есть опция отказа от изменений (т.е. удаления undo дисков), но нет опции merge. Если вы хотите выполнить операцию merge undo дисков, это надо делать при выключенной виртуальной машине, зайдя в ее Параметры, пункт меню Undo disks. Там и будет кнопка, которая выполняет операцию merge (слияния).

Теперь работа с виртуальной машиной ведется через протокол RDP. Это приводит к некоторым особенностям. Например, при изменении размеров окна может быть выведен запрос на ввод логина и пароля. Чтобы избавить себя от этого, надо поставить опцию запомнить введенный логин и пароль. Уже сохраненные логины и пароли в Windows 7 можно посмотреть через Credential Manager и там внести изменения, если они потребуются.

Также могут возникнуть проблемы с подключением к виртуальной машине, если пользователь не является администратором гостевой машины. В этом случае в гостевой ОС его надо включить в группу Remote Desktop Users, чтобы у него были права для работы по RDP.

Еще одна проблема может возникнуть у пользователей гостевой ОС без пароля. Они не смогут войти  в виртуальную машину. Проблема решается включением пароля для пользователя.

Также проблема может возникнуть при перемещении виртуальной машины, в том случае, если vhd диск виртуальной машины является дифференциальным диском, и путь к base диску изменяется. Раньше это решалось запуском соответствующего мастера, в котором можно было изменить путь к base диску. Теперь средствами пользовательского интерфейса этого сделать нельзя. Путь к base диску можно поправить скриптом Powershell. Подробнее о скриптах Powershell для управления виртуальными машинами смотрите здесь.

Ошибка при запуске перемещенной виртуальной машины с дифференциальным диском в Windows Virtual PC

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

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

В Windows Virtual PC изменить адрес родительского диска средствами пользовательского интерфейса нельзя. Это можно сделать таким скриптом Powershell:

$vpc = New-Object -ComObject "virtualpc.application"

$vm = $vpc.FindVirtualMachine("My VM")

$hd = $vpc.GetHardDisk("D:\VHDStore\parent.vhd")
$vm.HardDiskConnections.Item(1).harddisk.parent = $hd

Подробнее о возможностях управления ВМ через скрипты Powershell смотрите здесь.