กำลังพยายามเรียกใช้ Hyper-v 2016 จาก USB


10

เคยลองทดสอบ Hyper-v 2016 ช่วงบ่ายนี้ แต่ฉันไม่สามารถรับ R630 ของฉันเพื่อบูตจาก USB ที่ฉันกำหนดค่าโดยใช้คำแนะนำต่อไปนี้https://technet.microsoft.com/library/ee731893(ws.10).aspx

ฉันใช้แนวทางเดียวกันนี้กับ Hyper-v 2012 R2 โดยไม่มีปัญหา

ใครมีโชคกับเรื่องนี้?


1
Windows Server 2016 ไม่ใช่ Windows Server 2008 R2, Windows Server 2012 หรือ Windows Server 2012 R2 อะไรทำให้คุณคิดว่าควรจะทำงานได้ดี? ฉันไม่พบเอกสาร MS ใด ๆ เพื่อแนะนำว่าเป็นไปได้
joeqwerty

3
เนื่องจากไมโครซอฟท์มีความล่าช้าในการอัปเดตเอกสารที่คิดเกี่ยวกับปัญหาทั้งหมดที่เกิดขึ้นกับระบบมันเป็นเรื่องยากที่จะทำให้เอกสารออนไลน์ทั้งหมดเป็นปัจจุบันมันจะต้องใช้เวลา ....... ไม่มีเหตุผลว่าทำไมมันจึงไม่ทำงาน นั่น ......
มิคาล

คำตอบ:


8

ฉันพบข้อมูลเกี่ยวกับการปรับใช้ 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

มันเป็นตัวเลือกที่ถูกและมีขนาดเล็กสำหรับคุณ คุณสามารถปรับใช้ระบบปฏิบัติการใด ๆ กับมัน ดังนั้นมันก็เป็นตัวเลือกเช่นกัน


3

ฉันพบปัญหานี้เมื่อเร็ว ๆ นี้และหลังจากการดีบักหลายวันฉันได้ค้นพบปัญหาและแก้ไขได้

กรุณา Drumroll:

หลังจากติดตั้งเซิร์ฟเวอร์ Hyper-V 2016 ให้ใช้เครื่องมือออฟไลน์ (เช่นพูด Windows PE) เพื่อติดตั้งไฮฟ์ระบบของการติดตั้งใหม่และเปลี่ยน DWORD ControlSet001 \ Control \ BootDriverFlags จาก 0x04 เป็น 0x1c (คุณควรเปลี่ยนรุ่น ControlSet002 เช่นกันเพื่อวัดผลที่ดีและคุณสามารถอบการเปลี่ยนแปลงลงใน install.wim ของคุณเพื่อหลีกเลี่ยงการทำเช่นนี้หลังจากการติดตั้งแต่ละครั้ง)

(เพราะแน่นอนว่ามันต้องใช้เวลาหนึ่งสัปดาห์และเคอร์เนลดีบักเกอร์จะต้องรู้ว่ามันต้องใช้การเปลี่ยนแปลงสองบิตใน bitfield ที่ไม่ชัดเจนและไม่มีเอกสารอย่างละเอียด)

นี่คือเหตุผล

ตัวบูตการบูตของ Windows ใช้รูทีน UEFI ในตัวเพื่อค้นหาการติดตั้ง Windows และโหลดเคอร์เนลและไดรเวอร์การบูตเป็น RAM ก่อนที่จะเรียก ExitBootServices เมื่อทำเช่นนั้นแล้วและผ่านการควบคุมไปยังเคอร์เนลเคอร์เนลไม่สามารถเข้าถึงโวลุ่มการบูตเว้นแต่ว่ามีไดรเวอร์ที่เหมาะสมอยู่ใน RAM แล้ว

แม้ว่านี่คือนักเตะ: 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 ทุกรุ่นตั้งแต่นั้นเป็นต้นมา

การปรับปรุงทั่วไปที่ทำตั้งแต่นั้นมาเพื่อรองรับคุณสมบัติ Windows To Go หมายความว่าคุณไม่จำเป็นต้องใช้เคล็ดลับ boot-to-VHD ที่แนะนำสำหรับ Hyper-V Server รุ่นก่อนหน้าที่ติดตั้งบนอุปกรณ์ USB อย่างไรก็ตามพวกเขายังเปลี่ยนความหมายของค่า BootDriverFlags อุปกรณ์ USB 3 ได้รับการแยกบิตและการ์ด SD ได้รับโดยเฉพาะอีกบิต

ในเวอร์ชั่น 2016 หมายความว่าค่า 0x04 ในตอนนี้เปิดใช้งานการบูตจากดิสก์ USB2 ที่ไม่ใช่การ์ด SD เท่านั้น Server 2016 ทุกรุ่นยกเว้นเซิร์ฟเวอร์ Hyper-V มาพร้อมกับค่าเริ่มต้นที่ 0x1c ซึ่งเปิดใช้งานการบูต USB2, USB3 และ SD การ์ด; อย่างไรก็ตามค่า 0x04 ยังคงถูกตั้งค่าในเซิร์ฟเวอร์ Hyper-V เนื่องจากถูกเพิ่มเป็นการแทนที่ในกระบวนการสร้างรูปภาพสำหรับรุ่น 2008R2 อย่างไรก็ตามแทนที่จะเพิ่มสถานที่ตอนนี้ค่านี้จะลบออก

สิ่งนี้อธิบายว่าทำไมการแก้ไขปัญหาก่อนหน้านี้ของปัญหานี้จึงแนะนำให้ปิดการใช้งาน USB3 และการบูตจาก USB stick แทนการ์ด SD: สิ่งนี้จะบังคับให้หมวดหมู่ของอุปกรณ์สำหรับบูตเป็นสิ่งที่ยังคงครอบคลุมอยู่ในคำจำกัดความ บิตใน BootDriverFlags


รายการของค่าสถานะและความหมายสามารถดูได้ที่นี่: docs.microsoft.com/en-us/windows-hardware/drivers/install/…
RJ Cuthbertson

@RJCuthbertson ดีมาก!
Reid Rankin

1

ฉันทำตามคำแนะนำไปยังตัวอักษร (ยกเว้นเพียงตัวอักษรไดรฟ์) สำหรับ Hyper-V Server 2016 และมันทำงานได้อย่างสมบูรณ์แบบสำหรับเซิร์ฟเวอร์ Dell PowerEdge T710 รุ่นเก่า กำลังทำงานบนพอร์ต USB ภายในทันที อย่างไรก็ตามหน่วย Dell สามารถบอกระบบว่า USB ภายในควรปรากฏเป็นฮาร์ดดิสก์ นั่นอาจจะเป็นความแตกต่าง แต่ฉันสามารถพูดได้ว่าใช่คุณสามารถคาดการณ์คำแนะนำสำหรับ 2008 R2 และใช้กับเซิร์ฟเวอร์ HyperV 2016 ได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.