web-dev-qa-db-fra.com

Est-il possible de double amorcer deux systèmes d'exploitation en même temps?

Est-il possible de double amorcer deux systèmes d'exploitation en même temps?

Par exemple : je suis actuellement en train de double amorcer Ubuntu 11.04 et Windows 7. Ubuntu s'exécute sur un seul disque dur de 500 Go, Windows 7 s'exécute sur 1TB RAID 1 miroir. Pour basculer entre les deux systèmes d'exploitation, un redémarrage est requis. Est-il possible de basculer entre les deux systèmes d'exploitation sans redémarrage?

NOTE: Je connais parfaitement les fonctionnalités de VirtualBox et de VMWare Player. J'utilise les deux. S'il vous plaît ne répondez pas "Utilisez la virtualisation!"

EDIT: Si ce n'est pas possible, pouvez-vous expliquer pourquoi ce n'est pas possible? Pour moi, il ne semble pas que ce serait si difficile. Gardez à l'esprit que ma vision n'est pas encombrée de connaissances!

35
James Hill

La plupart des systèmes d’exploitation traditionnels, sinon tous, s’attendent à avoir un accès exclusif aux fonctionnalités de bas niveau de l’ordinateur hôte (matériel, ports, etc.) et n’ont aucune notion de partage avec autre chose - cela ne fonctionnera tout simplement pas - Pour essayer de faire fonctionner simultanément deux systèmes d’exploitation sur le même système, il faut une sorte d’arbitre transparent pour protéger les systèmes d’exploitation les uns des autres, c’est-à-dire une application de virtualisation.

36
Linker3000

Vous semblez rejeter Hyper-V et Xen (les hyperviseurs "à nu") même s’ils se rapprochent le plus de ce que vous semblez demander. Oui, c'est de la virtualisation, mais pas de la même manière que VirtualBox.

Imaginez que VirtualBox soit son propre système d'exploitation. Vous pouvez donc installer un petit système d'exploitation VirtualBox, puis exécuter Windows et Ubuntu côte à côte en tant que machines virtuelles sur le système d'exploitation VirtualBox. Eh bien, c’est essentiellement ce que font Hyper-V ou Xen. Il ne s'agit que d'une couche de virtualisation mince entre le matériel et les systèmes d'exploitation invités. Vous pouvez aussi les exécuter directement à côté du matériel et des systèmes d'exploitation existants.

Vous n'avez pas besoin d'un serveur distinct pour l'un ou l'autre, installez simplement l'hyperviseur comme s'il s'agissait du premier système d'exploitation de la machine, puis ajoutez Windows et Ubuntu en tant que machines virtuelles sous l'hyperviseur.

Xen et Hyper-V exécuteront Ubuntu et Windows en tant que systèmes d'exploitation invités, bien que cette configuration ne soit peut-être pas prise en charge. Xen étant plutôt Linuxy et Hyper-V étant un produit MS, je vous conseillerais donc de choisir l'hyperviseur en fonction du système d'exploitation avec lequel vous êtes le plus à l'aise.

14
Kevin

La chose la plus proche que vous puissiez faire est d'utiliser l'hibernation. Malheureusement, les systèmes d'exploitation sont suffisamment étrangers l'un à l'autre pour qu'il ne soit pas possible pour les deux systèmes d'exploitation de fonctionner en même temps sans implémenter la virtualisation. Honnêtement, la virtualisation n’est plus aussi mauvaise que vous le pensez… surtout lorsque vous utilisez une plate-forme de virtualisation prenant en charge les extensions "VT". Les systèmes d'exploitation invités ont la capacité de communiquer directement avec le matériel et ont une cartographie de mémoire bien meilleure, etc. J'ai en fait configuré un système d'exploitation invité directement sur un SSD ... et il fonctionnait plus rapidement que le système d'exploitation hôte.

8
TheCompWiz

Voici la raison simple et brève pour laquelle la réponse est "non": quel logiciel contrôlerait votre matériel?

Si OS 1 le fait, vous n’exécutez pas OS 2. Si OS 2 le fait, vous n’exécutez pas le OS 1. Si les deux le font, un autre logiciel devra alors gérer leur accès partagé au matériel physique. , et c’est la virtualisation (que vous avez exclue).

7
David Schwartz

