64-bitowy gość Windows w VirtualBox jest niemożliwy bez obsługi VT-x? [duplikować]

8

Pomyślnie zainstalowałem system Windows Vista 32-bit na maszynie wirtualnej z VirtualBox. Teraz próbuję zrobić to samo z 64-bitowym systemem Windows Vista i to po prostu nie działa. Stworzyłem maszynę wirtualną, ale wygląda na to, że nie uruchomi się z 64-bitowego obrazu ISO Vista. Wyrzuca ten błąd menedżera rozruchu.

za

System operacyjny to Windows 7 64-bit na 64-bitowym procesorze Intel Core 2 Duo. Teraz zrobiłem to samo i zainstalowałem tę samą wersję VirtualBox na innym komputerze, również z systemem Windows 7 64-bit, utworzyłem maszynę wirtualną, a następnie ... podczas procesu instalacji maszyny wirtualnej zauważyłem, że ma ona dodatkowe opcje do wyboru kiedy wybieram gościa Os. Oto zrzut ekranu.

b

Możesz zobaczyć te opcje pomiędzy, tam gdzie jest napisane 64-bit, nie mam tych opcji na tym drugim komputerze. Teraz ten obsługuje Intel Core 2 Quad, model wyższej klasy. Obsługuje technologię wirtualizacji Intel, a druga nie.

Tak wygląda to samo okno dialogowe na komputerze Core 2 Duo. Oto zrzut ekranu.

do

Czy to może być powód? Czy to oznacza, że ​​nie można w ogóle emulować 64-bitowego systemu operacyjnego Windows za pomocą VirtualBox, chyba że procesor obsługuje technologię wirtualizacji Intel? Rozumiem, że ta technologia znacznie przyspiesza, ale nie pozwala w ogóle naśladować tego systemu operacyjnego ... to trochę ekstremalne, prawda?

Jeśli tak, to co sugerujesz, żebym zamiast tego użył?

Samir
źródło
@Ramhound Czy właśnie zapytałeś, czy jestem pewien, że korzystam z 64-bitowego systemu operacyjnego, a potem zmieniłeś zdanie? Mam komentarz w mojej skrzynce odbiorczej. Cóż, niezależnie od wartości, tak, jestem pewien, że na obu komputerach działa 64-bitowa wersja systemu Windows 7.
Samir
@Ramhound Ograniczenie sprzętu? Zgadzasz się, że ma to związek z obsługą VT-x, a raczej z jej brakiem?
Samir
Niezależnie od ograniczeń sprzętowych zawsze powinieneś być w stanie robić rzeczy w oprogramowaniu. To jedna z zalet wirtualizacji, ponieważ pozwala całkowicie zastąpić fizyczny sprzęt w oprogramowaniu. Wiem, że warto korzystać z Intel VT-x, ale dlaczego nie miałbyś być w stanie emulować 64-bitowego systemu operacyjnego w VirtualBox wszystko w oprogramowaniu, nawet jeśli jest on bardzo wolny? Dlaczego oni na to nie pozwalają? Jest to raczej ograniczenie w VirtualBox.
Samir
Emm ... nie masz na myśli "nie możesz zrobić czegoś w oprogramowaniu, jeśli sprzęt go nie obsługuje"?
Samir

Odpowiedzi:

18

Sekcja 3.1.2 podręcznika VirtualBox wyraźnie stwierdza, że ​​do obsługi 64-bitowych systemów operacyjnych gości wymagana jest obsługa wirtualizacji sprzętowej (podkreślenie dodane):

VirtualBox obsługuje 64-bitowe systemy operacyjne gościa, nawet w 32-bitowych systemach operacyjnych hosta, pod warunkiem spełnienia następujących warunków:

  1. Potrzebujesz 64-bitowego procesora z obsługą wirtualizacji sprzętowej (patrz Rozdział 10.3, „Wirtualizacja sprzętowa a programowa”).

  2. Musisz włączyć wirtualizację sprzętową dla konkretnej maszyny wirtualnej, dla której chcesz obsługiwać 64-bit; wirtualizacja oprogramowania nie jest obsługiwana dla 64-bitowych maszyn wirtualnych.

  3. Jeśli chcesz korzystać z 64-bitowej obsługi gościa w 32-bitowym systemie operacyjnym hosta, musisz także wybrać 64-bitowy system operacyjny dla konkretnej maszyny wirtualnej. Ponieważ obsługa 64 bitów na hostach 32-bitowych powoduje dodatkowe obciążenie, VirtualBox włącza tę obsługę tylko na wyraźne żądanie.

Źródło: https://www.virtualbox.org/manual/ch03.html#intro-64bitguests

Sekcja 10.3 również to stwierdza (podkreślenie dodane):

