BIOS는 어떻게 가상화를 차단할 수 있습니까?


26

Docker로 작업을 시작하고 몇 시간 동안 작동하려고 시도한 후 BIOS가이를 차단하고 BIOS 설정을 조정해야한다는 것을 알았습니다. BIOS가 어떻게 든 마더 보드와 관련이 있다고 들었습니다.

BIOS가 어떻게 이런 종류의 프로세스를 차단하여 운영 체제를 방해 할 수 있습니까?


14
당신은 그것을 뒤로했습니다. 가상화를위한 BIOS 설정은 특정 종류의 처리를 허용하도록 CPU에 지시합니다. BIOS에서 가상화 확장이 활성화되어 있지 않으면 CPU가 프로그램을 실행할 수 없습니다. 상황은 x64 시스템에서 DEC Alpha 프로세서 아키텍처 용으로 컴파일 된 프로그램을 실행하는 것과 비슷합니다. 확장명이 없으면 프로그램은 CPU가 이해하지 못하는 명령을 실행하려고 시도합니다. Docker가 현재 구성된 CPU가 실행할 수 없음을 감지하여 자체 실행을 차단하고 있습니다.
Frank Thomas

답변:


37

CPU가 프로그램을 차단하고있는 것은 아닙니다. 낮은 수준의 앱 개념이 없습니다. 문제는 Linux 이외의 운영 체제에서 Docker 는 하드웨어 가상화가 필요할 수 있다는 것입니다. OS를 지정하지 않았지만 약간의 스누핑을 수행하여 Windows를 사용하고 있음을 발견했습니다.

하드웨어 가상화는 이름에서 알 수 있듯이 CPU가 가상화에 도움을주는 CPU 기능입니다. 많은 컴퓨터에서 BIOS에서 활성화해야합니다. 이것은 부분적으로 보안 문제방지 하기 위한 것 입니다. 기본적으로 적극적으로 차단되지 않고 효과적으로 부재했던 기능을 사용하려고했기 때문에 프로그램을 시작할 수 없습니다.


14
a tiny bit of snoopingHa..ha
bs677

예, 저는 윈도우 7을 사용하고 있습니다! 설명 주셔서 감사합니다 !!! 이제 이해가된다!
Alvaro Joao 1

이 설정에 익숙하지만 여전히 확실하지 않습니다 (BIOS 설정의 맥락에서) 하드웨어 가상화가 정확히 무엇입니까?
Celeritas

2
@Celeritas 하드웨어 가상화는 CPU 및 BIOS에서 제공하는 일련의 기능으로 가상 소프트웨어를 순수 소프트웨어 수준에서 수행 할 수있는 것보다 더 효율적인 방식으로 VM에서 수행 한 메모리 액세스를 투명하게 관리하는 등 가상 시스템을보다 효율적으로 실행합니다. 가상화 소프트웨어가보다 효율적으로 처리 할 수 ​​있도록 I / O 작업과 같은 "권한있는"명령 처리 / 트랩
ζ--

2
@ RACING121 N은 NSA의 약자 :)
Ben N

41

Ben N 답변은 가장 유용하고 명확한 답변입니다.

그러나 여전히 궁금한 사람들을 위해 여기에 전체 이야기가 있습니다.


가상화는 CPU의 하드웨어 지원으로 이루어집니다. 가상화 된 OS는 호스트 하나를 방해하므로 동일한 리소스에 대해 경쟁하므로 게스트가 하드웨어에 대한 액세스를 제어 할 수 없도록하는 메커니즘이 필요합니다. 소프트웨어, 속도가 느린 기술 또는 CPU의 도움으로 다운 될 수 있습니다.

하드웨어 지원 가상화는 특정 선택적 지침으로 구현되며 인텔 매뉴얼 3B 파트 3의 23, 24, 25, 26, 27 및 28 장에서 읽을 수 있습니다 . 소프트웨어는 사용하기 전에 먼저이 지침이 지원되는지 확인해야합니다.

보안상의 이유로 CPU에는 특수 레지스터가 있으며 , IA32_FEATURE_CONTROL 이라는 MSR 은 활성화 또는 비활성화하는 기능을 나타내는 비트를 보유합니다.
인용

비트 0은 잠금 비트입니다. 이 비트가 지워지면 VMXON은 일반 보호 예외를 발생시킵니다. 잠금 비트가 설정되면이 MSR에 대한 WRMSR은 일반 보호 예외를 발생시킵니다. MSR은 파워 업 리셋 조건이 될 때까지 수정할 수 없습니다 . 시스템 BIOS는이 비트를 사용하여 VMX 지원을 비활성화하기위한 BIOS 설정 옵션을 제공 할 수 있습니다. 플랫폼에서 VMX 지원을 활성화하려면 BIOS가 잠금 비트뿐만 아니라 비트 1, 비트 2 또는 둘 다 (아래 참조)를 설정해야합니다.

기본 사항은 일단 레지스터가 잠기면 전원을 켤 때까지 잠금을 해제 할 수 없다는 것 입니다.

BIOS / UEFI가 먼저 나오므로, 적절한 비트를 지우고 레지스터를 잠그면 가상화가 비활성화되어 OS가이를 방지 할 수 있습니다. 이 방법으로 가상화 기능이 비활성화되면 CPU는 옵션 확장 기능이 누락되어 실제로 사용되는 경우 오류가 발생하여 소프트웨어가 하드웨어 가상화를 사용할 수 없다고보고합니다.


2
그것은 질문에 아주 좋은 추가 기능입니다. 대부분의 사람들은 설정을 변경하기 위해 재설정이 필요하다는 것을 알지 못하므로 OS가 실행되는 동안 "즉시"활성화 할 수 없습니다.
Tonny

OHH 그래서 그것이 작동하는 방법입니다! 나는 그것을 구글 검색하고 귀하의 답변을 찾았습니다 (개인 개념에 관심이 있습니다)
Paul Stelian
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.