Les choses qui me viennent à l’esprit sont:
- Gestion de la mémoire (RAM et cache)
- Gestion des processus (processus en cours d'exécution)

Vous aurez donc probablement besoin d’un homme au milieu qui jongle entre l’utilisation de la mémoire et les processus entre les deux systèmes d’exploitation.

Ce serait un autre OS/firmware.
Donc, si quelqu'un l'a implémenté pour le faire, vous pourriez vous retrouver avec 3 au lieu de 2 Oss fonctionnant simultanément

MODIFIER-
Ajout de ce que linker3000 a écrit: gestion des ports

Cet "homme du milieu" deviendra essentiellement votre système d'exploitation hôte et les autres systèmes d'exploitation virtualisés, vous ramenant à ce que vous saviez déjà être une solution.

2
Shekhar

Je suis conscient que tous les systèmes d’exploitation exigent un contrôle total du matériel informatique.

C'est théoriquement possible cependant. Les deux systèmes d'exploitation devraient être conçus pour:

  • Exécuter à la fois en tant que maître (contrôle total du matériel) et en tant qu'esclave (demande de ressources du système d'exploitation maître)
  • Abandon du contrôle du matériel à la demande d'un autre système d'exploitation

Si ces deux conditions sont remplies, il sera possible d'exécuter simultanément deux systèmes d'exploitation sans aucune sorte de virtualisation. Cela ressemblerait à deux systèmes d'exploitation utilisant le multitâche coopératif . Bien entendu, le multitâche coopératif a pratiquement été abandonné à cause du problème des applications mal écrites refusant de céder le contrôle. Peut-être que deux systèmes d'exploitation correctement écrits joueraient Nice. Là encore, quel serait l'incitatif?

2
Kenneth Cochran

Permettez-moi de parler du "pourquoi".

L'une des raisons d'un système d'exploitation moderne est de permettre à plusieurs programmes (processus) de s'exécuter simultanément sur un système. Si vous voulez le faire en toute sécurité, il faut que les choses suivantes se produisent:

  • Vous ne voulez probablement pas (sauf si vous avez des besoins particuliers) diviser le RAM dans le système de manière fixe - par exemple. 256 Mo fixes par processus - vous limite à 8 processus dans un système de 2 Go. Vous voudriez que chaque processus puisse "demander" de la mémoire et la renvoyer quand c'est fait.

  • Vous ne souhaitez pas non plus diviser les périphériques d’entrée/sortie de façon fixe entre les périphériques. En règle générale, vous souhaitez que tout ou partie du matériel, comme la mémoire, soit une ressource partagée ou du moins que l'exclusivité temporaire de certains processus à des moments spécifiques. Cela nécessite que tous les processus n'essayent pas de faire des E/S par eux-mêmes, mais "effectuent" quelque chose pour planifier et coordonner les E/S. La planification est importante car la plupart des E/S est beaucoup plus lente que la CPU. Vous pouvez donc faire en sorte que la CPU fonctionne pour d'autres processus alors qu'elle attend des E/S, même sur un système à cœur unique.

Pour faire ce qui précède, il est nécessaire de tirer parti de plusieurs fonctionnalités matérielles de la CPU. L'un d'entre eux est la MMU, l'autre est le mode protégé. Deux systèmes d'exploitation peuvent-ils partager ces fonctionnalités matérielles de manière coopérative pour exécuter deux systèmes d'exploitation ou plus?

Bien sûr, mais rien dans le matériel ne peut empêcher un système d’exploitation de bouger dans la mémoire des autres systèmes. Si la CPU est en mode noyau (elle en a seulement un en mode noyau), tout code peut faire n'importe quoi. Le code d'un système d'exploitation peut à 100% être exécuté sur le code ou les données de l'autre système d'exploitation. Et nous savons que les systèmes d’exploitation ont eu des vulnérabilités dans le passé et qu’ils en auront d’autres à l’avenir. C'est donc très mauvais pour la sécurité.

Maintenant, ça ne serait pas cool si vous pouviez mettre une autre "couche" dessus et avoir le support matériel nécessaire pour plusieurs systèmes d'exploitation? C’est exactement ce que font les fonctionnalités de virtualisation matérielle: elles placent une barrière matérielle entre plusieurs systèmes d’exploitation en cours d’exécution, et il existe une "interface" de niveau supérieur pour eux, appelée hyperviseur. Vous ne pouvez avoir qu'un seul hyperviseur. Et oui, les processus exécutés sous l'un des deux systèmes d'exploitation doivent passer par trois couches pour effectuer des E/S (processus - noyau local - hyperviseur)

1
LawrenceC

Il n'y a pas d'autre moyen que la virtualisation. Je trouve difficile d’obtenir des informations précises sur les systèmes invités qui fonctionneront pour les différents hyperviseurs. http://en.wikipedia.org/wiki/Hypervisor Devrait être un bon début pour obtenir des informations et Xen pourrait être utile d'essayer, bien que je attendrait que quelqu'un confirme définitivement ou nie s'il prend en charge les invités Windows 7.

0
Nornagest

Je sais que vous avez dit non à la virtualisation, mais quelque chose comme le serveur MS Hyper V peut répondre à vos besoins

0
Akash