BIOS สามารถบล็อกการจำลองเสมือนได้อย่างไร


26

ฉันเริ่มทำงานกับ Docker และหลังจากไม่กี่ชั่วโมงของการพยายามทำให้มันทำงานได้ฉันพบว่า BIOS ของฉันบล็อกอยู่และฉันจำเป็นต้องปรับการตั้งค่า BIOS ฉันบอกว่า BIOS นั้นเกี่ยวข้องกับเมนบอร์ด

BIOS จะบล็อกกระบวนการประเภทนี้ได้อย่างไรโดยแทนที่ระบบปฏิบัติการ


14
คุณมีมันย้อนหลัง การตั้งค่า BIOS สำหรับการจำลองเสมือนบอก CPU ให้อนุญาตการประมวลผลเฉพาะประเภท หากไม่ได้เปิดใช้งานส่วนขยายการจำลองเสมือนในไบออส CPU จะไม่สามารถเรียกใช้งานโปรแกรมได้ สถานการณ์เป็นเหมือนการพยายามเรียกใช้โปรแกรมที่คอมไพล์ด้วยสถาปัตยกรรมโพรเซสเซอร์ DEC Alpha บนระบบ x64 โปรแกรมจะพยายามเรียกใช้คำสั่งที่ CPU ไม่เข้าใจ Docker ของคุณบล็อกตัวเองไม่ให้ทำงานเนื่องจากตรวจพบว่า CPU ของคุณเนื่องจากมีการกำหนดค่าไว้ในปัจจุบันไม่สามารถเรียกใช้ได้
Frank Thomas

คำตอบ:


37

ไม่ใช่ว่า CPU กำลังบล็อกโปรแกรมอยู่ มันไม่มีแนวคิดของแอพที่ระดับต่ำ ปัญหาคือนักเทียบท่าบนระบบปฏิบัติการที่ไม่ใช่ Linuxอาจต้องการฮาร์ดแวร์เสมือนจริง คุณยังไม่ได้ระบุระบบปฏิบัติการของคุณ แต่ฉันทำการสอดแนมเล็กน้อยและพบว่าคุณอาจใช้ Windows

การจำลองเสมือนสำหรับฮาร์ดแวร์เป็นคุณลักษณะของ CPU ที่ตามที่คุณอาจคาดเดาได้จากชื่อให้ใช้ CPU ช่วยในการจำลองเสมือน ในหลาย ๆ เครื่องคุณต้องเปิดใช้งานใน BIOS นี่คือในส่วนที่จะป้องกันไม่ให้เกิดปัญหาด้านความปลอดภัย โดยพื้นฐานแล้วคุณไม่สามารถเริ่มโปรแกรมได้เนื่องจากพยายามใช้คุณลักษณะที่หายไปอย่างมีประสิทธิภาพเมื่อเทียบกับการบล็อกอย่างแข็งขัน


14
a tiny bit of snoopingHa..ha
bs677

ใช่ฉันใช้ windows 7! ขอบคุณสำหรับคำอธิบาย !!! ฉันเข้าใจแล้ว!
Alvaro Joao

ฉันคุ้นเคยกับการตั้งค่านี้ แต่ยังไม่ชัดเจนว่าการจำลองเสมือนด้วยฮาร์ดแวร์คืออะไร (ในบริบทของการตั้งค่า BIOS)
Celeritas

2
@Celeritas Hardware virtualization เป็นชุดคุณสมบัติที่จัดทำโดย CPU และ BIOS ที่ทำให้การรันเครื่องเสมือนมีประสิทธิภาพมากขึ้นเช่นโดยการจัดการการเข้าถึงหน่วยความจำที่โปร่งใสโดย VM ในวิธีที่มีประสิทธิภาพมากกว่าที่จะทำได้ในระดับซอฟต์แวร์ที่บริสุทธิ์และ คำแนะนำในการจัดการ / การวางกับดัก "สิทธิพิเศษ" เช่นการดำเนินการ I / O สำหรับซอฟต์แวร์การจำลองเสมือนเพื่อการจัดการที่มีประสิทธิภาพยิ่งขึ้น
ζ--

