Les machines virtuelles n'autorisent-elles pas toutes les extensions de processeur hôte?

0

Pour des raisons de commodité, j'essaie de lancer une installation par ailleurs "normale" de Gentoo Linux en tant qu'invité dans VirtualBox sur un hôte Windows 7. J'ai démarré l'installation en utilisant VirtualBox, même. Mais maintenant, après environ un an de reconstruction inévitable de tous les paquets sur Portage avec -march = native dans les indicateurs de mon compilateur, j'ai constaté que tous les programmes non triviaux (trivial = ls, cd, cat, nontrivial = vim, man, pratiquement tout ce qui est lié à la bibliothèque standard c ++) est tué presque immédiatement au démarrage. Le journal du noyau indique qu'il a capturé des instructions illégales, comme si le programme avait été compilé avec des extensions de processeur non prises en charge par le processeur hôte. Mais ça le fait! D'après ce que je comprends des hyperviseurs tels que VirtualBox, les programmes devraient toujours fonctionner essentiellement sur du métal nu.

Ma question est, qu'est-ce qui donne? Les ordinateurs virtuels ne sont-ils autorisés à utiliser que certaines des instructions disponibles sur le processeur hôte? Ou est-ce un problème totalement différent?

Spijdar
la source
2
Avez-vous des extensions de virtualisation disponibles et activées sur votre BIOS hôte? Si votre processeur / Mobo ne prend pas en charge les extensions de virtualisation Intel ou AMD, de nombreuses fonctionnalités de processeur hôte seront indisponibles. Les hyperviseurs de type 2 tels que Virtualbox ont une couche d’abstraction très épaisse entre le matériel virtuel et physique. Si cela vous préoccupe, envisagez une implémentation d'hyperviseur de type1 telle que ZenServer ou esxi
Frank Thomas
@ FrankThomas a raison. J'utilise Hyper-V, un hyperviseur de type 1, et je n'ai aucun problème de ce type sur mon ordinateur portable Haswell. -march=nativeou -march=haswellproduire des exécutables sur un invité Gentoo.
bwDraco
Bon à savoir! Oui, les extensions Intel VT-x sont activées. Ce qui me laisse perplexe, à en juger par ce que j'ai lu lors de l'utilisation de VT-x, l'hyperviseur s'exécute dans son propre mode sur la CPU et les instructions de la CPU de l'invité s'exécutent sans aucune interférence. Seules les instructions de système d'exploitation privilégiées sont interceptées et modifiées. Ce qui n'explique pas pourquoi certaines extensions sont apparemment illégales. Mais les hyperviseurs de type 1 semblent être une bonne solution, mais une autre chose à apprendre.
Spijdar