Son zamanlarda bu sorunla karşılaştım ve hata ayıklamadan birkaç gün sonra sorunu keşfettim ve düzelttim.
Drumroll lütfen:
Hyper-V Server 2016'yı yükledikten sonra, yeni yüklemenin SİSTEM kovanını monte etmek için çevrimdışı bir araç (örneğin Windows PE gibi) kullanın ve DWORD ControlSet001 \ Control \ BootDriverFlags'ı 0x04 yerine 0x1c olarak değiştirin. (Muhtemelen iyi bir ölçüm için ControlSet002 sürümünü de değiştirmelisiniz ve her kurulumdan sonra bunu yapmaktan kaçınmak için değişiklikleri install.wim içinde pişirebilirsiniz.)
( Tabii ki , bir hafta ve bir çekirdek hata ayıklayıcısının, karanlık ve iyice belgelendirilmemiş bit alanında sadece iki bitlik bir değişiklik gerektirdiğini anlaması gerekir.)
İşte nedeni.
Windows önyükleme yükleyicisi, Windows yüklemesini bulmak için yerleşik UEFI yordamlarını kullanır ve ExitBootServices'i çağırmadan önce çekirdek ve önyükleme sürücülerini RAM'a yükler. Bunu yaptıktan ve kontrolü çekirdeğe geçtikten sonra, uygun sürücüler RAM'de zaten mevcut değilse, çekirdek önyükleme birimine erişemez.
İşte kicker: winload.efi, donanımı numaralandırmak ve hangi sürücülerin gerçekten gerekli olduğunu belirlemek için yeterince karmaşık değil. Daha eski sürümlerde yalnızca Önyükleme Başlat olarak ayarlanan şeyler yüklenir. Ancak, yabancı sürücülerin yüklenmesi performans cezasına neden olur ve Windows daha fazla sınıf önyükleme aygıtını desteklemeye başladığında daha iyi bir sisteme ihtiyaç duyulur.
Tek tek sürücülere BootFlags değerini ve sistem genelinde BootDriverFlags değerini girin. (BootFlags & BootDriverFlags)! = 0 ise, sürücü Boot Start olarak ayarlanmamış olsa bile yüklenir. Değerdeki her bitin farklı türde bir donanıma karşılık gelmesi gerekir, bu nedenle BootDriverFlags değeri hangi donanım türlerinin önyüklenebileceğini ayarlar.
Bu mekanizma tanıtıldığında, Bit 3 USB önyükleme aygıtları için atanmıştı, ancak USB aygıtlarından önyükleme standart Windows'ta desteklenmedi. Hyper-V Server 2008 R2 sürümü, bu değeri 0x04 olarak ayarlayarak USB'den önyükleme için özel destek ekledi ve bu değer, o zamandan beri yayımlanan her Hyper-V Sunucusu sürümünde ayarlandı.
O zamandan beri Windows To Go özelliğini desteklemek için yapılan genel iyileştirmeler, USB cihazlarda yüklü Hyper-V Server'ın önceki sürümleri için önerilen önyükleme-VHD hile kullanmanız gerekmediği anlamına gelir. Ancak, BootDriverFlags değerinin anlamını da değiştirirler. USB 3 cihazlarına ayrı bir bit verildi ve SD kartlara özel olarak başka bir bit verildi.
2016 sürümünde, bu, 0x04 değerinin artık yalnızca SD kart olmayan USB2 disklerinden önyüklemeyi etkinleştirdiği anlamına gelir. Hyper-V Server dışındaki tüm Server 2016 sürümleri, varsayılan değer olan 0x1c ile birlikte gelir; bu da USB2, USB3 ve SD kart önyüklemesini etkinleştirir; ancak, 0x04 değeri yine de Hyper-V Server'da ayarlanmıştır, çünkü 2008R2 sürümü için görüntü oluşturma işlemine geçersiz kılma olarak eklenmiştir. Ancak, bir özellik eklemek yerine, bu değer artık onu kaldırıyor.
Bu, bu soruna önceki bazı çözümlerin neden USB3'ü devre dışı bırakmayı ve SD kart yerine bir USB çubuğundan önyüklemeyi önerdiğini açıklıyor: bu, önyükleme aygıtının kategorisini "USB'nin şimdi daha sınırlı olan tanımının hala kapladığı bir şey olmaya zorlayacaktır. msgstr "BootDriverFlags içinde bit".