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.