Server 2008 R2 xenpci.sys BSOD

Based on customer feedback, we have come across an error that can occur when restoring your VM onto the new
platform. After completing steps 11-k in the ‘Migrate_Server2k8r2’ guide you are told to restore the server and you
should get to the login. Sometimes you will be presented with another BSOD instead stating ‘”xenpci.sys, the driver
unloaded without cancelling pending operations’. If you experience this, you will need to remove the xen drivers
manually.
1. Select ‘Launch Startup Repair (recommended)’.
a. Select the radio button ‘use recovery tools….’, and install the Virtio Storage drivers and make a note
of the drive letter assigned to the OS drive. In this case, I’ll refer to it as the ‘F:\’ drive but yours
might be different.
b. Wait for the ‘Startup Repair’ process to fail, or cancel it and click ‘Finish’.
c. From the ‘Choose a recovery tool’ window select ‘Command Prompt’.
d. Now type the following:
i. ‘rmdir /q /s “f:\Program Files (x86)\Xen PV Drivers”
ii. ‘del /q “f:\Windows\System32\drivers\xen*”
iii. ‘del /q f:\Windows\inf\oem1.inf
iv. ‘del /q f:\Windows\inf\oem2.inf
v. ‘del /q f:\Windows\inf\oem3.inf
vi. ‘del /q f:\Windows\inf\oem4.inf
vii. ‘del /q f:\Windows\inf\oem5.inf
viii. ‘del /q f:\Windows\inf\oem*.pnf
e. Now type ‘regedit’, then hit enter.
f. Select ‘HKLM’, go to ‘File\Load Hive
g. For this step, make sure you select the drive you are recovering and not the X: (boot) drive. Go to
C:\Windows\system32\config’ and open the ‘SYSTEM’ file.
h. Type any ‘Key Name’ you want, example ‘temp’.
i. Navigate to ‘HKLM\temp\ControlSet001\services’.
i. Delete Key Names ‘xennet’, ‘xenpci’, ‘xenvdb’.
j. Navigate to ‘HKLM\temp\ControlSet002\services’.
i. Delete Key Names ‘xennet’, ‘xenpci’, ‘xenvdb’.
k. Navigate back to ‘HKLM\temp’.
i. Press ‘Ctrl + f’ to find.
ii. Search for ‘upperfilters’ and keep pressing F3 to find any key with reference to ‘xenpci’ that
have the same class value as below and delete them.
1. ‘HKLM\***\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}
2. ‘HKLM\***\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}
3. ‘HKLM\***\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}
l. Check these values are still true:
i. intelide ‘3’
ii. msahci ‘0’
iii. pciide ‘0’
iv. LSI_SAS ‘3’
m. Navigate back to the ‘temp’ registry key and select ‘File\Unload Hive’, then press ‘Yes’.
n. Restart the server.
2. When your server has started, Login.

Сегодня мы будем решать проблему, с которой я столкнулся давеча. Итак, у нас есть виртуальная машина Windows Server 2008 R2 на борту с установленными паравиртуальными драйверами. Эта виртаулка крутится работает под XEN’ом. Необходимо ее перести на другой сервер под VirtualBox. Но не все так просто. Первое, что необходимо было сделать — это сконвертировать. Как это сделать, я уже писал в одной из своих заметок:
VBoxManage convertdd linux_file.img linux_file.vdi
После того как вы сконвертируйте IMG в VDI формат и подключие к этот диск к новой виртуальной машине под VirtualBox, скорее всего вы получите первый BSOD с кодом 0x0000007B. 0x0000007B указывает, что  во время запуска операционная система Microsoft Windows потеряла доступ к системному разделу. Чтобы пофиксить эту проблему необходимо в настройках виртуальной машины удалить SATA-контроллер и добавить IDE-контроллер:
VirtualBox-IDE
Далее после попытки запустить сервер вы скорее всего получите второй BSOD (0x0000000d4 xenpci.sys), причиной которого будут установленные паравиртуальные драйверы. Давайте удалим их. Запускаем Windows в режиме восстановления и открываем командную строку. Далее по списку выполняем:
rmdir /q /s “f:\Program Files (x86)\Xen PV Drivers”
del /q “f:\Windows\System32\drivers\xen*”
del /q f:\Windows\inf\oem1.inf
del /q f:\Windows\inf\oem2.inf
del /q f:\Windows\inf\oem3.inf
del /q f:\Windows\inf\oem4.inf
del /q f:\Windows\inf\oem5.inf
del /q f:\Windows\inf\oem*.pnf
После удаления файлов перейдем к правке реестра. Введите команду regedit, выберите раздел HKLM и загрузите куст (File\Load Hive) C:\Windows\system32\config\SYSTEM с именем temp. В разделе HKLM\temp\ControlSet001\services и HKLM\temp\ControlSet002\services удаляем ключи xennetxenpcixenvdb.
Переходим обратно в HKLM\temp, жмем CTRL+F и ищем по фразе upperfilters (F3 для продолжения поиска). Как только в значение появится xenpci необходимо удалить этот раздел. У меня нашлись разделы:
  • HKLM\***\Class\{4D36E96A-E325-11CE-BFC1-08002BE10318}
  • HKLM\***\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}
  • HKLM\***\Class\{4D36E97B-E325-11CE-BFC1-08002BE10318}
Теперь вернемся к разделу temp и выгрузим куст (File\Unload Hive). После чего перезагрузим сервер и радуемся рабочему серверу.
Рекомендуем почитать
Конвертируем XEN IMG в формат VirtualBOX VDI

vboxmanage convertfromraw --format VDI elastix.img elastix.vdi

Перенос образа из VirtualBox в XEN

Для того, чтобы перенести ваш образ, созданный в VirtualBox в XEN необходимо сконвертировать VDI-диск в IMG формат. Для этого воспользуемся Читать дальше...

Паравиртуализация XEN или решаем проблемы с производительностью

Паравиртуальные драйверы Xen — специальный вид драйверов устройств, которые используются в гостевой системе в домене Xen (в общем случае паравиртуальным Читать дальше...

Быстрое создание жесткого диска в XEN

Практически моментально можно создать виртуальный жесткий диск для XEN выполнив команду: dd if=/dev/zero of=/home/xen/virt1/disk1.img bs=1024 seek=100000000 count=0 Данный пример создаст Читать дальше...

Поделиться

Оставить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *