Pouvez-vous exécuter un émulateur de machine (Bochs) dans une machine virtuelle?

82

Est-il possible, par exemple, d’exécuter VirtualBox sur Windows 7 avec un invité Linux et d’exécuter Bochs sur cette machine Linux?

La raison en est que je suis intéressé par le développement de systèmes d’exploitation, et j’ai constaté que tous les tutoriels et autres éléments sont beaucoup plus faciles à suivre sur des machines * nix. J'ai essayé d'utiliser Cygwin, mais je pense que cela ajoute une autre couche de complexité et ne facilite pas nécessairement les choses.

Javier
la source
1
Le double démarrage est Linux et Windows est relativement facile à faire et le résultat final s'exécute beaucoup plus rapidement. Le seul inconvénient est que vous devez redémarrer pour changer de système d’exploitation.
lyallcooper le
@AUAnonymous: Je le sais, mais je veux continuer à utiliser Windows.
Javier
C'est toujours une option si vous ne parvenez pas à faire fonctionner les machines virtuelles ou si elles ne fonctionnent pas trop bien.
lyallcooper le
12
Je vais faire valoir que cette question est mal titrée. Bochs n'est pas un logiciel de virtualisation au même sens que VirtualBox et VMWare. C'est un émulateur. Il n'offre aucune virtualisation du processeur. La distinction ici n'est pas simplement pédante. Vous pouvez vous attendre à ce qu'un émulateur comme bochs fonctionne dans une machine virtuelle avec une confiance relativement élevée. L'exécution d'un véritable logiciel de virtualisation "imbriqué" dans une machine virtuelle est un problème beaucoup plus délicat. Par exemple, cette fonctionnalité n'a été implémentée dans VMWare qu'à partir de Fusion 4 .
superbatfish
2
VirtualMachine-ception: D Vous avez le danger de perdre combien de niveaux vous avez en profondeur dans les machines virtuelles. Ce moment où vous réalisez que vous venez de corrompre votre disque dur physique au lieu de l'un des disques virtuels imbriqués sur lesquels vous étiez censé effectuer les tests: P
developerbmw

Réponses:

63

Longue histoire courte: oui .

Chaque machine virtuelle est techniquement "indépendante" les unes des autres. Avec VirtualBox , vous pouvez facilement le faire, car elle est prise en charge sur les systèmes d’exploitation hôtes Windows et Linux (émulés ou non). Vous pouvez simplement utiliser Windows comme système d'exploitation «hôte de base», exécuter Linux sur une machine virtuelle, puis utiliser ce système d'exploitation comme nouvel hôte de base pour Bochs.

Notez que votre seule limitation ici est votre matériel. Selon les besoins de votre développement, vous aurez peut-être besoin de plus de mémoire ou d'une mise à niveau vers un système d'exploitation "hôte de base" 64 bits. Cela étant dit, si vous choisissez judicieusement vos distributions Linux, tout système moderne devrait être capable de créer une imbrication arbitraire de ce type.

Vous constaterez une amélioration des performances si vous activez la prise en charge de la virtualisation x86 sur votre ordinateur (si votre carte mère et votre processeur le prennent en charge) et que, autant que je sache, vous pouvez "transmettre" cette fonctionnalité à plusieurs machines virtuelles imbriquées. Si nous avons des nmachines virtuelles imbriquées dans eachother, cela est pris en charge tant que le 1st au n-1e système d'exploitation invité imbriqué prend en charge la virtualisation x86 (l'hôte de base doit également soutenir). Notez qu'il existe encore des problèmes de sécurité à prendre en compte, prenez donc les précautions appropriées.

