Czy potrafisz uruchomić emulator maszyny (Bochs) na maszynie wirtualnej?

82

Czy można, powiedzmy, uruchomić VirtualBox na Windows 7 z gościem Linuksa, a na tej maszynie Linuksa uruchomić Bochs?

Powodem jest to, że jestem zainteresowany rozpoczęciem tworzenia systemu operacyjnego i odkryłem, że wszystkie samouczki i inne rzeczy są o wiele łatwiejsze do naśladowania na komputerach * nix. Próbowałem użyć Cygwin, ale myślę, że to dodaje kolejną warstwę złożoności i niekoniecznie ułatwia.

Javier
źródło
1
Podwójne uruchamianie to Linux, a Windows jest stosunkowo łatwy, a efekt końcowy działa znacznie szybciej. Jedynym minusem jest to, że musisz zrestartować komputer, aby przełączyć system operacyjny.
lyallcooper
@AUAnonymous: Wiem o tym, ale chcę nadal korzystać z systemu Windows.
Javier
Jest to zawsze opcja, jeśli nie uda się uruchomić maszyn wirtualnych lub jeśli nie działają one zbyt dobrze.
lyallcooper
12
Będę argumentować, że to pytanie jest źle sformułowane. Bochs nie jest oprogramowaniem do wirtualizacji w tym samym sensie co VirtualBox i VMWare. To jest emulator. Nie oferuje wirtualizacji procesora. To rozróżnienie nie jest jedynie pedantyczne. Możesz oczekiwać, że emulator podobny do bochów będzie działał wewnątrz maszyny wirtualnej z dość dużą pewnością. Uruchomienie prawdziwego oprogramowania do wirtualizacji „zagnieżdżonego” na maszynie wirtualnej jest znacznie trudniejszym problemem. Na przykład ta funkcja została zaimplementowana tylko w VMWare od wersji Fusion 4 .
superbatfish
2
VirtualMachine-ccept: D Istnieje niebezpieczeństwo, że stracisz kontrolę nad poziomem poziomów w maszynach wirtualnych. W tym momencie, gdy zdajesz sobie sprawę, że właśnie uszkodziłeś fizyczny dysk twardy zamiast jednego z zagnieżdżonych wirtualnych, na którym miałeś testować: P
developerbmw

Odpowiedzi:

63

Krótko mówiąc: tak .

Każda maszyna wirtualna jest technicznie „niezależna” od siebie, a dzięki VirtualBox możesz to łatwo zrobić, ponieważ jest obsługiwana zarówno w systemach operacyjnych Windows, jak i Linux (emulowanych lub nie). Możesz po prostu użyć systemu Windows jako systemu operacyjnego „host-baza”, uruchomić Linux na maszynie wirtualnej, a następnie użyć tego systemu operacyjnego jako nowego hosta-bazy dla Bochs.

Pamiętaj, że jedynym ograniczeniem jest tutaj sprzęt. W zależności od wymagań związanych z tworzeniem oprogramowania może być wymagana większa ilość pamięci lub uaktualnienie do 64-bitowego systemu operacyjnego „host podstawowy”. To powiedziawszy, jeśli mądrze wybierzesz swoje dystrybucje Linuksa, każdy nowoczesny system powinien być w stanie dowolnie zagnieżdżać się w ten sposób.

Poprawioną wydajność zobaczysz, jeśli włączysz obsługę wirtualizacji x86 na swoim komputerze (jeśli obsługuje ją Twoja płyta główna i procesor) oraz AFAIK, możesz „przekazać” tę funkcję do wielu zagnieżdżonych maszyn wirtualnych. Jeśli mamy nmaszyny wirtualne zagnieżdżone w siebie, to jest obsługiwane tak długo, jak długo 1st do n-1XX zagnieżdżonego guest OS posiada wsparcie dla wirtualizacji x86 (gospodarz baza musi również obsługiwać go). Pamiętaj, że jeśli będziesz to robił, nadal będziesz mieć problemy z bezpieczeństwem , więc podejmij odpowiednie środki ostrożności.

Przełom
źródło
2
Wygląda na to, że faktycznie działa. W końcu, gdybym potrzebował prędkości, nie używałbym Bochsa. Chociaż nie jestem najbardziej pozytywnie oceniany, uważam, że twoja odpowiedź jest bardziej kompletna i do rzeczy, więc zaakceptuję ją.
Javier,
Czy to tylko ja, czy nie wydaje się, że ta odpowiedź dotyczy uruchamiania wielu maszyn wirtualnych, a nie zagnieżdżonych ?
Thomas Padron-McCarthy
@Thomas Padron-McCarthy, I został mówić o tych zagnieżdżonych. Zmodyfikowałem odpowiedź, aby była bardziej jednoznaczna w tym względzie.
Przełom
7
Bochs nie jest najlepszym przypadkiem testowym dla tego ogólnego pytania, ponieważ jest emulatorem, a nie maszyną wirtualną. (Zobacz mój komentarz do OP.)
superbatfish
Czy tej odpowiedzi nie zaprzecza odpowiedź TobyJa i nierozstrzygnięte żądanie funkcji VirtualBox, do którego prowadzi jego odpowiedź?
ChrisW
40

Czasami prowadzę całą wirtualną infrastrukturę VMware vSphere w ramach VMware Workstation, wraz z wirtualnymi routerami i przełącznikami Cisco oraz EMC Celerra Virtualized Storage Appliance, do celów samokształcenia i testowania.

Nazywam to „Incepcją obliczeniową” i może być dość mylące. Jest to jednak nieco tańsze niż używanie prawdziwego sprzętu.

paradroid
źródło
1
To powinno udowodnić wykonalność tego. vinf.net/2010/02/25/…
Mike Soule
1
@Mike: Twoje dane dotyczące linków z systemem ESXi w ESX, ale użyłem niektórych z nich, takich jak TechHead, który jest jedną z głównych stron, które przede wszystkim skłoniły mnie do wirtualizacji. Istnieje również wiele informacji na temat zarządzania infrastrukturą vSphere w ramach VMware Workstation: google.co.uk/…
paradroid
2
Wiesz, że termin „początek” nie odnosi się do koncepcji [rzecz w obrębie rzeczy], prawda?
ekillaby
7
@countfloortiles: Oczywiście jest to odniesienie do filmu.
paradroid
1
@paradroid powinieneś nazwać „CompCeption” lub „VirtuaCeption”.
Mohd Abdul Mujib
32

Każdemu, kto przeczyta to pytanie, zobaczy zaakceptowaną odpowiedź i uważa, że ​​będzie to dotyczyć również VirtualBox, zapoznaj się z komentarzem @superbatfish na temat pierwotnego pytania. Wskazuje na różnicę między wirtualizacją a emulacją.

W szczególności „VM wspomagana sprzętowo” nie będzie dostępna w systemie-gościu „najwyższego poziomu” (tzn. W chwili pisania tego tekstu VirtualBox nie zapewnia sprzętowej maszyny wirtualnej w systemach-gościach ). Dzięki VirtualBox oznacza to, że możesz tworzyć 32-bitowe systemy operacyjne „zagnieżdżonych gości”, nawet jeśli gość najwyższego poziomu jest 64-bitowy, a „prawdziwy” host ma sprzętową maszynę wirtualną.

Może nie być dla ciebie wizytówką, ale warto to zauważyć. Potrzebowałem tego, aby uruchomić Vagrant na gościu Ubuntu w systemie Windows, aby przetestować książkę kucharską szefa kuchni.

Toby J.
źródło
Czy byłeś w stanie uruchomić Vagrant na gościu Ubuntu na hoście Windows?
wisbucky,
2
@wisbucky tak, mógłbym uruchomić go w trybie 32-bitowym, ale nie 64-bitowym. Ponieważ wszystkie moje systemy produkcyjne są 64-bitowe, nie był to idealny test, ale nadal działał wystarczająco dobrze.
Toby J
3
O ile się nie mylę, możesz teraz uruchomić 64-bitowe moduły Vagrant na maszynie Wirtualnej Ubuntu, używając dostawcy Docker dla Vagrant, ponieważ kontenery nie polegają na wirtualizacji sprzętowej: vagrantup.com/docs/docker . Jednak używane przez ciebie Vagrant będzie musiało to obsługiwać.
Brendan
@Brendan, chyba że musisz uruchamiać określone programy 64-bitowe, a następnie korzystanie z kontenera dokera w porównaniu z uruchomieniem wirtualnego boxu 32-bitowego, czy wydajność jest taka sama, czy jest?
serup
11

Linux-KVM obsługuje pewne zagnieżdżone maszyny wirtualne. Poprosiłem na kanale KVM IRC i otrzymałem następujące informacje (ale nie wierz mi na słowo, spróbuj sam):

  • Procesory AMD powinny działać dobrze, goście z Xen i Hyper-V są znani z pracy,
  • Procesory Intel potrzebują najnowszego kodu źródłowego KVM Git i pracują tylko goście z KVM

Sam jeszcze tego nie próbowałem. Poszukiwanie „KVM nested” powinno dać ci wystarczającą ilość informacji, aby spróbować go sam.

EDYCJA: KVM będzie działał tylko na hoście Linux. Nie otrzymałem żadnych wiarygodnych informacji na temat oprogramowania do wirtualizacji systemu Windows dotyczących prawidłowej obsługi zagnieżdżonych maszyn wirtualnych. Przez „właściwy” rozumiem, że hiperwizor udostępnia gościom rozszerzenia wirtualizacji. Zawsze możesz uruchomić zagnieżdżoną maszynę wirtualną za pomocą czystego oprogramowania hypervisor (np. Tłumaczenie dynamiczne), ale będzie to zauważalnie wolniejsze.

EDYCJA: Bochs, o którym wspomniałeś, jest hiperwizorem wyłącznie programowym. Oznacza to, że zawsze będzie on powolny i nie ma znaczenia, jeśli hiperwizor na hoście udostępnia gościom rozszerzenia wirtualizacji (tak jak robi to KVM). Większość innych programów do wirtualizacji (KVM, VirtualBox, VMWare) może jednak korzystać z tych rozszerzeń i będzie działać znacznie lepiej, jeśli są dostępne.

Ambroz Bizjak
źródło
Do twojej drugiej edycji: Więc jeśli mam po prostu uruchamiać Bochsa (i nie obchodzi mnie zbytnio, jeśli jest powolny), czy muszę się martwić o KVM?
Javier,
Jeśli uruchamiasz Bochs na maszynie wirtualnej, będzie ona tak wolna, jakbyś uruchomił ją na sprzęcie (zakładając, że twój sprzęt ma rozszerzenia wirtualizacji, tj. AMD-v lub VT-x i są włączone w BIOS-ie; w przeciwnym razie będzie to nawet wolniej, podobnie jak wszystko w maszynie wirtualnej).
Ambroz Bizjak
Jeśli chodzi o wirtualizację systemu Windows ... wydaje się to możliwe, ale (od czerwca 2016 r.) Działa tylko z HyperV-on-HyperV, z kompilacjami systemu operacyjnego Windows Insider i na sprzęcie Intel. Od msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/…
Mark,
3

Jest to możliwe, ale niezbyt wykonalne, szczególnie dla rozwoju. Prawdopodobnie powinieneś pomyśleć o uruchomieniu Linuksa jako natywnym systemie operacyjnym lub uzyskaniu drugiego pola do hostowania maszyn wirtualnych.

peelman
źródło
Rozumiem, że to może być skomplikowane, ale co dokładnie masz na myśli mówiąc „niezbyt wykonalne”?
Javier,
1
Założę się, że @peelman znaczy: „Jest zbyt wolny dla celów praktycznych”. Sam tego nie próbowałem.
CarlF,
@carlf precyzyjnie.
peelman
1

Szczegółowy opis tego procesu znajduje się na tej stronie: https://wiki.openstack.org/wiki/XenServer/VirtualBox

W kartach sieciowych maszyn VirtualBox musisz ustawić opcję „Zezwól wszystkim” w trybie „Promiscuous Mode” i kilka innych opcji, a możesz mieć system operacyjny wewnątrz vm np. Xenserver wewnątrz vm np. VirtualBox.

42n4
źródło
1

Tak , możesz uruchomić maszynę wirtualną na maszynie wirtualnej. Dostałem komputer z systemem Windows 7 Ultimate x64, uruchomiłem ten sam system operacyjny na maszynie wirtualnej, a następnie uruchomiłem wersję 32-bitową (nie mogła obsłużyć 64-bitowej na 3. warstwie) na 3. warstwie. To było dość opóźnione, ale udało mi się za pomocą Internet Explorera dotrzeć do nowych czasów w Nowym Jorku. Może to być trudne, jeśli nie masz potężnego komputera, ale używasz Linuksa i Bochs, które są lekkimi systemami operacyjnymi, więc powinno to być możliwe.

Fluorescencyjny zielony 5
źródło
-2

Tak , jest to możliwe, biorąc pod uwagę, że komputer ma wystarczającą moc, aby go obsłużyć.

Na moim komputerze (i7 4770S, 16 GB pamięci RAM) udało mi się uzyskać poziom akceptacji maszyn wirtualnych na poziomie 4,5 (ostatni z nich ulega awarii przez połowę czasu).

Użyłem VMware Player 12, ponieważ VirtualBox nie lubił emulować VM-x i było znacznie wolniejsze. W tej chwili staram się, aby W2K działał na XP, ale VMware nie może się zainstalować, VirtualBox produkuje BSOD, więc próbuję użyć QEMU.

Zobacz ten zrzut ekranu (jeden z najpiękniejszych zrzutów ekranu, jaki kiedykolwiek widziałem):

wprowadź opis zdjęcia tutaj

zdimension
źródło
Jakie nowe informacje zawiera ta odpowiedź?
Ramhound,