web-dev-qa-db-fra.com

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

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émarrage du développement du système d’exploitation, et j’ai constaté que tous les tutoriels et autres 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.

82
Javier

Longue histoire courte: oui .

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

Notez que votre seule limitation ici est votre matériel. En fonction des exigences 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 virtualisation support sur votre ordinateur (si votre carte mère et votre processeur le supportent), et autant que je sache, vous pouvez "transmettre" cette fonctionnalité à plusieurs machines virtuelles imbriquées. Si nous avons n machines virtuelles imbriquées les unes dans les autres, ceci est pris en charge tant que le 1st au n-1th Le système d'exploitation invité imbriqué prend en charge la virtualisation x86 (l'hôte de base doit également la prendre en charge). Notez qu'il y a encore quelques problèmes de sécurité à savoir si vous le faites, alors prenez les précautions appropriées.

63
Breakthrough

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.

40
paradroid

Pour tous ceux qui lisent cette question, voient la réponse acceptée et pensent que cela s'appliquera également à VirtualBox, veuillez consulter le commentaire 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 fournit pas le matériel VM 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.

31
Toby J

Linux-KVM prend en charge certaines machines virtuelles imbriquées. J'ai posé la question sur le canal KVM IRC et j'ai obtenu les informations suivantes (mais ne prenez 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 dotés de 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 imbriqué VM approprié. Par "correct", je veux dire que l'hyperviseur expose les extensions de virtualisation à l'invité. Vous pouvez toujours exécuter un VM imbriqué à l'aide d'un hyperviseur logiciel pur (par exemple, une traduction dynamique), mais cela sera nettement plus lent.

EDIT: Bochs, que vous avez mentionné, est un hyperviseur uniquement logiciel. Cela signifie qu'il sera toujours lent et qu'il sera sans objet 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.

11
Ambroz Bizjak

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.

3
peelman

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. Vous pouvez également avoir os dans vm, par exemple. Xenserver à l'intérieur de vm, par exemple VirtualBox.

1
42n4

Oui , vous pouvez exécuter une machine virtuelle dans une machine virtuelle. Ce que j'ai fait est d'obtenir un ordinateur Windows 7 Ultimate x64, d'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 aux temps de New York 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.

1
FluorescentGreen5