2
@ RACING121 The N หมายถึง NSA :)
Ben N

41

คำตอบของเบ็นเอ็นเป็นคำตอบที่มีประโยชน์และชัดเจน

สำหรับผู้ที่ยังสงสัย แต่ที่นี่เป็นเรื่องเต็ม


การจำลองเสมือนทำได้ด้วยการช่วยเหลือของฮาร์ดแวร์จาก CPU เนื่องจากระบบปฏิบัติการเสมือนจริงจะรบกวนการทำงานของโฮสต์ในขณะที่แข่งขันกันเพื่อใช้ทรัพยากรเดียวกันจึงจำเป็นต้องมีกลไกในการหยุดแขกจากการเข้าถึงฮาร์ดแวร์ที่ไม่สามารถควบคุมได้ สิ่งนี้อาจลงกับซอฟต์แวร์ช้าเทคนิคหรือด้วยความช่วยเหลือจาก CPU

virtualization ฮาร์ดแวร์ช่วยถูกนำมาใช้กับเฉพาะตัวเลือกคำแนะนำคุณสามารถอ่านเกี่ยวกับเรื่องนี้ในบทที่ 23, 24, 25, 26, 27 และ 28 ของอินเทลคู่มือ 3B ส่วนที่ 3 ซอฟต์แวร์จะต้องตรวจสอบคำแนะนำนี้ก่อนที่จะได้รับการสนับสนุนก่อนที่จะพยายามใช้

เพื่อเหตุผลด้านความปลอดภัย CPU มีการลงทะเบียนพิเศษมันเป็นMSR ที่เรียกว่า IA32_FEATURE_CONTROLที่เก็บบิตบอกด้วยคุณสมบัติในการเปิดหรือปิด
quoting

บิต 0 คือบิตล็อค หากบิตนี้ชัดเจน VMXON จะทำให้เกิดข้อยกเว้นการป้องกันทั่วไป หากล็อคบิตตั้งไว้ WRMSR เป็น MSR นี้จะทำให้เกิดข้อยกเว้นการป้องกันทั่วไป ปฏิกรณ์ไม่สามารถแก้ไขได้จนกว่าจะมีอำนาจขึ้นสภาพรีเซ็ต BIOS ระบบสามารถใช้บิตนี้เพื่อจัดเตรียมตัวเลือกการตั้งค่าสำหรับ BIOS เพื่อปิดใช้งานการสนับสนุน VMX ในการเปิดใช้งานการรองรับ VMX ในแพลตฟอร์ม BIOS ต้องตั้งค่าบิต 1, บิต 2 หรือทั้งสองอย่าง (ดูด้านล่าง) รวมถึงล็อคบิต

จุดพื้นฐานคือว่าครั้งหนึ่งเคยลงทะเบียนถูกล็อคจะไม่สามารถปลดล็อคจนกว่าจะมีอำนาจขึ้น

เนื่องจาก BIOS / UEFI มาก่อนจึงมีอำนาจในการปิดใช้งานการจำลองเสมือนโดยการล้างบิตที่เหมาะสมและล็อคการลงทะเบียนก่อนที่ระบบปฏิบัติการใด ๆ จะสามารถป้องกันได้ เมื่อปิดใช้งานคุณลักษณะการจำลองเสมือนด้วยวิธีนี้ CPU รายงานว่าส่วนขยายการเรียนการสอนทางเลือกขาดหายไป (และจริง ๆ แล้วมีข้อผิดพลาดหากใช้) และซอฟต์แวร์ไม่สามารถใช้การจำลองเสมือนสำหรับฮาร์ดแวร์ได้


2
นั่นเป็นส่วนเสริมที่ดีมากสำหรับคำถาม คนส่วนใหญ่ไม่ทราบว่าการตั้งค่าจำเป็นต้องรีเซ็ตเพื่อเปลี่ยนดังนั้นจึงไม่สามารถเปิดใช้งาน "ในทันที" ในขณะที่ระบบปฏิบัติการกำลังทำงาน
Tonny

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