64-bitowa obsługa gościa VirtualBox (dodana z wersją 2.0) i wieloprocesowość (SMP, dodana z wersją 3.0) wymagają włączenia wirtualizacji sprzętowej . (Nie stanowi to większego ograniczenia, ponieważ zdecydowana większość dzisiejszych 64-bitowych i wielordzeniowych procesorów jest i tak wyposażona w sprzętową wirtualizację; wyjątkami od tej reguły są np. Starsze procesory Intel Celeron i AMD Opteron.)

Źródło: https://www.virtualbox.org/manual/ch10.html#hwvirt

Tak więc potrzebujesz procesora obsługującego VT-x lub AMD-V do korzystania z 64-bitowych gości w VirtualBox. Jednak QEMU, Bochs i VMWare Player obsługują 64-bitowych gości bez obsługi wirtualizacji sprzętowej (przynajmniej zgodnie z tą stroną ).

nc4pk
źródło
Tak ... i to niefortunne. Myślałem, że dotyczy to tylko 64-bitowych gości na 32-bitowych hostach. Ale z rozdziału 10 wyraźnie mówią, że wirtualizacja sprzętu jest wymogiem. Zastanawiam się jednak, dlaczego nie jest to wymóg dla gości 32-bitowych? Dlaczego tylko 64-bit?
Samir
Głosowałem za tobą, mimo że opublikowałem już ten dokładny tekst we własnej odpowiedzi. Dzięki za wysiłek! Scalę moją odpowiedź z twoją, jeśli to w porządku.
Samir
Czy znasz inne oprogramowanie do wirtualizacji (najlepiej bezpłatne i open source), które może emulować 64-bitowy system Windows bez obsługi wirtualizacji sprzętowej?
Samir
@sammyg wygląda na to, że QEMU, Bochs i VMWare Player to obsługują, zobacz moją ostatnią wersję.
nc4pk
Nie prawda. Odtwarzacz VMware wymaga także wirtualizacji, aby uruchomić 64-bitowe odgadywanie, podobnie jak inne hiperwizory. Można jedynie uruchomić 64-bitowe zgadywanie bez wirtualizacji na emulatorze takim jak Bochs lub qemu lub oprogramowaniu do parawirtualizacji, takim jak Xen en.wikipedia.org/wiki/Vt-x#Software-based_virtualization
phuclv
0

Żaden hiperwizor maszyny wirtualnej nie obsługuje 64-bitowych maszyn wirtualnych w procesorze x86 bez wirtualizacji, ponieważ bez niego izolacja maszyny wirtualnej byłaby niemożliwa .

Powód został wymieniony w Wikipedii (moje podkreślenie):

Wstępna wersja x86-64 (AMD64) nie pozwalają na oprogramowanie tylko pełnej wirtualizacji ze względu na brak wsparcia segmentacji w trybie długiego , który wydał ochrony pamięci hypervisor niemożliwe , w szczególności w zakresie ochrony obsługi pułapkę działający w przestrzeni adresowej jądra gościa.

Wersja D i późniejsze 64-bitowe procesory AMD (z reguły te produkowane przy 90 nm lub mniej) dodały podstawową obsługę segmentacji w trybie długim, umożliwiając obsługę 64-bitowych gości na 64-bitowych hostach poprzez tłumaczenie binarne . Intel nie dodał obsługi segmentacji do swojej implementacji x86-64 (Intel 64), co uniemożliwia 64-bitową wirtualizację samego oprogramowania na procesorach Intel, ale obsługa Intel VT-x umożliwia 64-bitową sprzętową wirtualizację na platformie Intel

VMWare powiedział również, że brak wirtualizacji powoduje, że podważa ochronę maszyny wirtualnej

Wyzwania związane z wirtualizacją x86-64

  • Początkowa architektura AMD64 nie obejmowała segmentacji w trybie 64-bitowym
    • Brakuje również segmentacji w EM64T

Jak chronimy VMM?

  • Obsługa 64-bitowych gości wymaga dodatkowej pomocy sprzętowej
    • Kontrola limitów segmentów dostępna w trybie 64-bitowym na nowszych procesorach AMD
    • VT-x może być używany do ochrony VMM na EM64T
      • Wymaga podejścia pułapkuj-emuluj zamiast BT

Czytaj więcej:

Procesory Intel wymagają obsługi EM64T i VT w układzie scalonym i systemie BIOS do obsługi 64-bitowych maszyn wirtualnych. Ten artykuł pomaga upewnić się, że procesor obsługuje technologię VT, a także instruuje, jak włączyć tę funkcję
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1003944


Jedynym sposobem w tym przypadku jest użycie emulatora, takiego jak QEMU lub Bochs , lub oprogramowania do parawirtualizacji, takiego jak Xen.

Czytaj więcej: Uruchamianie ASM x86-64 na procesorze x86-32

phuclv
źródło