![Usando DKMS, para corrigir e instalar automaticamente o kernel na atualização](https://rvso.com/image/36012/Usando%20DKMS%2C%20para%20corrigir%20e%20instalar%20automaticamente%20o%20kernel%20na%20atualiza%C3%A7%C3%A3o.png)
Eu tenho um sistema que precisa corrigir um arquivo no kernel para funcionar corretamente. O sistema está executando o Ubuntu 14.04.
O patch corrige um arquivo no formato drivers/hwmon
.
Portanto, após cada atualização do kernel, preciso baixar os fontes do kernel, aplicar o patch, reconstruir o kernel e instalá-lo.
Essencialmente, minha pergunta é muito semelhante àAplicar automaticamente o patch do módulo e compilar o kernel quando atualizado?, onde é sugerido o uso de DKMS. Há um link para documentos gerais do DKMS fornecidos, mas não cobre a situação de correção de um módulo.
Você poderia me mostrar como configurar o DKMS para executar o patch automaticamente? Obrigado!
Responder1
Patchar um módulo realmente não muda o caminho. O que você basicamente precisa é colocar todos os arquivos necessários para compilar uma compilação fora da árvore do seu módulo de kernel específico em uma pasta /usr/src/<modulename>-</moduleversion>/
e adicionar um arquivo de configuração dkms.conf
a essa pasta.
Basicamente deveria ficar assim:
MAKE="make -C $kernel_source_dir M=\$(pwd)"
PACKAGE_NAME=hwmon
PACKAGE_VERSION=1.2.3.4
BUILT_MODULE_NAME[0]="hwmon"
DEST_MODULE_LOCATION[0]="/kernel/extra"
AUTOINSTALL=yes
Para patches, você deve dar uma olhada nopágina de manual para dkmsvinculado abaixo, como um trecho:
PATCH[#]= Use the PATCH directive array to specify patches which should be applied to your source before a build occurs. All patches are expected to be in -p1 format and are applied with the patch -p1 command. Each directive should specify the filename of the patch to apply, and all patches must be located in the patches subdirectory of your source directory ( /usr/src/<mod‐ ule>-<module-version>/patches/ ). If any patch fails to apply, the build will be halted and the rejections can be inspected in /var/lib/dkms/<mod‐ ule>/<module-version>/build/. If a PATCH should only be applied condition‐ ally, the PATCH_MATCH[#] array should be used, and a corresponding regular expression should be placed in PATCH_MATCH[#] which will alert dkms to only use that PATCH[#] if the regular expression matches the kernel which the mod‐ ule is currently being built for. PATCH_MATCH[#]= See the above description for PATCH[#] directives. If you only want a patch applied in certain scenarios, the PATCH_MATCH array should be utilized by giving a regular expression which matches the kernels you intend the corre‐ sponding PATCH[#] to be applied to before building that module.
Então você deseja registrá-lo no dkms, construir e instalar o módulo
dkms add -m hwmon -v 1.2.3.4
dkms build -m hwmon -v 1.2.3.4
dkms install -m hwmon -v 1.2.3.4
Usei espaços reservados para o nome e a versão do módulo, mas você deve entender. Tudo isso está coberto nopágina de manual para dkms.