Удаление VMAdditions из Hyper-V

Мы уже разговаривали о совместимости виртуальных машин между различными платформами виртуализации Microsoft. Очевидно, что большинство задач переноса ВМ касаются перехода на Hyper-V. Обычно вы без проблем можете создать новую виртуальную машину в Hyper-V и подключить к ней виртуальный диск с ОС, установленной под Virtual Server 2005. При этом часто пропускается такой важный момент, как предварительное удаление Virtual Machine Additions. В результате вы не сможете установить Integration Services, так как установлены VM Additions (проверка осуществляется по наличию службы 1-vmsrvc).

Казалось бы, перед вами тривиальная задача, — достаточно удалить VM Additions, и можно будет установить службы интеграции. Но тут-то и появляется проблема. В виртуальной машине, запущенной под Hyper-V, вы сможете удалить VM Additions только начиная от версии 13.813, которая поставлялась с Virtual Server 2005 R2 SP1. Предыдущие версии VM Additions отказываются удаляться будучи запущенными в «не родной» системе виртуализации. Если ваша виртуальная машина создавалась в более ранеей версии Virtual Server или Virtual PC, и вы не обновляли VM Additions в ней, то подключив такой виртуальный диск к виртуальной машине Hyper-V, вы просто не сможете удалить VM Additions штатным образом. Придется устанавливать Virtual Server 2005 или Virtual PC, загружать ВМ в этой платформе, удалять VMAdditions, а только затем возвращать виртуальный диск в Hyper-V и устанавливать службы интеграции. Но есть и обходной путь, который устраняет необходимость этого шага.

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

Product

Product version

VM Additions

Virtual PC 2004

5.3.0.582

13.040

Virtual Server 2005

1.1.465.0

13.206

Virtual PC 2004 SP1

5.3.582.27

13.306

Virtual PC 2004 SP1

5.3.582.32

13.306

Virtual Server 2005

SP1 Beta

13.518

Additions Download Only WS03 SP1 Support

13.531

Virtual Server 2005 R2

1.1.465.292 EE R2

13.552

Additions Download Only Vista Beta 2 Support

13.709

Virtual Server 2005 R2 SP1

1.1.531.0 EE R2 SP1

13.715

Virtual PC 2007

6.0.122.0

13.724

Virtual PC 2007

6.0.137.0

13.800

Virtual Server 2005 R2 SP1

1.1.603.0 EE R2 SP1

13.813

Virtual Server 2005 R2 SP1 Update

1.1.653.0 EE R2 SP1

13.820

Virtual PC 2007 SP1

6.0.192.0

13.820

Начиная с версии 13.813 (выделена жирным шрифтом) вы можете без проблем удалить VM Additions из ВМ, запущенной под Hyper-V. Предыдущие версии VM Additions требуют удаления из-под VS2005 или VPC.

Итак, об удалении более старых версий из Hyper-V. Иногда вы получаете «в наследство» или даже загружаете с сайта Microsoft виртуальную машину с «подарком» в виде старых VMAdditions. Что делать с такой ВМ, если у вас есть только Hyper-V?

Как я уже говорил, удалить VM Additions штатными средствами, то есть через приложение Панели управления «Установка и удаление программ», не получится. Однако это не значит, что удаление не возможно в принципе — блокируется лишь запуск установщика. В то же время, сохраняется возможность удаления вручную. Для автоматизации этого процесса служит утилита «Windows Installer Data Zapper», более известная как Msizap.exe. Есть два законных способа получить ее. Более предпочтительным является загрузка Windows SDK. Это не очень удобно, зато вы гарантировано получите самую последнюю версию (на даный момент текущей является 4.0.6001.17131 (longhorn_rtm.080108-2300)). Но для целей, описанных в этой статье, подойдет и значительно более старая версия утилиты. Вы можете загрузить ее по ссылкам из статьи Базы знаний Microsoft номер 290301 — «Description of the Windows Installer CleanUp Utility».

Перед тем, как продолжить, необходимо сделать пару традиционных предостережений. Во-первых, использование описанных утилит в промышленной среде не поддерживается — точно так же, как вообще большинства инструментов, которые не входят в поставку коммерческих продуктов, а предлагаются для отдельной загрузки. Это значит, что использовать их следует на свой страх и риск. Во-вторых, в общем случае использование Data Zapper не является аналогом штатного удаления продуктов и не должно расцениваться как его полноценная замена. Всегда используйте эту утилиту только как крайнее средство, если более традиционные способы удаления не срабатывают. В этом мы сейчас и убедимся.

При «удалении» VM Additions таким варварским способом вы не еще достигнете желаемого результата. Hyper-V Integration Services по-прежнему откажутся устанавливаться. Дело в том, что в реестре останутся «следы» пребывания VM Additions — то есть записи о службах, про которые Data Zapper ничего не знает. Вам придется вычистить их вручную (здесь должен следовать очередной абзац с предостережениями). Ниже указан список ключей, которые потребуется удалить. Для удобства я сразу привожу его в формате файла Редактора реестра, то есть вы можете скопировать текст ниже в файл с расширением .reg. То, что начинается со знака «-», будет удалено. Последняя строка необходима для того, чтобы исправить работу мышки в ВМ.

Windows Registry Editor Version 5.00
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1-driver-vmsrvc]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1-vmsrvc]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MRxVPC]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\msvmmouf]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\VPCMap]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_1-DRIVER-VMSRVC]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_1-VMSRVC]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_MRXVPC]
[-HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\LEGACY_VPCMAP]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96F-E325-11CE-BFC1-08002BE10318}]
"UpperFilters"=hex(7):6d,00,6f,00,75,00,63,00,6c,00,61,00,73,00,73,00,00,00,00,\
00

После импорта этого файла вы, наконец, сможете установить Службы интеграции, перезагружаться и радоваться жизни. На всякий случай напоминаю, что до тех пор, пока вы этого не сделаете, для доступа к ВМ по сети можете использовать «Legacy Network Adapter».

Примечание 1.  Иногда у локального администратора не хватает прав для удаление ветвей реестра в HKLM\SYSTEM\CurrentControlSet\Enum\Root. В этом случае вам придется явным образом назначить себе такие права с помощью Редактора реестра (regedit).
Примечание 2.  Установщик Служб интеграции требует отсутствия в реестре записей о службах «1-vmsrvc» и «LEGACY_1-VMSRVC». Причем иногда проверяет не только в CurrentControlSet, но и в ControlSet001. Поэтому в своем «боевом» файле я сразу чищу и 001, и 002, и 003.