3 votes

Je ne peux pas installer Docker. Le processeur de mon Macbook Pro 2010 supporte-t-il le framework de l'hyperviseur ? Si oui, pourquoi `sysctl kern.hv_support` renvoie-t-il 0 ?

J'ai un Macbook Pro 2010

J'ai un problème avec l'exécution de Docker.

"Erreur fatale.
CPU incompatible détectée Docker nécessite un processeur avec des capacités de virtualisation. "

enter image description here

Le processeur est un Core 2 Duo P8600 à 2,4 GHz.

https://ark.intel.com/products/35568/Intel-Core2-Duo-Processor-P8600-3M-Cache-2_40-GHz-1066-MHz-FSB?q=p8600 Il est indiqué qu'il prend en charge VT-x

Bien qu'il supporte VT-x, je suppose qu'il ne supporte pas certaines capacités de virtualisation ultérieures car ce dernier processeur, le i5 760, a été lancé au troisième trimestre 2010 (pas dans mon ordinateur portable), https://ark.intel.com/products/48496/Intel-Core-i5-760-Processor-8M-Cache-2_80-GHz a une page plus récente qui contient d'autres éléments liés à la virtualisation. Par exemple, l'i5 mentionne "Intel® Virtualization Technology for Directed I/O (VT-d)" : Non "et "Intel® VT-x avec les tables de pages étendues (EPT) : oui ". Pour mon processeur (le core2duo P8600), la page est un peu plus ancienne, car le processeur a été lancé au troisième trimestre 2008. Elle indique que j'ai VT-x, mais ne précise pas si j'ai EPT ou VT-d .

Mais peut-être que le VT-d n'est pas pertinent.

Je remarque https://developer.apple.com/documentation/hypervisor mentions

"En général, les machines dotées d'un ensemble de fonctionnalités Intel VT-x comprenant les tables de pages étendues (EPT) et le mode non restreint sont prises en charge. Vous pouvez déterminer la disponibilité des API de l'hyperviseur sur une machine particulière au moment de l'exécution avec la commande sysctl(8), en passant kern.hv_support comme argument."

