Pourquoi dois-je recompiler le module du noyau vmware après une mise à niveau du noyau Linux?

StackOverflow https://stackoverflow.com/questions/827862

Question

Après une mise à niveau du noyau Linux, mon serveur VMWare ne peut pas démarrer avant d'utiliser vmware-config.pl pour effectuer un travail de reconfiguration (y compris la construction de certains modules du noyau).

Si je mets à jour mon hôte Windows VMWare avec le dernier Service Pack Windows, je n'ai généralement rien à faire pour exécuter VMWare.

Pourquoi VMWare fonctionne-t-il différemment entre Linux et Windows? Cette action de recompilation apporte-t-elle des avantages sur la plate-forme Linux sur Windows?

Était-ce utile?

La solution

Lisez l'interface du pilote de noyau Linux .

  

Ceci est écrit pour tenter d'expliquer pourquoi Linux ne possède pas d'interface noyau binaire ni d'interface noyau stable. Sachez que cet article décrit les interfaces _in kernel_ et non le noyau aux interfaces de l'espace utilisateur. L’interface noyau-utilisateur est celle utilisée par les programmes d’application, l’interface syscall. Cette interface est _very_ stable dans le temps et ne se cassera pas. J'ai d'anciens programmes construits sur un noyau antérieur à 0.9 qui fonctionne toujours très bien avec la dernière version du noyau 2.6. Cette interface est celle sur laquelle les utilisateurs et les programmeurs d’application peuvent compter pour leur stabilité.

Il reflète l'opinion d'une grande partie des développeurs du noyau Linux: la liberté de modifier à tout moment les détails de la mise en œuvre et les API dans le noyau leur permet de se développer beaucoup plus rapidement et mieux.

Sans la promesse de garder les interfaces dans le noyau identiques d'une édition à l'autre, il est impossible pour un module de noyau binaire tel que VMWare de fonctionner de manière fiable sur plusieurs noyaux.

Par exemple, si certaines structures changent dans une nouvelle version du noyau (pour de meilleures performances, plus de fonctionnalités ou toute autre raison), un module binaire VMWare peut provoquer des dégâts considérables en utilisant l'ancienne structure de structure. Une nouvelle compilation du module à partir de la source capturera la nouvelle structure, ce qui offrira une meilleure chance de fonctionner - bien que pas encore à 100%, si les champs ont été supprimés, renommés ou utilisés à des fins différentes.

Si une fonction modifie sa liste d'arguments, est renommée ou n'est plus disponible, la recompilation à partir du même code source ne fonctionnera pas. Le module devra s'adapter au nouveau noyau. Puisque tout le monde (devrait) avoir la source et (peut trouver quelqu'un qui) est capable de le modifier pour s’adapter. "Envoyer le travail aux noeuds finaux" est une idée courante à la fois dans les réseaux et dans les logiciels libres: étant donné que les ressources [en marge] / [des développeurs en dehors du noyau Linux] sont plus grandes que les ressources limitées [de la dorsale] / [des développeurs Linux], le -off pour que les anciens fassent plus de travail est accepté.

D’autre part, Microsoft a décidé de préserver autant que possible la compatibilité des pilotes binaires - ils n’ont pas le choix, car ils jouent dans un monde propriétaire. En un sens, cela facilite beaucoup la tâche aux développeurs externes qui ne font plus face à une cible en mouvement et aux utilisateurs finaux qui ne doivent jamais rien changer. En revanche, cela oblige Microsoft à maintenir une compatibilité ascendante, ce qui prend (au mieux) beaucoup de temps aux développeurs de Microsoft et (au pire) est inefficace, génère des bogues et empêche la progression. "

Autres conseils

Linux n’a pas de noyau ABI stable - des choses comme la disposition interne des infrastructures de données, etc. changent de version en version. VMWare doit être reconstruit pour utiliser l’ABI dans le nouveau noyau.

D'autre part, Windows a un ABI de noyau très stable qui ne change pas de service pack à service pack.

Pour ajouter à la réponse de bdonlan, la compatibilité ABI est un mélange. D'une part, cela vous permet de distribuer des modules binaires et des pilotes qui fonctionneront avec les versions les plus récentes du noyau. D'autre part, cela oblige les programmeurs du noyau à ajouter beaucoup de code collé pour conserver la compatibilité ascendante. Parce que Linux est open-source et que les développeurs du noyau, même s'ils sont autorisés , le la capacité de distribuer des modules binaires n’est pas considérée comme si importante. En revanche, les développeurs de noyau Linux n'ont pas à s'inquiéter de la compatibilité ABI lorsqu'ils modifient des infrastructures de données pour améliorer le noyau. À long terme, cela se traduira par un code de noyau plus propre.

C’est une conséquence du développement de Linux et de Windows dans différents environnements et attentes culturels: http: // www.joelonsoftware.com/articles/Biculturalism.html . En bref: Windows est conçu pour les utilisateurs, alors que Linux évolue pour les développeurs open source.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top