Comment installer les fichiers d'en-tête du noyau?


85

Je veux écrire un pilote de périphérique, mais je ne parviens pas à trouver le fichier d'en-tête. Est-ce que quelqu'un peut m'aider à le trouver?

Réponses:


118

Vous devriez pouvoir installer les fichiers d’en-tête du noyau pour le noyau en cours d’exécution en exécutant ce qui suit dans un terminal:

sudo apt-get install linux-headers-$(uname -r)

En général, les packages d'en-tête du noyau sont nommés linux-header- * où "*" indique la version et la variante (générique, serveur, etc.).


3
hé merci mais pourriez-vous me dire ce que générique, serveur, etc signifie que je veux écrire (pilote du noyau)
codeur

8
Cela n'installe pas automatiquement les en-têtes pour les futures mises à jour et vous devrez réexécuter cette commande à chaque fois. Par conséquent, il est recommandé d'installer le métapaquet à la place, comme décrit dans une autre réponse .
gertvdijk

Remarque: cela ne les met pas dans le chemin d’inclusion GCC, vous en avez encore besoin -I.
Ciro Santilli a annoncé le 08

1
Remarque: Pour que cela fonctionne, la ligne appropriée deb-srcdoit être présente dans /etc/apt/sources.list.
Vorac

87

Vous pouvez simplement taper:

sudo apt-get install linux-headers-generic

si vous êtes sur une installation de bureau. Apt-get résoudra les dépendances et installera la version correcte des en-têtes du noyau.


15
et Ubuntu les mettra également à jour quand une nouvelle version sortira
Csq

3
Ou linux-headers-virtualsi vous exécutez une machine virtuelle dans une instance Openstack ...
BSchlinker

1
Dans Debian Wheezy, le message d'erreur suivant s'affiche: "Le paquet linux-headers-generic n'est pas disponible, mais il est référé par un autre paquet. [...] E: Le paquet 'linux-headers-generic' n'a pas de candidat à l'installation"
IQAndreas

4
@IQAndreas, le linux-headers-genericpaquet est spécifique à Ubuntu. Sur Debian, vous devriez utilisersudo apt-get install linux-headers-$(uname -r)
Alexandre Teles

14

Cela devrait couvrir un autre problème lorsque: le noyau en cours d’exécution est obsolète, c’est-à-dire qu’il ne se trouve plus dans le référentiel ni dans ses en-têtes. La meilleure chose à faire est donc de mettre à jour le noyau avec la dernière version du référentiel.

linux-genericest un méta-paquet pour conserver la version actuelle du noyau et ses en-têtes :

sudo apt-get update
sudo apt-get install linux-generic

Remarque: en fonction de votre édition Ubuntu, vérifiez si vous avez besoin linux-lowlatency(Ubuntu Studio) linux-signed-genericou linux-virtual.


1
Aucune des autres solutions ne fonctionnait pour moi lorsque j'essayais d'installer un pilote. Merci.
Sopalajo de Arrierez

1
un quasi équivalent pour debian s'appelle linux-headers-amd64(pour les systèmes amd64, évidemment)
hanshenrik


-1

ces commandes devraient fonctionner:

sudo apt-get dist-upgrade -y
systemctl reboot
sudo apt-get install linux-headers-$(uname -r)
sudo apt-get upgrade linux-headers-$(uname -r)

pour une meilleure instruction checkout cette vidéo

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.