Recientemente, algunos lectores han encontrado un gran código de error de advertencia de error al insertar un formato de módulo enfermo. Este problema se produce por varias razones. Discutámoslos a continuación.
Aprobado: Fortect
“Formato de componente no válido” suele ser el mensaje de error que recibe su empresa cuando intenta compilar un módulo en un kernel diferente (por ejemplo, asegúrese de que los nuevos encabezados / fuentes del kernel que la persona que consideró compilar el módulo coincida con la cuenta del kernel que puede usar .
Acabo de crear mi módulo en primera persona, el componente World Hello según LDD3. Lo sentimos, se produjo este error:
insmod: Error al procesar './hello.ko': -1 Formato de elemento no válido.
$ uname -r2.6.38-8 general
¿Por qué obtengo formato de módulo enfermo en insmod?
Estoy usando my son el propietario del kernel (4.8.15-rt10) y obtengo un módulo que se instaló en el mismo kernel con esos mismos .config (implementé todo). Cuando implemento insmod para insertar un módulo, obtengo algún tipo de error “Formato de módulo no válido”.
sudo apt-cache survey linux-sourcelinux-source: referencia del kernel de Linux con parches de Ubuntulinux-source-2.6.38: kernel de Linux para 2.6.38 original con parches de Ubuntu$ sudo instala apt-get linux-source-2.6.38
dinero ls / usr / src /Linux-headers-2.6.38-8 linux-source-2 .6.38 vboxguest-5.0.10Linux-headers-2.6.38-8-generic linux-source-2.6.38.tar.bz2
$ sudo clubpenguin /boot/config-2.6.38-8-generic ./. Crear configuración$ sudo menuconfig - Carga cada uno de nuestros archivos .configgana $$ crear módulos
rrr make -C /usr/src/linux-source-2.6.38/linux-source-2.6.38 M = módulos `pwd`
obj-m: = hola.o
efectivo sudo insmod hello_world.koinsmod: Error al insertar hello_world.ko: -1 Formato de módulo no válido
hola: no estoy de acuerdo con la versión de la firma de module_layout
También noté que los expertos afirman que algunos encabezados de Linux son -2.26.38-generic
y luego la versión fuente contiene 26.38, ¿es algún tipo de problema? pero realmente no encontré, diría que la solución linux-source-2.26.38-generic
en línea.
Actualización de estado:Vi que initiate / lib / modules / income (name -r) / build / Makefile muestra nuestra versión de arranque del kernel:
VERSION significa 2NIVEL DE PARCHE = 6PU-LEVEL es 38.EXTRAVERSIÓN = 0.2
Descargo Linux-2.6.38.2 además de este sistema, pero sigo recibiendo el mismo error.
¿Por qué Ubuntu- ¿Insmod falla para insertar un módulo?
Compilé mi módulo de muestra PERO había una advertencia que a menudo podría ser una pista muy importante de por qué esta cantidad de no estaba funcionando. La advertencia pertenecía a la persona anterior: ADVERTENCIA: Faltaba el volcado de versión del símbolo relacionado con /usr/src/linux-3.0.0/Module.symvers; Los mods no tienen dependencias, pero normalmente también son versiones de mods.
Posiblemente me di cuenta de que hay una colección en -v:
CONFIG_VERSION_SIGNATURE = "Ubuntu / boot para cada configuración - $ (uname 2.6.38-8.42-generic 2.6.38.2"
¿Alguien sabe lo que esto significa? No debería ver esto en el archivo de configuración del kernel que estoy construyendo.
Aprobado: Fortect
Fortect es la herramienta de reparación de PC más popular y eficaz del mundo. Millones de personas confían en él para mantener sus sistemas funcionando de forma rápida, fluida y sin errores. Con su sencilla interfaz de usuario y su potente motor de análisis, Fortect encuentra y soluciona rápidamente una amplia variedad de problemas de Windows, desde la inestabilidad del sistema y los problemas de seguridad hasta la gestión de la memoria y los cuellos de botella en el rendimiento.
El kernel desde el que crea una unidad de kernel personalizada y en el que realmente inserta el segmento debe tener el mismo esquema. Si nunca quiere lidiar con esto, puede considerar el siguiente Makefile.
objâˆ''m + significa holaâˆ'world.oTodo: hacer 'C / lib / modules o $ (shell uname' r) / build M es igual a $ (PWD) móduloslimpio: hacer 'C / lib para cada módulo / $ (shell uname' r) / configurar M = $ (PWD) clean
Le insto a que se convierta en root de inmediato, si es posible, pase primero por la línea
ingresos sudo cp /boot/config-2.6.38-8-generic ./.config
$ su#cp /boot/config-2.6.38-8-generic ./.config#insmod hello_world.ko
ZIEL: = hola-mundoADVERTENCIA: implica -W -Wall -Wstrict-Prototypes -Wmissing-PrototypesINCLUYE: significa -sistema - lib / modules / `uname -r` / build - includeCFLAG: = -O2 -DMODULE -D__KERNEL__ $ WARN rrr ENABLECC: = gcc-3.0$ OBJETIVO.o: $ OBJETIVO.c.PHONY: limpiolimpio: rm -rf $ OBJETIVO.o
Su módulo está integrado con el kernel de historial (recién actualizado).
Recuerde reiniciar esto que usaría el último kernel.
Asegúrese de que el kernel en ejecución más importante y la versión instalada de kernel-headers
coincidan.
¿Por qué ¿El formato de mi módulo no es válido en Linux?
Los parámetros del kernel pueden cambiar drásticamente la forma en que funciona el kernel, absolutamente si no construye el kernel de otra persona que tenga los parámetros correctos, algunos no coincidirán con el tipo de kernel, y ese kernel rechazará legítimamente lo que ayudará a arrancar. ¡Visite la página de inicio de Corona688! 1.IP-asiento
Lo ideal sería volver a compilar ahora en su segmento para el kernel:
cd rtl8188eulimpioHaz todoInstalar en pcsensor de modulación -z 8188eusonda mod 8188eu
Desafortunadamente, es posible que tenga que hacer esto cada vez que actualice cualquier kernel hasta que este controlador se convierta en parte de la mayor parte del paquete principal del kernel.
¿Ves, ¿El módulo Hello World en ldd3 no es válido?
De hecho, creé mi primer módulo de propietario de automóvil, un módulo Hello World basado en LDD3. Lo sentimos, este error ha sido transferido: insmod: Error al insertar ./hello.ko: -1 Formato de parte no válido.
Probablemente habrá una característica etiquetada como Dynamic Kernel Module Support que puede automáticamente crear módulos desde el árbol siempre que necesite actualizar su kernel para instalar dinero para mucho trabajo extra. Puede encontrar que requiere más esfuerzo para que valga la pena.
Esta es la otra cara de la vida en el borde del sistema 😉
could_sleep ();ADVERTENCIA (! Intel_irqs_enabled (dev_priv), "IRQ deshabilitado");
He actualizado el compilador gcc más importante a la versión 3.4.3 y probé cuál puede instalar el controlador ALSA-1.09rc4a (el más antiguo). Todo se veía bien, al menos sin errores, aun así cuando ejecuto ciertos módulos AS obtengo un error. Estoy usando RedHat 8 en relación con el kernel de Linux 2.6.11.11 con la tarjeta ens1371. Aquí hay otra copia de un error común.
¡ATENCIÓN! Error al insertar snd_page_alloc (/lib/modules/2.6.1.11/kernel/sound/acore/snd-page-alloc.ko): archivo de error de módulo no válido
ADVERTENCIA: insertando snd (/lib/modules/2.6.1.11/kernel/sound/acore/snd.ko): formato de curso no válido
ADVERTENCIA: error al pegar snd_timer (/lib/modules/2.6.1.11/kernel/sound/acore/snd-timer.ko): formato no válido
ADVERTENCIA: error del curso de capacitación al pegar snd_pcm (/lib/modules/2.6.1.11/kernel/sound/acore/snd-pcm.ko): formato no válido sobre el elemento
ADVERTENCIA: Error al pegar snd_ac97_codec (/lib/modules/2.6.1.11/kernel/sound/pci/ac97/snd-ac97-codec.Kb no válido): formato
ADVERTENCIA: Error al pegar snd_seq_device (/lib/modules/2.6.1.11/kernel/sound/acore/seq/snd-seq-device.ko): formato de dispositivo inaceptable
ADVERTENCIA: error al pegar snd_rawmidi (/lib/modules/2.6.1.11/kernel/sound/acore/snd-rawmidi.ko): formato de curso enfermo
SERIO: Error al grabar (/ lib / modules / 2 snd_ens1371.6.11.11 kernel / sound / pci / snd-ens1371.ko): formato de unidad no válido