43 votes

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

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

Par exemple : Je dual-boote actuellement Ubuntu 11.04 et Windows 7. Ubuntu tourne sur un seul disque dur de 500 Go, Windows 7 tourne sur un miroir RAID 1 de 1 To. Pour passer d'un OS à l'autre, un redémarrage est nécessaire. Est-il possible de passer d'un OS à l'autre sans redémarrage ?

NOTE : Je suis pleinement conscient des fonctionnalités de VirtualBox et de VMWare Player - j'utilise les deux. Merci de ne pas répondre "Utilisez la virtualisation !"

EDIT : Si ce n'est pas possible, pouvez-vous expliquer pourquoi ce n'est pas possible ? Pour moi, cela ne semble pas être très difficile. Gardez à l'esprit que ma vision est sans entraves par la connaissance !

2voto

Kenneth Cochran Points 2249

Tous les systèmes d'exploitation que je connais 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 :

  • fonctionner à la fois comme maître (contrôle total du matériel) et esclave (demande des ressources au système d'exploitation maître)
  • relinquer le contrôle du matériel sur demande d'un autre système d'exploitation

Si ces deux conditions sont remplies, il serait possible d'exécuter deux systèmes d'exploitation simultanément sans aucune sorte de virtualisation. Ce serait similaire à deux systèmes d'exploitation utilisant la multitâche coopérative. Bien entendu, la multitâche coopérative a presque été abandonnée en raison du problème des applications mal écrites refusant de céder le contrôle. Peut-être que deux systèmes d'exploitation correctement écrits se comporteraient bien ensemble. Alors encore, quel serait l'incitatif?

1voto

LawrenceC Points 70381

Permettez-moi de traiter la partie "pourquoi".

Une des raisons d'un système d'exploitation moderne est de permettre à plusieurs programmes (processus) de s'exécuter en même temps sur un système. Si vous voulez le faire en toute sécurité, les éléments suivants doivent se produire :

  • Vous ne voulez probablement pas (sauf si vous avez des besoins spéciaux) diviser la RAM du système de manière fixe - par exemple 256 Mo fixe par processus - cela vous limite à 8 processus dans un système de 2 Go. Vous aimeriez que chaque processus puisse "demander" de la mémoire et la restituer lorsqu'il a fini.

  • Vous ne voulez pas non plus répartir les périphériques d'E/S de manière fixe entre les dispositifs. En général, vous voulez que tout ou partie du matériel, comme la mémoire, soit une ressource partagée, ou du moins exclusivement temporaire à des processus spécifiques à des moments spécifiques. Cela nécessite que tous les processus n'essayent pas de faire de l'E/S par eux-mêmes, mais qu'ils "passent par" quelque chose pour planifier et coordonner l'E/S. La planification est importante car la plupart des E/S sont beaucoup plus lents que le CPU, donc vous pouvez avoir le CPU travailler pour d'autres processus pendant qu'il attend une E/S, même sur un système monocœur.

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

Il est certain, mais il n'y a rien dans le matériel capable d'empêcher un système d'exploitation de piétiner la mémoire des autres systèmes d'exploitation. Si le CPU est en mode noyau (il n'a qu'un seul mode noyau), tout code peut faire n'importe quoi. Il est entièrement possible pour le code d'un système d'exploitation de courir 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 en auront plus à l'avenir. C'est donc très mauvais pour la sécurité.

Maintenant, ne serait-ce pas cool si vous pouviez ajouter une autre "couche" par-dessus tout cela et avoir ce soutien matériel nécessaire pour plusieurs systèmes d'exploitation ? C'est exactement ce que les fonctionnalités de virtualisation matérielle font, elles mettent une barrière matérielle entre plusieurs systèmes d'exploitation en cours d'exécution, et il y a une "interface" de niveau supérieur pour eux appelée un hyperviseur. Vous ne pouvez avoir qu'un hyperviseur. Et oui, les processus s'exécutant sous l'un ou l'autre système d'exploitation doivent passer par trois niveaux pour effectuer des E/S (processus - noyau local - hyperviseur)

0voto

Jason Galvin Points 113

Je sais que vous avez dit pas de virtualisation, mais quelque chose comme le serveur MS Hyper V pourrait correspondre à vos besoins

0voto

bobble14988 Points 235

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X