Répertoire du noyau vide mais les en-têtes du noyau sont installés

19

Hôte - Windows 7

Invité - CentOS

J'essaie d'installer en kernel-headersutilisant yumdepuis lors de l'installation de vmware-toolsje reçois un message demandant le chemin d'accès aux fichiers d'en-tête du noyau pour le 3.10.0-229.7.2.e17.x86_64 .

En cours d'exécution yum install kernel-headersrenvoie le paquet kernel-headers-3.10.0-229.7.2.e17.x86_64 déjà installé et la dernière version . Mais le répertoire /usr/src/kernelsest vide.

Les en-têtes du noyau sont-ils installés ailleurs? Ou devrais-je demander yumd'installer autre chose?

Chemin fourni à vmware-tools pour les en-têtes du noyau

Searching for a valid kernel header path...
The path "" is not a valid path to the 3.10.0-229.7.2.e17.x86_64 kernel headers.
Would you like to change it? [yes]

Fournir le chemin /usr/include/linuxdonne à nouveau la même réponse mais avec "" remplacé par le chemin fourni.

Kvothe
la source
1
vérifier la sortie de rpm -ql kernel-headers; Je pense que cela met les fichiers dans / usr / include / linux, mais je suis peut-être obsolète. Ce serait bien si vous pouviez indiquer quel chemin vous donnez au programme d'installation de vmware-tools et aussi ce qu'il rapporte.
Jeff Schaller

Réponses:

8

Le package correct pour installer toutes les dépendances requises pour la construction des modules du noyau est kernel-devel(voir la documentation CentOS pour plus d'informations).

Les en-têtes ne sont pas installés dans /usr/src/kernels, ils sont plutôt installés dans un certain nombre de répertoires ci-dessous /usr/include(l'emplacement par défaut pour les fichiers d'en-tête C). Vous pouvez répertorier le contenu du kernel-headerspackage que vous avez installé en utilisant:

rpm -ql kernel-headers
mjturner
la source
C'était ça. Je suis arrivé à cette page plus tôt , mais mal interprété comme « si vous avez besoin du noyau devel pleine utilisation de la source ». Merci
Kvothe
23

J'ai eu le même problème. Après beaucoup de recherches sur Google, cette solution a fonctionné pour moi. Il détermine d'abord la version du noyau installée, puis utilise cette version exacte pour installer le package d'en-tête du noyau.

sudo yum install "kernel-devel-uname-r == $(uname -r)"
MarkAu
la source
Cela a fonctionné sur une configuration Surface Book et VMWare.
ThinkCode
Fonctionne sur centos 7, passé plus de deux heures avant .. Merci!
h0x91B
Enfin .... Travaillé sur CentOS7. Merci beaucoup
VM_AI
Ça a marché. Merci. Je ne sais pas si les en-têtes du noyau font partie de ce développement.
Murali Mopuru du
4

Sur CentOS version 7 ci-dessous est le chemin pour les en-têtes du noyau.

/lib/modules/3.10.0-327.36.2.el7.x86_64/build/include

Après avoir exécuté yum install kernel-headersdeux fois (mis à jour au plus tard), le problème a été résolu. Assurez-vous que la version du noyau en cours d'exécution et la version des en-têtes du noyau sont identiques. Ma version du noyau est3.10.0-327.36.2.el7.x86_64

Shanraj
la source
Des réponses aussi simples comme celle-ci méritent davantage de votes positifs.
WesternGun
2

J'ai eu le même problème et la solution ci-dessus n'a pas fonctionné pour moi. Ce pourrait être la version de CentOS 7 que j'utilise.
Voici ce qui a résolu le problème pour moi ...

installer les en-têtes du noyau

yum -y install kernel-devel

définir un lien symbolique pour que les outils vmware puissent trouver version.h

export kernel_headers=`ls -hd /usr/src/kernels/3*`
sudo ln -s ${kernel_headers}/include/generated/uapi/linux/version.h ${kernel_headers}/include/linux/version.h
Patrick fogarty
la source
2

J'ai installé le package kernel-devel, mais il s'avère que les en-têtes étaient pour une version de noyau différente de celle qui était en cours d'exécution sur mon instance. Afin de résoudre le problème, j'ai couru

sudo yum upgrade

et redémarré, puis vmware-tools installé sans problème.

sffc
la source
2

J'ai eu exactement le même problème.

Dans mon cas, je viens de supprimer kernel-dev * et de le réinstaller:

yum -y remove kernel-devel*
yum -y install kernel-devel*
AxldenieD
la source
0

Je pense avoir trouvé une solution pour cela.

J'ai lu des suggestions (même sur le site Web de VMWare) qui recommandent d'installer les outils open-vm par opposition aux outils VMWare.

yum install open-vm-tools

Il y a bien sûr quelques mises en garde, après l'installation, n'oubliez pas de redémarrer la machine virtuelle.

De plus, maintenant au lieu de la coche verte qui apparaît généralement dans vSphere, au lieu de cela, elle affiche le "?" Gris mais reconnaît que les outils sont en cours d'exécution et affiche l'adresse IP et le système d'exploitation qui s'exécute ainsi que l'affichage «En cours d'exécution (tiers / indépendant)».

J'espère donc que cela aidera quelqu'un. J'ai passé deux jours à ce sujet et j'ai finalement trouvé cette réponse, et cela a fonctionné pour moi, en exécutant ESXi 5.1 et vCenter avec CentOS 7.2 en tant qu'OS invité.

Eric
la source
open-vm-tools n'est pas vraiment une alternative aux outils vmware dans certains cas. par exemple. open-vm-tools ne prend pas en charge hgfs pour le partage de fichiers entre l'invité et l'hôte. VMware prend en charge hgfs sur centos 7.
Gaurav
0

Pour répondre à la question, la source du noyau est installée sous / usr / src / kernels /. kernel-devel est le package à installer.

Pour fournir une solution au problème, la raison du problème est que le noyau installé est ancien et que kernel-devel a une mise à jour dans le référentiel. L'installation de kernel-devel installe donc la source d'un noyau plus récent et donc le script de configuration des outils vmware ne trouve pas la source. Il y a deux solutions possibles.

  1. Mettez à jour le noyau afin que le noyau et kernel-devel soient nouveaux.

    sudo yum upgrade

Redémarrez afin que le nouveau noyau soit chargé, puis exécutez le script de configuration des outils vmware.

  1. La mise à jour du noyau n'est pas toujours possible. Si tel est le cas, installez une version de développement du noyau identique à la version du noyau installée.

    sudo yum install "kernel-devel-uname-r == $(uname -r)"
Gaurav
la source
0

C'est ce qui a fonctionné pour moi sur une nouvelle installation minimale de Centos:

sudo yum update
sudo yum upgrade
sudo yum install "kernel-devel-uname-r == $(uname -r)" gcc
./vmware-install.pl
Carsten
la source