Percée
la source
2
Il semble que cela fonctionne réellement. Après tout, si j'avais besoin de vitesse, je n'utiliserais pas Bochs en premier lieu. Bien que je ne sois pas le plus voté, je pense que votre réponse est la plus complète et pertinente, alors je l’accepterai.
Javier
Est-ce juste moi, ou cette réponse ne semble-t-elle pas concerner l'exécution de plusieurs machines virtuelles et non de machines imbriquées ?
Thomas Padron-McCarthy
@Thomas Padron-McCarthy, j'a parlé de ceux imbriqués. J'ai modifié la réponse pour être plus explicite à cet égard.
Percée le
7
Bochs n’est pas le meilleur cas de test pour cette question générale, car c’est un émulateur, pas un ordinateur virtuel. (Voir mon commentaire sur l'OP.)
superbatfish
Cette réponse n'est-elle pas contredite par la réponse de TobyJ et la demande de fonctionnalité non résolue de VirtualBox à laquelle sa réponse est liée?
ChrisW
40

Je gère parfois une infrastructure virtuelle VMware vSphere complète au sein de VMware Workstation, ainsi que des routeurs et commutateurs virtuels Cisco et le dispositif de stockage virtualisé EMC Celerra, à des fins d'autoapprentissage et de test.

Je l'appelle 'Inception Computing', et cela peut être assez déroutant. C'est cependant un peu moins cher que d'utiliser le véritable équipement.

paradroïde
la source
1
Cela devrait prouver la viabilité de cela. vinf.net/2010/02/25/…
Mike Soule le
1
@Mike: Votre lien décrit l'exécution d'ESXi dans ESX, mais j'ai utilisé certains liens, comme TechHead, qui est l'un des principaux sites qui m'a amené à la virtualisation. Il existe également de nombreuses informations sur l'exécution d'une infrastructure vSphere dans VMware Workstation: google.co.uk/…
paradroid
2
Vous savez que le terme "création" ne fait pas référence au concept [chose dans une chose], non?
ekillaby
7
@countfloortiles: C'est une référence au film, bien sûr.
Parroïde
1
@paradroid vous devriez avoir nommé "CompCeption" ou "VirtuaCeption".
Mohd Abdul Mujib
32

Toute personne qui lit cette question, voit la réponse acceptée et pense que cela s'appliquera également à VirtualBox, veuillez consulter les commentaires de @superbatfish sur la question initiale. Il insiste sur la différence entre virtualisation et émulation.

Plus précisément, la "machine virtuelle assistée par le matériel" ne sera pas disponible dans le système d'exploitation invité "de niveau supérieur" (c'est-à-dire qu'au moment d'écrire ces lignes , VirtualBox ne fournissait pas de machine virtuelle matérielle dans les systèmes d'exploitation invités ). Avec VirtualBox, cela signifie que vous ne pouvez créer que des systèmes d'exploitation "invités imbriqués" 32 bits, même si l'invité de niveau supérieur est 64 bits et que votre "véritable" hôte dispose d'une machine virtuelle matérielle.

Peut-être pas un obstacle pour vous, mais il est à noter. J'avais besoin de cela pour pouvoir exécuter Vagrant sur un invité Ubuntu sous Windows, afin de tester les livres de recettes Chef.

Tobias J
la source
Avez-vous donc pu exécuter Vagrant sur un invité Ubuntu dans l’hôte Windows?
Wisbucky
2
@ wisbucky oui, je pourrais l'exécuter en mode 32 bits, mais pas en 64 bits. Étant donné que tous mes systèmes de production sont en 64 bits, le test n'était pas parfait, mais fonctionnait quand même assez bien.
Tobias J
3
Sauf erreur de ma part, vous pouvez maintenant exécuter des boîtes Vagrant 64 bits au sein de la machine virtuelle Ubuntu à l'aide du fournisseur Docker pour Vagrant, car les conteneurs ne reposent pas sur la virtualisation matérielle: vagrantup.com/docs/docker . La boîte Vagrant que vous utilisez devra supporter cela, cependant.
Brendan
@Brendan, sauf si vous devez exécuter des programmes 64 bits spécifiques, puis utiliser le conteneur Docker par rapport à une boîte virtuelle 32 bits, les performances sont-elles identiques ou identiques?
serup
11

Linux-KVM prend en charge certaines machines virtuelles imbriquées. J'ai posé la question sur le canal IRC KVM et j'ai obtenu les informations suivantes (mais ne vous fiez pas à ma parole, essayez vous-même):

  • Les processeurs AMD devraient bien fonctionner, les invités avec Xen et Hyper-V sont connus pour fonctionner,
  • Les processeurs Intel ont besoin du dernier code source KVM Git, et seuls les invités avec KVM fonctionnent

Je n'ai pas encore essayé moi-même. Une recherche sur "KVM imbriqué" devrait vous donner suffisamment d’informations pour l’essayer vous-même.

EDIT: KVM ne fonctionnera que sur un hôte Linux. Je n'ai reçu aucune information fiable sur le logiciel de virtualisation Windows concernant le support approprié des machines virtuelles imbriquées. Par "correct", je veux dire que l'hyperviseur expose les extensions de virtualisation à l'invité. Vous pouvez toujours exécuter une machine virtuelle imbriquée à l'aide d'un hyperviseur logiciel pur (par exemple, une traduction dynamique), mais cela sera sensiblement plus lent.

EDIT: Bochs, que vous avez mentionné, est un hyperviseur uniquement logiciel. Cela signifie qu'il sera toujours lent et qu'il est inutile si l'hyperviseur de l'hôte expose les extensions de virtualisation à l'invité (comme le fait KVM). La plupart des autres logiciels de virtualisation (KVM, VirtualBox, VMWare) peuvent toutefois utiliser ces extensions et fonctionneront beaucoup mieux si elles sont disponibles.

Ambroz Bizjak
la source
Pour votre deuxième édition: Donc, si je vais juste utiliser Bochs (et je me fiche de savoir si c'est lent), dois-je m'inquiéter du problème des KVM?
Javier
Si vous exécutez Bochs dans la machine virtuelle, le processus sera aussi lent que si vous l’aviez exécuté sur du matériel (en supposant que votre matériel porte des extensions de virtualisation, c’est-à-dire AMD-v ou VT-x, qui sont activées dans le BIOS; sinon, ce sera le cas. encore plus lentement, comme tout dans la machine virtuelle).
Ambroz Bizjak le
En ce qui concerne la virtualisation Windows ... cela semble possible, mais (à compter de juin 2016) ne fonctionne qu'avec HyperV-on-HyperV, avec les versions de système d'exploitation "Windows Insider" et sur le matériel Intel. De msdn.microsoft.com/en-us/virtualization/hyperv_on_windows/…
Mark
3

C'est possible, mais pas très faisable, surtout pour le développement. Vous devriez probablement envisager d’utiliser Linux comme système d’exploitation natif ou d’obtenir une deuxième boîte pour héberger les ordinateurs virtuels.

peelman
la source
Je comprends que ce sera probablement compliqué, mais qu'entendez-vous exactement par "pas très faisable"?
Javier
1
Je parierais que @peelman signifie: "C'est trop lent pour des raisons pratiques". Je n'ai pas essayé moi-même.
CarlF
@carlf précisément.
peelman
1

Une description détaillée de ce processus se trouve sur cette page: https://wiki.openstack.org/wiki/XenServer/VirtualBox

Dans les cartes réseau de la machine VirtualBox, vous devez définir autoriser tout en mode Promiscuous et plusieurs autres options.

42n4
la source
1

Oui , vous pouvez exécuter une machine virtuelle sur une machine virtuelle. Ce que j'ai fait, c'est obtenir un ordinateur Windows 7 Ultimate x64, exécuter le même système d'exploitation sur la machine virtuelle, puis une version 32 bits (la troisième couche ne pouvait pas être prise en charge). C'était assez lent mais j'ai réussi à me rendre à New York Times sur Internet Explorer avec. Cela peut être difficile si vous n'avez pas un ordinateur puissant, mais si vous utilisez Linux et Bochs, qui sont des systèmes d'exploitation légers, cela devrait donc être possible.

FluorescentGreen5
la source
-2

Oui , c'est possible, étant donné que votre ordinateur est suffisamment puissant pour le gérer.

Sur ma machine (i7 4770S, 16 Go de RAM), j’ai réussi à obtenir un niveau de VM-ception-ness de 4,5 (le dernier plante la moitié du temps).

J'ai utilisé VMware Player 12, car VirtualBox n'aimait pas émuler VM-x, et c'était vraiment plus lent. À l'heure actuelle, j'essaie de faire fonctionner W2K sur XP, mais VMware ne peut pas installer, VirtualBox produit des BSOD, donc j'essaie d'utiliser QEMU.

Voir cette capture d'écran (l'une des plus belles captures d'écran que j'ai jamais vue):

entrez la description de l'image ici

zdimension
la source
Quelles nouvelles informations cette réponse fournit-elle?
Ramhound