Onde está a fonte do kernel do kernel padrão do Raspbian 3.1.9+?

13

A versão padrão do kernel do Raspbian é 3.1.9+. Quando tento compilar um módulo extra do kernel, tenho muitas mensagens de erro, pois os arquivos de cabeçalho do kernel estão ausentes. Eu verifiquei o repositório Raspbian , mas não consegui encontrar os cabeçalhos e a fonte do kernel 3.1.9+.

Se eu procurar pelo 3.2.0, posso instalar o novo kernel (linux-image-3.2.0-3-rpi), os cabeçalhos (linux-headers-3.2.0-3-rpi) e a fonte (linux-source -3.2) e eu posso compilar o módulo extra. Infelizmente o kernel 3.2 é muito instável para mim, portanto esta atualização não é uma opção.

asalamon74
fonte

Respostas:

9

Parece-me que não há pacote deb do código-fonte 3.1.9+ no repositório Raspbian. De acordo com Alex Bradbury (asb), eles criaram o kernel Raspbian com base em https://github.com/raspberrypi/linux . Com base nesta documentação de compilação do kernel, fiz o seguinte (como 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

Depois disso, fui capaz de recompilar o módulo externo.

Algumas notas:

  • Eu clonei a versão mais recente da fonte do kernel, que é mais recente que a imagem do kernel Raspbian. Se você realmente precisa da mesma versão exata do kernel, esta versão mais antiga pode ser melhor.

  • Também recompilei o kernel inteiro apenas para ter certeza. Não faça isso se você precisar compilar apenas um módulo externo, pois isso leva horas.

  • Eu tive que modificar o Makefile do módulo externo (8192cu) um pouco (configurando ARCH para armar em vez de armv6l).
asalamon74
fonte
3
+1 Bom trabalho. Eles realmente devem colocar os cabeçalhos nos repositórios.
Jivings
4

Você pode usar o rpi-source para encontrar e instalar automaticamente fontes do kernel para o kernel em execução.

Veja também a compilação cruzada do Linux , para evitar esperar horas para compilar seu novo kernel.

Mauro Lacy
fonte
1

Estranho como isso é tão difícil ... Tudo o que posso encontrar é este pacote na lista de fontes:

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.

Parece fornecer as ferramentas de que você precisa, mas não tenho idéia do por que não existe um pacote chamado linux-kernel-headers.

No entanto, se você procurar no archive do pacote, poderá encontrar o seguinte:

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

Talvez um dos pacotes de cabeçalhos nesse diretório seja para o kernel que você precisa.

Infelizmente, essas são todas as informações que posso oferecer atualmente, pois ainda não instalei o Raspbian, embora esteja na minha lista de TODO.

Jivings
fonte
Pensando bem, essa ainda é a versão errada para a que você deseja, não é?
Jivings
Isto também é para o kernel 3.2. O número da versão (3.2.21-1 + rpi1) é o mesmo para os pacotes mencionados na pergunta (por exemplo, linux-headers-3.2.0-3-all_3.2.21-1 + rpi1_armhf.deb)
asalamon74