Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

310
Vistas
"Error de segmentación" cuando `rmmod` o `modprobe -r`

Probar el módulo de kernel más simple de LDD3 sin ninguna modificación en el kernel personalizado v4.1.0-rc6 para la placa Beagle Bone con BusyBox v1.23.0. El código del módulo es el siguiente:

 #include <linux/init.h> #include <linux/module.h> MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void) { printk(KERN_ALERT "Hello, world\n"); return 0; } static void hello_exit(void) { printk(KERN_ALERT "Goodbye, cruel world\n"); } module_init(hello_init); module_exit(hello_exit);

El archivo Make es:

 ARCH := arm CROSS_COMPILE := arm-cortex_a8-linux-gnueabi- obj-m := hello.o all: make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C /path/to/linux/source/tree M=$(PWD) modules clean: make ARCH=$(ARCH) CROSS_COMPILE=$(CROSS_COMPILE) -C /path/to/linux/source/tree M=$(PWD) clean

El módulo se está compilando e instalando en rootfs sin problemas. también está cargando:

 $ insmod hello.ko [ 30.692404] Hello, world

Pero al intentar eliminarlo, me sale:

 $ rmmod hello.ko Segmentation fault $modprobe -r hello.ko Segmentation fault $ lsmod hello 813 0 - Live 0xbf000000 (O)

El kernel está compilado con el soporte de descarga de módulos (tanto regular como forzado) habilitado.

¿Cuál puede ser la posible causa de este problema? ¿Cuál es la forma de abordar la investigación de la misma?

Actualizar:

Como se sugiere en los comentarios, he intentado incluir linux/kernel.h , definiendo los símbolos MODULE , LINUX y __KERNEL__ . Se agregaron los prefijos __init y __exit a las funciones. Se eliminaron los modificadores static . Se eliminaron las líneas de printk . El resultado el mismo. dmesg muestra solo el saludo inicial. Sorprendentemente, la carga y descarga de los módulos del kernel, como gpio_keys o crypto/ccm , funciona. Entonces, lo único que queda por sospechar es la forma en que se compila el módulo.

Actualización 2
Actualizar el kernel a la instantánea más reciente no ayudó. Compilado el módulo con diferentes configuraciones de optimización no ayudó. El siguiente paso, supongo, voy a modificar el rmmod de BusyBox para tener alguna indicación de la ubicación del problema.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Echa un vistazo a estos tutoriales:

http://www.tldp.org/HOWTO/Module-HOWTO/x839.html http://www.tldp.org/LDP/lkmpg/2.4/html/x281.htm

Intenta agregar:

 #define MODULE #define LINUX #define __KERNEL__ #include <linux/kernel.h> /* Needed for KERN_ALERT */
over 4 years ago · Santiago Trujillo Denunciar

0

Me las he arreglado para solucionar este problema. Usando strace , descubrí que la falla de segmento está ocurriendo en algún lugar al read el archivo modules.dep.bb específico de BusyBox . BusyBox utiliza este archivo cuando se compila con la opción "Modutils simplificados" ( CONFIG_MODPROBE_SMALL ). Al deshabilitar la opción, seleccionar las utilidades que se instalarán y reconstruir BusybBox, obtuve el trabajo de descarga del módulo. Creo que la raíz del problema está cerca del hecho de que el módulo de prueba se compila y almacena fuera del directorio /lib/..../modules , por lo que la modutils busybox se está confundiendo.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda