Yocto: agregando la receta del módulo de kernel a la imagen, pero no se carga en el arranque
Para fines de prueba, estoy usando la receta de ejemplo proporcionada por yocto para demostrar cómo construir módulos de kernel.
SUMMARY = "Example of how to build an external Linux kernel module"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=12f884d2ae1ff87c09e5b7ccc2c4ca7e"
inherit module
PR = "r0"
PV = "0.1"
SRC_URI = "file://Makefile \
file://hello.c \
file://COPYING \
"
S = "${WORKDIR}"
# The inherit of module.bbclass will automatically name module packages with
# "kernel-module-" prefix as required by the oe-core build environment.
loshello.c
El archivo es muy simple.
#include <linux/module.h>
int init_module(void)
{
printk("Hello World!\n");
return 0;
}
void cleanup_module(void)
{
printk("Goodbye Cruel World!\n");
}
MODULE_LICENSE("GPL");
Ahora, agregué este módulo a mi receta de imagen.
SUMMARY = "A console-only image that fully supports the target device \
hardware."
IMAGE_FEATURES += "splash package-management"
IMAGE_INSTALL += "test-mod autoconf automake binutils make busybox"
LICENSE = "MIT"
inherit core-image
Cuando inicio la imagen, veo la prueba "hello.ko" en el directorio / lib / modules, pero cuando verificodmesg
, No veo la salida que indica el módulo del kernel cargado.
Cuando corro manualmenteinsmod
enhello.ko
, Me sale la salida. Además, cuando corrormmod
, Me sale la salida.
¿Qué estoy haciendo mal? Necesito este módulo para cargar automáticamente en el arranque.
editar:
Aquí la salida, verificando que el módulo no está cargado en el arranque, sino que es un módulo válido.
/ # dmesg | grep "Hello"
/ # insmod hello.ko
[ 68.503689] Hello World!
/ # rmmod hello.ko
[ 72.702035] Goodbye Cruel World!