Como construir o pacote fonte do kernel mainline?

4

O PPA do kernel do Ubuntu fornece apenas os cabeçalhos linux * .deb e linux-image * .deb packages . Como posso construir o pacote linux-source * .deb correspondente?

Contexto:

Atualmente estou executando o Ubuntu 11.10 com o kernel principal ( 3.2 rc6 agora) para obter um melhor suporte para o meu IGP sandybridge (laptop Dell E6420 com CPU Intel i5-2520M).

Aparece, gostaria de instalar este driver do touchpad , Touchpads ALPS sendo mal suportados (ver relatório de bug anterior link), enquanto espera por upstream suporte na versão do kernel 3.3 .

O problema é que o DKMS continua reclamando sobre não encontrar a fonte completa do kernel:

Module build for the currently running kernel was skipped since the
kernel source for this kernel does not seem to be installed.

Parece que pode não precisar da fonte completa , mas eu ainda gostaria de tentar instalá-lo para ver se ele resolve o problema.

O que eu tentei:

  1. Descompactando o arquivo de origem do kernel.org em /usr/src/ . DKMS ainda reclamando.
  2. Atualizando manualmente o pacote de origem do kernel com o uupdate e o pacote de origem da linha principal, como explicado aqui . Não teve sucesso.
  3. Construindo manualmente o pacote linux-source seguindo as instruções @roadmr e @elmicha. Eu finalmente consegui construí-lo, mas a DKMS ainda reclamou da fonte em falta.
  4. Por fim, notei um erro que não detectei antes de reinstalar os cabeçalhos do kernel. Aparece o .deb que eu tenho pode ter sido corrompido, baixá-lo novamente fez o truque :) Ai, enquanto DKMS concordou em compilar o módulo eu corri para o seguinte erro que parece ter já foi reportado . Este problema ainda não está resolvido, mas não vou tentar por causa do seguinte: no final, decidi testar a versão precisa do kernel 3.2-rc6 através do ppa xorg-edgers que parece ser corretamente corrigido : funciona.

No entanto, ainda pode ser interessante saber como construir o pacote mainline linux-source, já que a equipe do Kernel do Ubuntu não o fornece. Sem contar que aprendi muito no processo ^^

    
por Maxime R. 21.12.2011 / 18:17

6 respostas

5

Parece que você é corajoso o suficiente :) você poderia tentar seguir estas instruções para criar seus próprios pacotes .deb a partir do kernel da linha principal.

Tente ler este documento geral primeiro:

link

Aqui estão instruções específicas sobre como compilar um kernel para o 11.10 (embora você esteja fazendo isso a partir da árvore de fontes 3.2, então algumas coisas podem ficar diferentes).

link

Agora, o problema com essas instruções é que elas assumem uma árvore de fontes com um diretório debian /, que é onde residem os arquivos de controle que permitem construir um pacote. Não é um grande problema embora; é fácil conseguir uma árvore de fontes que pode ser empacotada:

  1. Obtenha a árvore do kernel principal

    git clone https://github.com/torvalds/linux.git
    
  2. Veja o último kernel principal (a partir de hoje link ). Existem três arquivos de correção (0001-base-packaging.patch, 0002-debian-changelog.patch, 0003-default-configs.patch). Faça o download desses três arquivos.

  3. Mude para o novo diretório de fontes do Linux e aplique todos os 3 patches em ordem:

    patch -p1 <0001-base-packaging.patch
    
    patch -p1 <0002-debian-changelog.patch
    
    patch -p1 <0003-default-configs.patch
    

Agora você terá um bom debian / diretório com informações de empacotamento. Então você pode aplicar as instruções nas duas URLs mencionadas acima para configurar e construir pacotes a partir do seu kernel. Espero que isso também crie um pacote de código-fonte do kernel.

    
por roadmr 22.12.2011 / 21:16
3

Deve ser possível construir as fontes do kernel upstream. Se você já descompactou para /usr/src/linux-X.Y:

cd /usr/src/linux-X.Y
# copy the configuration of the running kernel:
cp /boot/config-$(uname -r) .config
make oldconfig
fakeroot make-kpkg --initrd --append-to-version=-custom kernel-image kernel-headers
cd ..
ls -lrt *-custom*deb
# only install the latest *-custom*deb here:
sudo dpkg -i *-custom*deb

Eu uso isso o tempo todo e, embora eu tenha alguns pacotes DKMS instalados, eles não reclamam.

    
por elmicha 23.12.2011 / 00:38
0

Você pode baixar o código fonte do kernel.org

O kernel da linha principal no ppa não é corrigido

  

Por definição, as compilações do kernel da linha principal são feitas a partir de fontes virgens do kernel da linha inalterada e, portanto, não incluem e não devem incluir quaisquer patches ou drivers do Ubuntu.

wiki do Ubuntu MainlineBuilds

    
por Panther 21.12.2011 / 18:31
0

Quando você diz mainline eu entendo que você quer o kernel não modificado / oficial.

Então, para começar, você não o encontrará em um repositório deb porque seria modificado (pelo debian ou ubuntu).

Aqui está um link sobre como fazer isso: link Aqui está um link que mostra como compilar o kernel 3.6: link

    
por Antoine Rodriguez 13.10.2012 / 16:30
0

Para compilar o kernel principal do Ubuntu, você pode seguir as instruções postadas no meu blog abaixo:

Compile o kernel Linux principal para o Ubuntu : Um artigo detalhado, passo a passo, sobre como compile e instale sua própria versão do kernel principal (v3.3) para o Ubuntu (Precise).

Linux Kernel 3.6 no Ubuntu : Um detalhado artigo passo a passo sobre como compilar e instalar sua própria versão do kernel 3.6 do mainline para o Ubuntu. Depende dos passos realizados pelo artigo acima.

    
por Peter van der Does 13.10.2012 / 16:22
0

Eu resolvi isso executando:

sudo apt-get install linux-headers-3.5.0-17-generic

É claro que você teria que substituir a versão do kernel pela versão que o instalador do virtualbox está procurando.

    
por mtbikerjc 03.11.2012 / 20:14