J'ai lu qu'il y a deux problèmes ici, qui peuvent ou non être liés.

  1. Il se peut en effet que le processeur ne prenne pas en charge la virtualisation, et j'ai lu ce qui suit https://forums.docker.com/t/fatal-error-incompatible-cpu-detected/9162/6 que la façon de vérifier est de lancer la commande $ sysctl kern.hv_support<ENTER> et si le résultat est e.g. kern.hv_support : 1 then it's fine, and if the result is kern.hv_support : 0` alors ce n'est pas bon.

  2. Il est possible d'avoir un CPU qui supporte la virtualisation mais qu'il y a quelque chose dans un MAC qui est comme un BIOS ou comme un UEFI qui désactive communément la virtualisation. J'ai lu quelque part (je ne me souviens pas où, et c'est peut-être faux), que tous les Macbook Pro 2010 ont un CPU qui supporte la virtualisation et que c'est uniquement pour cette raison qu'il faut l'activer.

J'ai trouvé une solution mentionnée ici

https://github.com/dreamcat4/efi-enable-vtx

Il existe une méthode temporaire qui consiste à passer en mode veille puis à se réveiller. Pour moi, cela ne fonctionne pas.

L'autre méthode mentionnée consiste à "Régler le bit du registre VT-X d'EFI"

J'ai essayé mais je rencontre un problème. Il y a une liste de 33 étapes Pour résumer ce que j'ai pu faire.

Téléchargez l'image disque rEFIt, montez-la, vous verrez un dossier efi, copiez-le dans Root, copiez le dossier vmx dans le dépôt git dreamcat5/efi-enable-vtx dans /efi, exécutez cd /efi/refit courir ./enable.sh Cette commande exécute une commande sudo. Dans mon cas, il ne m'a pas demandé de mot de passe, peut-être parce que j'avais déjà lancé une commande avec sudo. Je l'ai redémarré en maintenant la touche ALT enfoncée. J'ai atteint l'étape 12 qui est "Select rEFIt boot device to enter rEFIt menu". Mais je n'obtiens pas le menu rEFIt. Je ne peux donc pas continuer avec des étapes comme "Dans le menu rEFIt, sélectionner Console".

Dois-je mettre à niveau mon unité centrale ? Et si oui, où puis-je trouver une liste de Core 2 Duos qui répondent aux exigences de virtualisation ? (Puisqu'il est clair que mon processeur supporte VT-x), mais peut-être qu'il ne répond pas aux exigences.

Je comprends qu'une autre option est d'installer une version antérieure de Docker qui utilise la boîte à outils Docker. Je ne sais pas dans quelle mesure c'est un inconvénient, mais c'est aussi quelque chose que j'envisage. Mais j'aimerais voir si je peux utiliser la dernière version de Docker.

ajouté

Cliquer sur le bouton de diagnostic et de retour d'information

Docker for Mac: version: 17.12.0-ce-mac49 (d1778b704353fa5b79142a2055a2c11c8b48a653)
macOS: version 10.12.6 (build: 16G29)
logs: /tmp/5FE6B0F8-0B3C-4C7A-A5CB-24B1A5AD4D4C/20180210-135141.tar.gz
failure: sysctl -a reports no hypervisor support
[OK]     db.git
[ERROR]  vmnetd
         /var/tmp/com.docker.vmnetd.socket does not exist
         Unexpected error (No such file or directory) connecting to /var/tmp/com.docker.vmnetd.socket
         /private/tmp/vmnetd/com.docker.vmnetd is not running
[OK]     dns
[ERROR]  driver.amd64-linux
         com.docker.driver.amd64-linux is not running
[OK]     virtualization VT-X
[OK]     app
[ERROR]  moby
         /Users/apple/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/console-ring does not exist
[OK]     system
[OK]     moby-syslog
[OK]     kubernetes
[OK]     env
[ERROR]  virtualization kern.hv_support
         sysctl -a reports no hypervisor support
[ERROR]  slirp
         Unexpected error ((Failure
  "Error connecting socket to 9p endpoint unix:/Users/apple/Library/Containers/com.docker.docker/Data/s51: Unix.Unix_error(Unix.ENOENT, \"connect\", \"\")")) connecting to /Users/apple/Library/Containers/com.docker.docker/Data/s51
         com.docker.vpnkit is not running
         slirp check failed with: Unix.Unix_error(Unix.ENOENT, "connect", "")
[ERROR]  osxfs
         com.docker.osxfs is not running
[OK]     moby-console
[OK]     logs
[ERROR]  docker-cli
         cannot find docker
         /var/run/docker.sock does not exist
         Unexpected error (No such file or directory) connecting to /var/run/docker.sock
         /Users/apple/Library/Containers/com.docker.docker/Data/s60 does not exist
         Unexpected error (No such file or directory) connecting to /Users/apple/Library/Containers/com.docker.docker/Data/s60
         docker ps failed
[OK]     menubar
[ERROR]  disk
         No Docker.qcow2 or Docker.raw found: the VM has never been started

Ajout supplémentaire

Je vois qu'il y a un lien github.com/docker/for-mac/issues mentionné dans cet écran de docker après avoir cliqué sur diagnose&feedback, puis sur diagnose ou diagnose and upload. J'ai demandé ce lien et je le mettrai à jour.

1voto

xoxo Points 314

L'ordinateur portable ne le prend pas en charge https://github.com/docker/for-mac/issues/2591 . En 2010, certains l'ont peut-être fait, mais pas tous, et le mien est l'un de ceux qui ne l'ont pas fait. C'est le processeur qui ne dispose pas de la virtualisation de la Apple dont docker a besoin. Une ancienne version de docker fonctionnerait mais utilise une machine virtuelle et est vraiment inférieure. Il est possible que cette pièce puisse être remplacée, mais c'est une pièce assez chère et ce n'est pas beaucoup plus cher, ou un prix similaire, d'acheter un nouvel ordinateur portable que de remplacer cette pièce.

VT-d n'est pas nécessaire. Il y a un lien d'intel que j'ai mentionné dans ce chat https://chat.stackexchange.com/transcript/message/49711462#49711462 et le lien essayait de suggérer que c'était nécessaire dans le cas de docker pour Windows, mais des contributeurs compétents ont souligné que ce n'était pas nécessaire, ni pour docker sur Windows, ni pour docker sur mac.

Quelques commentaires sur une réponse à ce lien https://superuser.com/questions/1419233/does-virtualbox-require-a-cpu-to-support-vt-d-in-order-to-host-64bit-guest-oss explique également plus en détail, et j'ai inclus les commentaires ici

n8te écrit "Docker est né sous Linux et a été développé principalement pour Linux. Lorsqu'il est exécuté sur Linux, il utilise le noyau hôte et n'a pas besoin de VT-x puisqu'il ne s'agit pas de ce type de virtualisation. Mais pour que Docker fonctionne sur Windows ou Mac, il faut utiliser un hyperviseur sous-jacent."

n8te écrit voir Quelle est la configuration matérielle requise pour Hypervisor.framework ? qui indique que la documentation d'Apple pour le framework Hypervisor ( https://developer.apple.com/library/mac/documentation/DriversKernelHardware/Reference/Hypervisor/index.html ) mentionne que le processeur doit prendre en charge le mode non restreint, qui est une fonctionnalité disponible uniquement sur un processeur Intel de la génération Westmere ou d'une génération plus récente... La génération Westmere a été lancée en janvier 2010.

--
La commande lancée par l'auteur de la question pour vérifier si docker, c'est-à-dire les exigences de docker sur mac, donc la capacité d'exécuter un hyperviseur, est prise en charge, est tout à fait pertinente. $ sysctl kern.hv_support<ENTER>

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X