Kernel module package guidelines (Português)
32-bit – CLR – CMake – Cross – DKMS – Eclipse – Electron – Fonte – Free Pascal – GNOME – Go – Haskell – Java – KDE – Kernel – Lisp – Meson – MinGW – Node.js – Nonfree – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – Web – Wine
Separação de pacote
Pacotes que contêm módulos de kernel devem ser tratados especialmente, para suportar usuários que desejam ter mais de um kernel instalado em um sistema.
Ao empacotar software contendo um módulo do kernel e outros arquivos/utilitários de suporte não módulo, é importante separar os módulos do kernel dos arquivos de suporte.
Diretrizes
Ao empacotar tais softwares (usando os drivers NVIDIA como um exemplo), a convenção é:
- crie um pacote
nvidia
contendo apenas os módulos de kernel compilado para o kernel padrão - crie um pacote
nvidia-utils
contendo os arquivos sem suporte - certifique-se que
nvidia
depende denvidia-utils
(a menos que haja um bom motivo para não fazê-lo) - para outro kernel, como
kernel26-mm
, crienvidia-mm
contendo os módulos de kernel compilados com o kernel que fornece nvidia e também depende emnvidia-utils
- certifique-se que
nvidia
depende na versão de kernel atual, por exemplo:
depends=('kernel26>=2.6.24-2' 'kernel26<2.6.25-0' 'nvidia-utils')
Note que é 2.6.24-2
, e não -1
no exemplo acima - isso ocorre porque houve uma alteração de configuração no subsistema de kernel importante que exigiu a recriação de todos os módulos. Você deve sempre mudar a versão depende de tais casos, caso contrário, algumas pessoas com versões fora do sync do kernel e do módulo reportarão que o módulo está quebrado.
Motivos
Enquanto os módulos do kernel construídos para diferentes kernels sempre vivem em diretórios diferentes e podem coexistir pacificamente, espera-se que os arquivos de suporte sejam encontrados em um único local. Se um pacote contivesse arquivos de módulo e de suporte, você não conseguiria instalar os módulos para mais de um kernel porque os arquivos de suporte nos pacotes causariam conflitos de arquivos do pacman.
A separação dos módulos e dos arquivos anexos permite que vários pacotes de módulos do kernel sejam instalados para múltiplos kernels no mesmo sistema, compartilhando os arquivos de suporte entre eles no local esperado.
Colocação de arquivos
Se um pacote inclui um módulo do kernel que deve substituir um módulo existente com o mesmo nome, tal módulo deve ser colocado no diretório /lib/modules/2.6.xx-ARCH/updates
. Quando o depmod é executado, os módulos neste diretório terão precedência.