Explicação do processo de construção do kernel nos sistemas Ubuntu / Debian

6

Estou entrando na programação do kernel do Linux e construí meu kernel com sucesso várias vezes agora. No entanto, eu fiz isso usando guias passo a passo encontrados na internet e realmente não entendo o que acontece no processo de criação. Até agora eu encontrei várias maneiras diferentes de construir o kernel. Uma é:

make-kpkg -j5 --initrd kernel-image kernel-headers

Pelo que entendi, o make-kpkg é um programa Debian projetado para construir e empacotar coisas relacionadas ao kernel. --initrd é usado para gerar automaticamente a imagem do initrd. Quais são os dois últimos argumentos (kernel-image e kernel-headers) para?

Outra maneira de construir o kernel é apenas

make deb-pkg

O que esse comando faz em comparação com o primeiro comando?

Além disso, em este guia , a criação do kernel é feita por:

fakeroot debian/rules clean
fakeroot debian/rules binary-headers binary-generic

Qual é a maneira recomendada de construir o kernel no Ubuntu? O que exatamente acontece quando eu executo um dos comandos acima? Se eu quisesse fazer tudo que um dos comandos acima faz manualmente, quais etapas eu teria que fazer?

    
por Echows 04.10.2014 / 13:08

1 resposta

0

make-kpkg é um comando do pacote kernel-package , que usado faz parte da infraestrutura oficial de pacotes para os pacotes do kernel que são enviados na distribuição Debian. Ele não está mais sendo usado para esse propósito porque o mantenedor atual dos pacotes do kernel dentro da distribuição Debian escolheu parar de usá-lo; no entanto, os autores do pacote kernel-package não pararam de mantê-lo, então ainda é uma maneira oficialmente suportada de criar sua própria versão empacotada do kernel. Tem várias opções e metas; os mais importantes são aqueles a que você se refere em sua pergunta, ou seja, kernel-image (que cria um pacote contendo o kernel e os módulos selecionados durante make config ) e kernel-headers (que contém os arquivos de inclusão que você pode ser necessário se você quiser compilar um módulo fora da árvore). O pacote kernel-package é mantido como parte da versão Debian (ou derivada, como o Ubuntu) com o qual foi lançado, então como resultado, se as coisas mudarem na infraestrutura Debian, versões mais recentes de kernel-package serão atualizadas para incorporá-lo , e eles serão fornecidos com essa versão do Debian. Como resultado, um pacote de kernel criado pelo pacote kernel-package é sempre melhor adaptado para a versão do Debian na qual ele foi criado. No entanto, se as coisas mudarem dentro do kernel do Linux de uma forma que torne o kernel-package break, então atualizar o seu pacote kernel para uma versão estável do Debian pode ser um pouco complicado.

make deb-pkg é um alvo na infraestrutura de compilação do kernel do Linux. Ele recebe patches de desenvolvedores Debian, mas como não é mantido dentro do próprio Debian, ele sempre usa as ferramentas e políticas mais atualizadas no momento em que a versão do kernel que você está tentando construir foi criada. Isso significa que, em alguns casos, ele pode tentar usar uma ferramenta que ainda não está disponível em uma distribuição mais antiga. Como não é mantido dentro do Debian, não é um método oficialmente suportado (pelo menos não do ponto de vista do Debian) para criar pacotes do kernel; Dito isto, é mantido principalmente por pessoas que estão envolvidas no Debian, e então não há razão para suspeitar que não funcionará.

Qualquer método escolhido é apenas uma questão de preferência; a menos que você esteja investindo pesadamente em resultados peculiares das opções de construção de pacotes, os dois métodos funcionarão bem.

    
por 24.09.2018 / 17:11