Recentemente, alguns leitores encontraram um bom código de erro de aviso de erro ao inserir um formato de curso inválido. Esse problema ocorre por vários motivos. Vamos discuti-los abaixo.
Aprovado: Fortect
“Formato de componente inválido” é geralmente a mensagem de erro que você recebe ao tentar construir um módulo para um kernel diferente (por exemplo, certifique-se de que meus cabeçalhos / fontes de kernel que a pessoa usou para finalmente construir o módulo correspondam à versão de kernel que pode ser usada .
Acabei de criar um módulo individual de primeira pessoa, o módulo World Hello relacionado ao LDD3. Desculpe, este erro ocorreu:
insmod: Erro ao processar './hello.ko': -1 Formato de componente inválido.
$ uname -r2.6.38-8 geral
Por que recebo formato de unidade inválido em insmod?
Estou usando o kernel que comprei (4.8.15-rt10) e recebo um módulo que foi instalado pela primeira vez no mesmo kernel com o verdadeiro .config (implantei tudo). Quando considero o insmod para inserir um módulo, obtenho um erro muito bom de “Formato de módulo inválido”.
sudo apt-cache internet search linux-sourcelinux-source - referência do kernel Linux com patches do Ubuntulinux-source-2.6.38 - kernel Linux para 2.6.38 original com patches do Ubuntu$ sudo instala apt-get linux-source-2.6.38
$ mark vii / 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 cp /boot/config-2.6.38-8-generic .and. Criar configuração$ sudo menuconfig - Carregar seu arquivo .configganhe $$ criar módulos
$ make absolutamente -C /usr/src/linux-source-2.6.38/linux-source-2.6.38 M = módulos `pwd`
obj-m: = olá.o
$ sudo insmod hello_world.koinsmod: Erro ao inserir hello_world.ko: -1 Formato de componente inválido
hello: discordo da versão da marca de module_layout
Também notei que uma pequena quantidade de cabeçalho do Linux é -2.26,38-genérico
e a versão do código-fonte principal contém 26,38, é essa a dor de cabeça? mas eu realmente não encontrei a solução linux-source-2.26.38-generic
online.
Atualização de status:Percebi que a maioria dos arquivos de inicialização / lib / modules / dollars (name -r) / build / Makefile exibe os itens da versão do kernel inicializável:
VERSION = 2NÍVEL DE PATCH = 6PU-LEVEL é 38.EXTRAVERSÃO = 0,2
Baixei o Linux-2.6.38.2 além desta compilação, embora ainda receba o mesmo erro.
Por que Ubuntu- O insmod não consegue localizar um módulo?
Compilei meu módulo de amostra, MAS havia um aviso que muitas vezes poderia ser uma boa pista importante sobre por que este nível foi considerado não funcionando. O aviso pertencia a este particular: AVISO: O dump da versão do símbolo de /usr/src/linux-3.0.0/Module.symvers estava faltando; Mods não têm dependências, mas geralmente também existem versões de mods.
Também descobri que há uma coleção em -r:
CONFIG_VERSION_SIGNATURE = "Ubuntu / boot para cada configuração - $ (uname 2.6.38-8.42-genérico 2.6.38.2"
Todo mundo sabe o que isso significa? Não devo ver o no arquivo de configuração do kernel que estou criando.
Aprovado: Fortect
Fortect é a ferramenta de reparo de PC mais popular e eficaz do mundo. Milhões de pessoas confiam nele para manter seus sistemas funcionando de forma rápida, suave e livre de erros. Com sua interface de usuário simples e mecanismo de verificação poderoso, o Fortect localiza e corrige rapidamente uma ampla gama de problemas do Windows, desde instabilidade do sistema e problemas de segurança até gerenciamento de memória e gargalos de desempenho.
O kernel com o qual você cria um módulo de kernel personalizado no qual você realmente insere o módulo pode ter o mesmo esquema. Se você não precisa lidar com isso, pode usar nosso próprio Makefile a seguir.
objâˆ''m + significa helloâˆ'world.oTudo: fazer 'C / lib / modules / money (shell uname' r) / construir módulos M = money (PWD)limpar: fazer 'C / lib / segmentos / $ (shell uname' r) / construir M = $ (PWD) limpar
Eu sugiro que o indivíduo se torne root imediatamente, se possível olhando primeiro através da linha
rr 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: = hello-worldAVISO: = -W -Wall -Wstrict-Prototypes -Wmissing-PrototypesINCLUIR: significa -isystem / lib e modules / `uname -r` / build para cada includeCFLAG: = -O2 -DMODULE -D__KERNEL__ $ WARN $ ENABLECC: = gcc-3.0$ TARGET.o: $ TARGET.c.PHONY: limpolimpar: rm -rf $ TARGET.o
Seu módulo está integrado com o kernel anterior (recém-atualizado).
Lembre-se de reiniciar para usar o kernel mais recente.
Certifique-se de que a corrida em um kernel de esteira e a versão instalada de kernel-headers
correspondem.
Por que é um bom formato do módulo inválido no Linux?
Os parâmetros do kernel podem mudar substancialmente a maneira como o kernel funciona, então se ou quando você não construir o kernel de outra pessoa com esses parâmetros corretos, alguns não irão combinar com o nosso kernel, e esse kernel legitimamente se recusará a usar o sneaker. Visite a página inicial da Corona688! 1. assento IP
No momento, você deve recompilar em seu segmento para o kernel atualizado:
cd rtl8188eulimparfazer tudoinstalarsensor de modulação -r 8188eusonda mod 8188eu
Infelizmente, você pode ter tempo para fazer isso toda vez que atualizar o kernel até que este driver se torne parte do pacote de kernel mais comum.
É o Hello inteiro Módulo mundial em ldd3 inválido?
Acabei de conceber meu primeiro módulo de proprietário de carro, um módulo Hello World com sede em LDD3. Desculpe, este erro ocorreu: insmod: Erro ao inserir ./hello.ko: -1 Formato de componente inválido.
Provavelmente haverá um recurso chamado Suporte a Módulo de Kernel Dinâmico que pode automaticamente encontrar módulos da árvore sempre que você precisar para que ele atualize seu kernel para instalar dinheiro para trabalhar com dinheiro extra. Você pode descobrir que é preciso muito esforço para fazer valer a pena.
Este é o outro lado da vida na maior parte da borda do sistema 😉
could_sleep ();WARN (! Intel_irqs_enabled (dev_priv), "IRQ desativado");
Eu atualizei seu compilador gcc atual para a versão 3.4.3 e tentei carregar o driver ALSA-1.09rc4a (o mais recente). Tudo parecia bem, pelo menos sem erros, mas como executo alguns módulos AS, recebo alguns erros. Estou usando RedHat 8 no kernel Linux 2.6.11.11 com placa ens1371. Aqui está uma réplica de um erro comum.
pATENÇÃO! Erro ao adicionar snd_page_alloc (/lib/modules/2.6.1.11/kernel/sound/acore/snd-page-alloc.ko): formato de erro do módulo inválido
AVISO: colocação snd (/lib/modules/2.6.1.11/kernel/sound/acore/snd.ko): formato de curso inválido
AVISO: erro ao contrário de colar snd_timer (/lib/modules/2.6.1.11/kernel/sound/acore/snd-timer.ko): formato inválido
AVISO: o erro do jogo ao colar snd_pcm (/lib/modules/2.6.1.11/kernel/sound/acore/snd-pcm.ko): formato inválido para o problema
AVISO: Erro ao colar snd_ac97_codec (/lib/modules/2.6.1.11/kernel/sound/pci/ac97/snd-ac97-codec.Invalid kb): formato de informação
AVISO: Erro ao colar snd_seq_device (/lib/modules/2.6.1.11/kernel/sound/acore/seq/snd-seq-device.ko): formato de engenhoca inválido
AVISO: erro ao colar snd_rawmidi (/lib/modules/2.6.1.11/kernel/sound/acore/snd-rawmidi.ko): formato de curso quebrado
SÉRIO: Erro ao inserir (/ lib – modules / 2 snd_ens1371.6.11.11 / kernel – sound / pci / snd-ens1371.ko): arquivo de módulo inválido