База знаний

Все продукты
Найти
331: Виртуальная машина с Windows Server 2019, Windows 10 не загружается после установки обновлений
Продукт:
Кибер Инфраструктура
Последнее обновление:
2/27/24
Описание статьи:
Инструкция по восстановлению загрузки. Виртуальная машина с Windows Server 2019, Windows 10 не загружается после установки обновлений KB5030214, KB5030216.
Симптомы проблемы

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

diskpart

list disk

До возникновения проблемы были установлены обновления KB5030214 и KB5030216 (или одно из них).

Причины

Обновление Windows KB5030214 нарушает код SeaBIOS, который обнаруживает загрузочные устройства Hyper-V, из-за чего гостевая ОС Windows не может обнаружить какие-либо диски и переходит в режим восстановления.

Решение
  1. Остановите виртуальную машину.
  2. Измените тип шины основного диска VM на IDE (выполнять команды нужно на узле Кибер Инфраструктуры, где активна роль Панель Управления):
    1. Проверьте и сохраните текущие настройки диска командами:

sudo -u postgres psql nova -c "select * from block_device_mapping" > bdm.bkp

sudo -u postgres psql nova -c "select * from block_device_mapping where instance_uuid='<VM_UUID>'" > bdm_VM.bkp

  1.  Убедитесь, что есть только одна запись, а затем сохраните значение disk_bus:

sudo -u postgres psql nova -c "select disk_bus from block_device_mapping where instance_uuid='<VM_UUID>' and deleted=0"

Если результат выполнения запроса содержит более одной записи, НЕ ПРОДОЛЖАЙТЕ и обратитесь в службу технической поддержки.

  1. Измените тип шины на IDE:

sudo -u postgres psql nova -c "update block_device_mapping set disk_bus='ide' where instance_uuid='<VM_UUID>' and deleted=0"

  1. Запустите виртуальную машину.
  2. Войдите в консоль восстановления Windows, используя учетные данные администратора.
  3. Получите список установленных обновлений командой:

dism.exe /Image:D:\ /get-packages /format:table

  1. Найдите пакет с именем, заканчивающимся на 4851.1.5 (для Windows Server 2019) или 1970.1.61 (для Windows Server 2022).
  2. Удалите установленное обновление командой:

dism /image:D:\ /Remove-Package /PackageName:Package_for_RollupFix~31bf3856ad364e35~amd64~~17763.4851.1.5

  1. Выйдите из консоли восстановления и выключите виртуальную машину.
  2. Задайте диску тот тип шины, который был изначально, использовав ранее сохраненное значение disk_bus:

sudo -u postgres psql nova -c "update block_device_mapping set disk_bus='<BUS_VALUE>' where instance_uuid='<VM_UUID>' and deleted=0"

  1. Включите виртуальную машину.

Все команды, связанные с работой в БД вычислительного сервиса, необходимо выполнять на главном узле кластера управления, используя учетную запись с административными привилегиями.

Удаление обновления занимает значительное время (от часа и более). Рекомендуется не выключать и не перезагружать виртуальную машину в процессе удаления обновления.

Альтернативное решение

1. Установите драйвер scsi с диска A (он всегда примонтирован к виртуальной машине) из среды восстановления Windows командой:
pnputil.exe /add-driver A:\Drivers\vioscsi\2k19\amd64\vioscsi.inf /install


2.  Удалите обновления через GUI среды восстановления,

или в CLI среды восстановления командой:

DISM /Image:D:\ /Cleanup-Image /RevertPendingActions» где "D:" надо поменять на букву диска с Windows.

Удаление обновления занимает значительное время (от часа и более). Рекомендуется не выключать и не перезагружать виртуальную машину в процессе удаления обновления.