Como o insmod pode falhar com o módulo do kernel já carregado, mesmo o lsmod não contém esse módulo?

2

Estou fazendo uma distribuição mínima do Linux com o buildroot para aprender o desenvolvimento de módulos do kernel.

Se eu chamar um módulo mínimo hello.ko (ou quase qualquer outro nome que eu tentei), tudo funciona bem.

No entanto, se eu usar exatamente o mesmo código, mas chamar o módulo workqueue.ko , insmod workqueue.ko falhar, o dmesg conterá:

workqueue: module is already loaded

e insmod são enviados para stderr:

insmod: can't insert 'workqueue.ko': invalid argument

Ambos lsmod e cat /proc/modules estão vazios.

Isso é o repositório exato que gerou o problema.

Para referência, o código do módulo é:

#include <linux/module.h>
#include <linux/kernel.h>

MODULE_LICENSE("GPL");

int init_module(void)
{
    printk(KERN_INFO "hello init\n");
    return 0;
}

void cleanup_module(void)
{
    printk(KERN_INFO "hello cleanup\n");
}

e a versão do kernel (padrão implícito por buildroot) é 4.9.

    

1 resposta

2

$ uname -a
Linux alan-laptop 4.10.14-200.fc25.x86_64 #1 SMP Wed May 3 22:52:30 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
$ ls /sys/module/workqueue/
parameters  uevent
$ ls /sys/module/workqueue/parameters/
debug_force_rr_cpu  disable_numa  power_efficient

Já está embutido. Talvez para fornecer um namespace para os parâmetros que afetam o comportamento do workqueue do kernel.

    
por 14.05.2017 / 13:40