Назад | Перейти на главную страницу

Попытка запустить Hyper-v 2016 с USB

Этим днем ​​я пытался протестировать Hyper-v 2016, но мне не удалось загрузить свой R630 с USB-накопителя, который я настроил, используя следующие инструкции. https://technet.microsoft.com/library/ee731893(ws.10).aspx

Я использовал точно такое же руководство на Hyper-v 2012 R2 без проблем.

Кому-нибудь повезло с этим?

Я нашел информацию о развертывании Windows Server 2016 TP3 на SD-карту.

https://www.danielstechblog.info/how-to-deploy-windows-server-2016-tp3-onto-an-sd-card/

В этом разделе описывается развертывание Windows Server на SD-карте, но это был TP3. Думаю, вы можете проделать те же действия с релизной версией.

Также можно принять во внимание SATA DOM.

https://www.supermicro.com/products/nfo/SATADOM.cfm

Это дешевый и малоразмерный вариант для вас. На нем можно развернуть любую ОС. Так что это тоже вариант.

Я столкнулся с этой проблемой недавно, и после нескольких дней отладки я обнаружил проблему и исправил ее.

Барабан, пожалуйста:

После установки Hyper-V Server 2016 используйте автономный инструмент (например, Windows PE) для монтирования куста SYSTEM новой установки и измените DWORD ControlSet001 \ Control \ BootDriverFlags с 0x04 на 0x1c. (Вероятно, вам также следует изменить версию ControlSet002 для хорошей меры, и вы можете записать изменения в свой install.wim, чтобы избежать необходимости делать это после каждой установки.)

(Так как конечно требуется неделя и отладчик ядра, чтобы выяснить, что для этого требуется всего лишь двухбитовое изменение в неясном и полностью недокументированном битовом поле.)

Вот почему.

Загрузчик Windows использует встроенные процедуры UEFI для поиска установки Windows и загружает ядро ​​и загрузочные драйверы в оперативную память перед вызовом ExitBootServices. После того, как это сделано и передано управление ядру, ядро ​​не сможет получить доступ к загрузочному тому, если соответствующие драйверы уже не присутствуют в ОЗУ.

Но вот что интересно: winload.efi недостаточно сложен, чтобы перечислить оборудование и определить, какие драйверы действительно требуются. В более старых версиях он загружал только то, что установлено на Boot Start. Однако загрузка посторонних драйверов влечет за собой снижение производительности, и поскольку Windows начала поддерживать больше классов загрузочных устройств, потребовалась лучшая система.

Введите значение BootFlags для отдельных драйверов и значение BootDriverFlags для всей системы. Если (BootFlags & BootDriverFlags)! = 0, драйвер загрузится, даже если для него не задано значение Boot Start. Предполагается, что каждый бит в значении соответствует разному типу оборудования, поэтому значение BootDriverFlags устанавливает, с какого типа оборудования можно загружаться.

Когда этот механизм был представлен, бит 3 был предназначен для загрузочных устройств USB, но загрузка с устройств USB не поддерживалась в стандартной Windows. Версия Hyper-V Server 2008 R2 добавила особую поддержку загрузки с USB, установив для этого значения 0x04, и это значение было установлено в каждой версии Hyper-V Server, выпущенной с тех пор.

Общие улучшения, внесенные с тех пор для поддержки функции Windows To Go, означают, что вам не нужно использовать уловку с загрузкой на VHD, рекомендованную для предыдущих версий Hyper-V Server, установленных на USB-устройствах. Однако они также меняют значение значения BootDriverFlags. Устройства USB 3 получили отдельный бит, а SD-карты - еще один бит.

В версии 2016 года это означает, что значение 0x04 теперь разрешает загрузку только с дисков USB2, которые не являются SD-картами. Все версии Server 2016, кроме Hyper-V Server, поставляются со значением по умолчанию 0x1c, что позволяет загружать USB2, USB3 и SD-карту; однако значение 0x04 по-прежнему установлено в Hyper-V Server, поскольку оно было добавлено в качестве переопределения в процессе сборки образа для версии 2008R2. Однако вместо добавления функции теперь это значение удаляет ее.

Это объясняет, почему некоторые предыдущие решения этой проблемы рекомендовали отключать USB3 и загружаться с USB-накопителя вместо SD-карты: это заставило бы категорию загрузочного устройства быть чем-то по-прежнему охваченным теперь более ограниченным определением «USB бит в BootDriverFlags.

Я выполнил указания к букве (за исключением букв дисков) для Hyper-V Server 2016, и он отлично работал для старого сервера Dell PowerEdge T710. Теперь он работает на внутреннем USB-порту. Однако блок Dell может сообщить системе, что внутренний USB-порт должен отображаться как жесткий диск. Возможно, в этом была разница. Но я могу сказать, что да, вы можете экстраполировать инструкции для 2008 R2 и применить их к серверу HyperV 2016 года.