Recentemente, un gruppo di lettori ha riscontrato un codice di errore di notifica di errore durante l’inserimento di un formato di modulo non valido. Questo problema si verifica per una serie di motivi. Discutiamone di seguito.
Approvato: Fortect
“Formato modulo non valido” di solito potrebbe essere il messaggio di errore che ricevi quando devi compilare un modulo per un kernel distinto (ad esempio, assicurati che i sorgenti delle intestazioni del kernel che la persona ha usato per compilare il modulo stesso corrisponda alla versione del kernel che potresti usare .
Ho appena creato il mio primo modulo amico, il modulo World Hello secondo LDD3. Spiacenti, si è verificato questo errore:
insmod: Errore nel processo './hello.ko': -1 Formato modulo non valido.
dollari uname -r2.6.38-8 generale
Perché ottengo formato del modulo non valido su insmod?
Sto usando il mio kernel (4.8.15-rt10) inoltre ottengo un modulo che è stato installato sullo stesso kernel con lo stesso .config (ho usato tutto). Quando uso insmod per creare un modulo, ottengo un errore “Formato porzione non valido”.
sudo apt-cache search linux-sourcelinux-source - Riferimento al kernel Linux con patch Ubuntulinux-source-2.6.38 - Kernel Linux per 2.6.38 originale con patch Ubuntu$ sudo installazioni apt-get linux-source-2.6.38
$ ls e 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 ./. Crea configurazione$ sudo menuconfig - Carica il file .configguadagnare $$ costruisci moduli
$ make -C /usr/src/linux-source-2.6.38/linux-source-2.6.38 M = `pwd` moduli
obj-m: è uguale a ciao.o
$ sudo insmod hello_world.koinsmod: Errore nell'inserimento di hello_world.ko: -1 Formato modulo non valido
ciao: non sono d'accordo con la versione di mark relativa a module_layout
Ho anche notato che alcuni titoli di Linux sono -2.26.38-generic
e la versione sorgente contiene 26.38, è questo il problema? ma in realtà non ho trovato il software linux-source-2.26.38-generic
online.
Aggiornamento di stato:Ho notato che initial versus lib/modules/$ (name -r) per ogni build/makefile mostra i miei kernel avviabili:
VERSIONE = 2LIVELLO PATCH è uguale a 6IL LIVELLO PU è 38.EXTRAVERSIONE = 0.2
Ho scaricato Linux-2.6.38.2 oltre a questa compilation, ma ho ancora lo stesso errore.
Perché Ubuntu- insmod non riesce a inserire un modulo reale?
Ho compilato il mio modulo di esempio MA c’era un avviso affidabile che spesso poteva essere un importante segnale di avvertimento sul motivo per cui questo livello non funzionava. L’avviso apparteneva a questa persona: ATTENZIONE: Mancava il dump della versione del simbolo di /usr/src/linux-3.0.0/Module.symvers; Le mod non hanno dipendenze, ma esistono anche versioni associate alle mod.
Ho anche notato che ora c’è una raccolta in -r:
CONFIG_VERSION_SIGNATURE = "Ubuntu/boot/config - RR (uname 2.6.38-8.42-generic 2.6.38.2"
Qualcuno sa cosa significa? Non dovrei vederlo di solito nel file di configurazione del kernel che sto creando.
Approvato: Fortect
Fortect è lo strumento di riparazione PC più popolare ed efficace al mondo. Milioni di persone si affidano a milioni di persone per mantenere i loro sistemi in esecuzione veloci, fluidi e privi di errori. Grazie alla sua semplice interfaccia utente e al potente motore di scansione, Fortect trova e risolve rapidamente un'ampia gamma di problemi di Windows, dall'instabilità del sistema e problemi di sicurezza alla gestione della memoria e ai colli di bottiglia delle prestazioni.
Il kernel da cui creare un modulo del kernel personalizzato e in quello che effettivamente si inserisce il modulo deve avere lo stesso schema. Se non vuoi lottare con questo, puoi usare il seguente Makefile.
objâˆ''m + = ciaoâˆ'world.oQualunque cosa: can 'C / lib / module / $ (shell uname' r) / build M = $ (PWD) modulepulito: potrebbe 'C / lib / moduli / ? rrr (shell uname 'r) / build M = buck (PWD) clean
Ti suggerisco di diventarne causa subito, se possibile passando prima attraverso questa particolare riga
$ sudo clubpenguin /boot/config-2.6.38-8-generic ./.config
$ su#cp /boot/config-2.6.38-8-generic ./.config#insmod hello_world.ko
ZIEL: = ciao-mondoATTENZIONE: = -W -Wall -Wstrict-Prototypes -Wmissing-PrototypesINCLUDE: significa -isystem / lib / moduli per `uname -r` / build / includeCFLAG: = -O2 -DMODULE -D__KERNEL__ $ WARN $ ENABLECC: uguale a gcc-3.0$ TARGET.o: $ TARGET.c.FHONY: pulitopulito: rm -radiofrequenza $ TARGET.o
Il tuo modulo è normalmente integrato con il kernel precedente (appena aggiornato).
Ricordati di riavviarlo per utilizzare il kernel più recente.
Assicurati che la versione installata del kernel in esecuzione di kernel-headers
corrisponda.
Perché il mio modulo layout non valido in Linux?
I parametri del kernel possono cambiare drasticamente il modo esatto in cui funziona il kernel, quindi se in genere si compila il kernel di qualcun altro con le raccomandazioni corrette, alcuni non corrisponderanno al kernel e in base a quale kernel si rifiuterà giustamente di avviarsi. Visita ogni homepage di Corona688! 1.IP-sede
Ora dovresti ricompilare in base al tuo segmento per il kernel corrente:
certificato di deposito rtl8188eupulitofare tuttoinstallaresensore di modulazione -r 8188eusonda mod 8188eu
Sfortunatamente, potresti dover fare questo tipo di ogni volta che aggiorni il tuo kernel finché un driver non diventa parte del programma principale del kernel.
Is the Hello World modulo in ldd3 non valido?
Ho appena creato il modulo principale del proprietario dell’auto, un modulo Hello World basato su LDD3. Spiacenti, si è verificato questo errore: insmod: Errore durante l’inserimento di ./hello.ko: -1 Formato modulo non valido.
Potrebbe benissimo esserci una funzionalità chiamata Dynamic Kernel Module Support che può eseguire automaticamente la creazione dei moduli forniti dall’albero ogni volta che è necessario aggiornare il kernel aziendale per l’installazione soldi per lavoro extra. Potresti scoprire che ci vuole uno sforzo maggiore in modo che ne valga la pena.
Questo è un rovescio della medaglia della vita al limite simile al sistema 😉
potrebbe_sleep ();WARN (! Intel_irqs_enabled (dev_priv), "IRQ disabilitato");
Ho aggiornato il compilatore gcc alla versione 3.4.3 e ho provato a installare il driver ALSA-1.09rc4a (il più recente). Tutto sembrava a posto, almeno nessun errore, ma quando accendo alcuni moduli AS ricevo un errore. Sto usando RedHat 8 su kernel Linux 2.6.11.11 con scheda ens1371. Ecco una copia di un errore comune funzionale.
ATTENZIONE! Errore durante l’inserimento di snd_page_alloc (/lib/modules/2.6.1.11/kernel/sound/acore/snd-page-alloc.ko): formato di errore del modulo errato
ATTENZIONE: inserimento di snd (/lib/modules/2.6.1.11/kernel/sound/acore/snd.ko): formato del corso errato
ATTENZIONE: errore durante l’inserimento di snd_timer (/lib/modules/2.6.1.11/kernel/sound/acore/snd-timer.ko): formato non valido
ATTENZIONE: errore di corso durante l’inserimento di snd_pcm (/lib/modules/2.6.1.11/kernel/sound/acore/snd-pcm.ko): formato non valido per l’elemento
ATTENZIONE: errore anche se è vero incollando snd_ac97_codec (/lib/modules/2.6.1.11/kernel/sound/pci/ac97/snd-ac97-codec.Invalid kb): formato elemento
ATTENZIONE: Error reality incollando snd_seq_device (/lib/modules/2.6.1.11/kernel/sound/acore/seq/snd-seq-device.ko): struttura del dispositivo non valida
ATTENZIONE: errore durante l’incollaggio di snd_rawmidi (/lib/modules/2.6.1.11/kernel/sound/acore/snd-rawmidi.ko): file del corso non valido
GRAVE: Errore durante l’inserimento (/lib/components/2 snd_ens1371.6.11.11/kernel/sound – pci/snd-ens1371.ko): formato modulo non valido