Як BIOS може блокувати віртуалізацію?


26

Я починаю працювати з Docker і через кілька годин, намагаючись змусити його працювати, я з’ясував, що мій BIOS блокує його і мені потрібно відрегулювати налаштування BIOS. Мені сказали, що BIOS якимось чином пов’язаний з материнською платою.

Як BIOS може блокувати подібний процес, перекриваючи операційну систему?


14
Ви маєте це назад. Налаштування BIOS для віртуалізації кажуть процесору дозволити певний вид обробки. якщо розширення віртуалізації не ввімкнено у біосах, центральний процесор не зможе виконати програму. Ситуація схожа на те, як спробувати запустити програму, складену для архітектури процесора DEC Alpha в системі x64. без розширень програма спробує запустити інструкції, які ЦП не розуміє. Ваш Docker блокує себе виконувати, оскільки він виявив, що ваш процесор, як він налаштований, не може його запустити.
Френк Томас

Відповіді:


37

Справа не в тому, що процесор блокує програму; у нього немає концепції програм на такому низькому рівні. Проблема полягає в тому, що Docker для нелінуксних операційних систем може вимагати віртуалізації обладнання. Ви не вказали свою ОС, але я зробив невеличкий пробіг і виявив, що ви, ймовірно, використовуєте Windows.

Віртуалізація апаратури - це функція процесора, яка, як ви могли здогадатися з назви, дозволяє CPU допомагати у віртуалізації. На багатьох машинах ви повинні ввімкнути це в BIOS. Це, зокрема, для запобігання проблемам безпеки . В основному, ви не можете запустити програму, оскільки вона намагалася використовувати функцію, яка фактично відсутня на відміну від активно заблокованої.


14
a tiny bit of snoopingХа..га
bs677

так, я використовую Windows 7! дякую за пояснення !!! Я зараз це отримую!
Альваро Жоао

Мені знайоме це налаштування, але все ще незрозуміло, що саме є апаратною віртуалізацією (в контексті налаштування BIOS)?
Celeritas

2
@ Віртуалізація апаратних засобів @Celeritas - це набір функцій, що надаються процесором та BIOS, які роблять запуск віртуальних машин більш ефективним, наприклад, прозорим керуванням доступом до пам'яті, зробленим VM, більш ефективним способом, ніж це можна зробити на чистому рівні програмного забезпечення; поводження / захоплення "привілейованих" інструкцій, таких як операції вводу / виводу для програм для віртуалізації для більш ефективного управління.
ζ--

2
@ RACING121 N означає NSA :)
Ben N

41

Відповідь Бен Н явно є найбільш корисною і зрозумілою.

Для тих, хто все ще дивується, однак ось повна історія.


Віртуалізація досягається за допомогою апаратної допомоги з процесора. Оскільки віртуалізована ОС заважатиме хост-серверу, оскільки вони змагаються за одні й ті ж ресурси, необхідний механізм, щоб гостям не можна було мати неконтрольований доступ до обладнання. Це може бути знижено за допомогою програмного забезпечення, повільних методів або за допомогою центрального процесора.

Апаратна віртуалізація реалізована за допомогою конкретних додаткових інструкцій, про них можна прочитати у розділах 23, 24, 25, 26, 27 та 28 Інструкції Intel 3B, частина 3 . Перш ніж спробувати їх використовувати, програмне забезпечення повинно перевірити, чи підтримуються ці інструкції.

З міркувань безпеки ЦП має спеціальний реєстр, це MSR під назвою IA32_FEATURE_CONTROL, який містить біти, що повідомляють з функцією, щоб увімкнути або вимкнути.
Цитуючи

Біт 0 - біт блокування. Якщо цей біт зрозумілий, VMXON викликає виняток із загального захисту. Якщо встановлено біт блокування, WRMSR до цієї MSR викликає виняток із загального захисту; MSR не можна змінювати, поки не буде встановлено стан скидання живлення . Системний BIOS може використовувати цей біт, щоб забезпечити можливість налаштування BIOS для відключення підтримки VMX. Щоб включити підтримку VMX на платформі, BIOS повинен встановити біт 1, біт 2 або обидва (див. Нижче), а також біт блокування.

Фундаментальний момент полягає в тому, що як тільки реєстр заблокований, його не можна розблокувати до включення живлення .

Оскільки BIOS / UEFI стає першим, він може вимкнути віртуалізацію, очистивши відповідні біти та заблокувавши реєстр, перш ніж будь-яка ОС може запобігти цьому. Коли функція віртуалізації відключена таким чином, ЦП повідомляє, що додаткове розширення інструкції відсутнє (і фактично несправності, якщо вони використовуються), і тому програмне забезпечення не може використовувати віртуалізацію обладнання.


2
Це дуже гарне доповнення до питання. Більшість людей не мають уявлення, що налаштування потребує зміни скидання, тому його не можна вмикати "під час руху" під час роботи ОС.
Тонні

ОХ, так ось як це працює! Я погуглив це і знайшов вашу відповідь (що мене цікавить, мої особисті поняття)
Пол Стеліан
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.