Où est la source du noyau pour le noyau 3.1.9+ par défaut de Raspbian?

13

La version du noyau par défaut de Raspbian est 3.1.9+. Lorsque j'essaie de compiler un module de noyau supplémentaire, j'ai beaucoup de messages d'erreur car les fichiers d'en-tête du noyau sont manquants. J'ai vérifié le référentiel Raspbian , mais je n'ai pas pu trouver les en-têtes et la source du noyau 3.1.9+.

Si je recherche 3.2.0, je peux installer le nouveau noyau (linux-image-3.2.0-3-rpi), les en-têtes (linux-headers-3.2.0-3-rpi) et la source (linux-source -3.2) et je peux compiler le module supplémentaire. Malheureusement, le noyau 3.2 est très instable pour moi, donc cette mise à niveau n'est pas une option.

asalamon74
la source

Réponses:

9

Il me semble qu'il n'y a pas de paquet deb source du noyau 3.1.9+ dans le dépôt Raspbian. Selon Alex Bradbury (asb), ils ont construit le noyau Raspbian basé sur https://github.com/raspberrypi/linux . Sur la base de cette documentation de compilation du noyau, j'ai fait ce qui suit (en tant que root):

cd /usr/src
git clone --depth 1 https://github.com/raspberrypi/linux.git
ln -s linux linux-3.1.9+
cd linux
zcat /proc/config.gz > .config
ln -s /usr/src/linux /lib/modules/3.1.9+/build

Après cela, j'ai pu recompiler le module externe.

Quelques notes:

  • J'ai cloné la dernière version de la source du noyau, qui est plus récente que l'image du noyau Raspbian. Si vous avez vraiment besoin de la même version exacte du noyau, cette ancienne version pourrait être meilleure.

  • J'ai également recompilé le noyau entier juste pour être sûr. Ne faites pas cela si vous avez seulement besoin de compiler un module externe, car cela prend des heures.

  • J'ai dû modifier un peu le Makefile du module externe (8192cu) (en configurant ARCH sur arm au lieu d'armv6l).
asalamon74
la source
3
+1 Beau travail. Ils devraient vraiment mettre les en-têtes dans les référentiels.
Jivings
4

Vous pouvez utiliser rpi-source pour rechercher et installer automatiquement les sources du noyau pour votre noyau en cours d'exécution.

Voir aussi la compilation croisée depuis Linux , pour éviter d'attendre des heures pour compiler votre nouveau noyau.

Mauro Lacy
la source
1

Stange comment c'est si difficile ... Tout ce que je peux trouver est ce paquet dans la liste des sources:

Package: linux-libc-dev
Source: linux
Version: 3.2.21-1+rpi1
Architecture: armhf
Maintainer: Debian Kernel Team <[email protected]>
Installed-Size: 2790
Conflicts: linux-kernel-headers
Replaces: linux-kernel-headers
Provides: linux-kernel-headers
Multi-Arch: same
Priority: optional
Section: devel
Filename: pool/main/l/linux/linux-libc-dev_3.2.21-1+rpi1_armhf.deb
Size: 764146
SHA256: b75b35ccf8e7fbac582ad08af9579a23095f9dbbc9e7369430e43d584afc48fd
SHA1: e8c3bb2a30483c51ee39b525becd6e213ae9c2c7
MD5sum: 840e28237198aa137dfcdb558ef1cbf5
Description: Linux support headers for userspace development
 This package provides userspaces headers from the Linux kernel.  These
 headers are used by the installed headers for GNU glibc and other system
 libraries.

Il semble fournir les outils dont vous avez besoin, mais je n'ai aucune idée pourquoi il n'y a pas de package appelé linux-kernel-headers.

Cependant, si vous regardez dans l'archive du package, vous pouvez trouver ceci:

http://archive.raspbian.org/raspbian/pool/main/l/linux-latest/

Peut-être que l'un des packages d'en-têtes de ce répertoire sera pour le noyau dont vous avez besoin.

Malheureusement, ce sont toutes les informations que je peux actuellement offrir, car je n'ai pas encore installé Raspbian moi-même, bien qu'il soit sur ma liste TODO.

Jivings
la source
À la réflexion, ce n'est toujours pas la bonne version de celle que vous voulez, n'est-ce pas?
Jivings
C'est aussi pour le noyau 3.2. Le numéro de version (3.2.21-1 + rpi1) est le même pour les packages que j'ai mentionnés dans la question (par exemple linux-headers-3.2.0-3-all_3.2.21-1 + rpi1_armhf.deb)
asalamon74