가상 머신이 모든 호스트 CPU 확장을 허용하지 않습니까?


0

편의를 위해 Windows 7 호스트의 VirtualBox 내부에서 게스트로 Gentoo Linux의 "정규"설치를 실행하려고합니다. VirtualBox를 사용하여 설치를 부트 스트랩했습니다. 그러나 이제 컴파일러 플래그에서 -march = native를 사용하여 Portage의 모든 패키지를 필연적으로 재 구축 한 후 모든 사소한 프로그램 (사소한 = ls, cd, cat, 사소하지 않은 = vim, man, 기본적으로 c ++ 표준 라이브러리에 연결된 모든 항목은 시작시 거의 즉시 종료됩니다. 커널 로그는 마치 프로그램이 호스트 CPU가 지원하지 않는 CPU 확장으로 컴파일 된 것처럼 불법 명령을 덫을 놓았다는 것을 나타냅니다. 그러나 그렇습니다! VirtualBox와 같은 하이퍼 바이저에 대한 나의 이해는 프로그램이 여전히 기본적으로 베어 메탈에서 실행되어야한다는 것입니다.

내 질문은, 무엇을 제공합니까? VM은 호스트 CPU에서 사용할 수있는 일부 지침 만 사용할 수 있습니까? 아니면 이것은 완전히 다른 문제입니까?


2
호스트 BIOS에서 가상화 확장을 사용할 수 있습니까? CPU / Mobo가 Intel 또는 AMD 가상화 확장을 지원하지 않으면 많은 호스트 CPU 기능을 사용할 수 없습니다. Virtualbox와 같은 유형 2 하이퍼 바이저는 가상 하드웨어와 물리적 하드웨어간에 매우 두꺼운 추상화 계층을 가지고 있습니다. 이것이 유스 케이스에 관심이 있다면 ZenServer 또는 esxi와 같은 type1 하이퍼 바이저 구현을 고려하십시오
Frank Thomas

@FrankThomas가 맞습니다. 유형 1 하이퍼 바이저 인 Hyper-V를 사용하며 Haswell 기반 랩톱에서 이러한 문제가 없습니다. -march=native또는 -march=haswell젠투 게스트에서 작업 실행 파일을 생성한다.
bwDraco

알아 둘만 한! 예, Intel VT-x 확장이 활성화되었습니다. VT-x를 사용할 때 읽은 내용으로 판단하면 하이퍼 바이저가 CPU에서 자체 모드로 실행되고 게스트의 CPU 명령이 간섭없이 실행되며 권한있는 OS 명령 만 트랩되고 수정됩니다. 특정 확장이 그 아래에서 불법 인 이유를 설명하지 않습니다. 그러나 유형 1 하이퍼 바이저는 또 다른 방법으로 배우더라도 좋은 솔루션처럼 들립니다.
Spijdar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.