Eu tenho um módulo do kernel e gostaria de distribuí-lo (ou seja, empacotá-lo).
Eu gostaria de distribuí-lo para que o usuário não precise fazer nada além de yum/dnf install kmod-mymodule
.
- SRPM: O usuário deve construir o RPM em sua máquina e então instalar o RPM. Eu não posso colocá-lo em um repositório yum
- RPM: preciso criar o RPM para todas as versões principais e secundárias do RHEL.
- DKMS: Pode ser a solução, mas espera que o usuário saiba como usar o dkms, não tão transparente.
Qual a maneira de distribuir um módulo do kernel facilmente para que o usuário só precise fazer yum install kmod-mymodule
e compilar o módulo para a máquina específica?
Se houver uma solução independente de distribuição, sou todo ouvidos!
Argumentando pela maneira mais amigável
Mas esse é provavelmente o caminho certo a seguir do ponto de vista do seu cliente. Pacote único, limpo, instantâneo, sem dependências, instalação.
Talvez haja de 6 a 12 versões que você precisa cobrir – todas com o mesmo SRPM. Você pode carregar esse SRPM para seu próprio projeto no Copr e deixar a IBM pagar pela eletricidade necessária para construir seus módulos, ou você pode apenas ter um loop em um script de shell que é executado
for config in /etc/mock/rhel+epel-{7,8,9}-{x86_64,aarch64}.cfg ; do mock --rebuild ${your SRPM here} -r ${config} ; done
(talvez seja necessário ajustar um pouco os modelos em /etc/ mock para dar a você seus diferentes RHEL minors).Ou, em vez de usar simulação para configurar seus ambientes de construção isolados, você pode fazer isso em seus próprios contêineres, VMs ou o que estiver disponível no site.
Automatizando a construção de RPM no alvo.
Você vai querer usar akmods , para que o RPM do módulo binário do kernel seja reconstruído automaticamente toda vez que o kernel for atualizado (e na primeira vez em que for instalado).
Dessa forma, seus usuários não precisam fazer nada além de instalar um pacote akmod, que dependerá do pacote de cabeçalhos do kernel, que é atualizado junto com o kernel automaticamente. Também dependerá das ferramentas de compilação necessárias (um compilador C etc).
Os Módulos do Kernel de Empacotamento do rpmfusion como akmods são (apenas um pouco) mais detalhados. No final, o akmod é apenas uma maneira de automatizar a construção do seu kmod RPM.
Provavelmente é melhor olhar para um exemplo disso em ação. O
v4l2loopback-kmod
pacote contém um módulo de kernel de terceiros que adiciona capacidade de loopback de vídeo à infraestrutura de câmera v4l2 do kernel do Linux. Você pode encontrar a especificação, juntamente com o restante dos arquivos de empacotamento, aqui .