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?

codeur
la source

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.).

JanC
la source
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.

Alexandre Teles
la source
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.

utilisateur.dz
la source
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

Ou si vous avez installé aptitude: sudo aptitude install linux-headers-$(uname -r)

utilisateur1527227
la source
5
Essentiellement la même chose.
angularisé le
-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

Zen Alex
la source