В последнее время некоторое количество читателей столкнулось с ошибкой, предупреждающей код ошибки, при вставке недопустимого формата модуля. Эта проблема возникает по ряду причин. Давайте обсудим их ниже.
Одобрено: Fortect
«Недопустимый формат модуля» обычно может быть сообщением об ошибке, которое вы получаете, когда пытаетесь создать модуль для альтернативного ядра (например, убедитесь, что заголовки ядра для каждого источника, который человек использовал для создания модуля, соответствует версии ядра, которую вы мог бы использовать.
Я только что создал свой первый модуль участника, модуль World Hello согласно LDD3. К сожалению, произошла эта ошибка:
insmod: Ошибка производства './hello.ko': -1 Неверный формат модуля.
rr uname -r2.6.38-8 общие
Почему я получаю неверный формат модуля во время insmod?
Я использую собственное ядро (4.8.15-rt10) и просто получаю модуль, который был установлен на том же ядре с тем же файлом .config (я использовал все). Когда я использую insmod для установки модуля, я получаю сообщение об ошибке «Недопустимый формат компонента».
sudo apt-cache search linux-sourcelinux-source - справочник по ядру Linux с патчами Ubuntulinux-source-2.6.38 - ядро Linux для оригинальной версии 2.6.38 с патчами Ubuntu$ sudo устанавливает apt-get linux-source-2.6.38
$ ls usr / src /Заголовки Linux-2.6.38-8 Linux-источник-2 .6.38 vboxguest-5.0.10Заголовки Linux-2.6.38-8-generic linux-source-2.6.38.tar.bz2
$ sudo cp /boot/config-2.6.38-8-generic ./. Создать конфигурацию$ sudo menuconfig - загружает файл .configзаработать $$ выкрутить модули
$ make -C /usr/src/linux-source-2.6.38/linux-source-2.6.38 M = модули `pwd`
obj-m: равно hello.o
$ sudo insmod hello_world.koinsmod: Ошибка при вставке hello_world.ko: -1 Неверный формат модуля
привет: не согласен с версией отметки большинства module_layout
Я также заметил, что некоторые теги Linux h2 имеют тип -2.26.38-generic
, а альтернативный источник содержит 26.38, в этом проблема? но я действительно не нашел в Интернете формулу linux-source-2.26.38-generic
.
Обновление статуса:Я заметил, что initiate per lib / modules / $ (name -r) per build / Makefile отображает мой вариант загрузочного ядра:
ВЕРСИЯ = 2УРОВЕНЬ ПАТЧА равен 6PU-LEVEL - 38.ЭКСТРАВЕРСИЯ = 0,2
Я загружаю Linux-2.6.38.2 в дополнение к этой компиляции, но получаю ту же ошибку.
Почему Ubuntu- insmod не удается вставить свой модуль?
Я скомпилировал свой образец модуля, НО было функциональное предупреждение, которое часто могло быть важным признаком того, почему этот уровень не прилагал усилий. Предупреждение принадлежит этому человеку: ПРЕДУПРЕЖДЕНИЕ: Дамп версии символа /usr/src/linux-3.0.0/Module.symvers отсутствовал; Моды не имеют зависимостей, но есть версии с модами.
Я также заметил это, и это также коллекция в -r:
CONFIG_VERSION_SIGNATURE = "Ubuntu / boot / config - доллар (uname 2.6.38-8.42-generic 2.6.38.2"
Кто-нибудь знает, что это значит? Я не должен видеть этого в создаваемом мной файле конфигурации ядра.
Одобрено: Fortect
Fortect — самый популярный и эффективный в мире инструмент для ремонта ПК. Миллионы людей доверяют ему обеспечение быстрой, бесперебойной и безошибочной работы своих систем. Благодаря простому пользовательскому интерфейсу и мощному механизму сканирования Fortect быстро находит и устраняет широкий спектр проблем Windows — от нестабильности системы и проблем с безопасностью до проблем с управлением памятью и производительностью.
а>
Ядро, из которого человек создает собственный модуль ядра и в которое вы его фактически вставляете, должно иметь одинаковую схему. Если вы не хотите продавать с этим, вы можете использовать следующий Makefile.
objâˆ''m + = helloâˆ'world.oВсе: выполнены модули 'C / lib / modules / $ (shell uname' r) / build M = $ (PWD)чистый: выполнил 'C / lib / modules / rrr (shell uname' r) / build M = bucks (PWD) clean
Я предлагаю вам сразу выявить основные проблемы, если возможно, сначала пройдя по типу строки
<цитата>
$ 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: = привет-мирВНИМАНИЕ: = -W -Wall -Wstrict-Prototypes -Wmissing-PrototypesВКЛЮЧИТЬ: означает -isystem / lib / modules или `uname -r` / build / includeCFLAG: = -O2 -DMODULE -D__KERNEL__ $ WARN $ ENABLECC: равно gcc-3.0$ TARGET.o: $ TARGET.c.PHONY: чистыйчистый: rm-эмиттер $ TARGET.o
Ваш модуль определенно интегрирован с предыдущим ядром (только что обновленным).
Не забудьте перезапустить это, чтобы использовать новое ядро.
Убедитесь, что работающее ядро и установленная версия kernel-headers
совпадают.
Почему мой модуль фреймворк недопустим в Linux?
Параметры ядра могут радикально изменить ваш текущий способ работы ядра, поэтому, если вы не можете собрать чужое ядро с правильными диапазонами, некоторые из них не будут соответствовать ядру, и потому что ядро по праву откажется загружаться. Посетите большую часть домашней страницы Corona688! 1. IP-сиденье
Теперь вы должны перекомпилировать на основе вашего сегмента для текущего ядра:
dvd cd rtl8188euчистыйсделай всеустановитьдатчик модуляции -r 8188euмод 8188eu зонд
К сожалению, вам, возможно, придется выполнять этот совет каждый раз при обновлении ядра, пока этот драйвер подхода не станет частью основного пакета скидок для ядра.
Привет, мир модуль в ldd3 недействителен?
Я только что создал свой первоначальный модуль владельца автомобиля, модуль Hello World на основе LDD3. К сожалению, возникла эта ошибка: insmod: Ошибка при вставке ./hello.ko: -1 Неверный формат модуля.
Вероятно, будет функция под названием Dynamic Kernel Module Support, которая может автоматически создавать модули в дереве всякий раз, когда вам нужно обновить ваше надежное ядро, чтобы установить деньги за Дополнительная работа. Вы можете обнаружить, что для того, чтобы оно того стоило, требуется больше усилий.
Это вообще оборотная сторона жизни на грани системы 😉
could_sleep ();WARN (! Intel_irqs_enabled (dev_priv), «IRQ отключен»);
Я обновил компилятор gcc, чтобы помочь с версией 3.4.3, и попытался установить драйвер ALSA-1.09rc4a (самый последний). Все выглядело очень хорошо, по крайней мере, без ошибок, но когда я предлагаю определенные модули AS, я получаю ошибку. Я использую RedHat 8 в ядре Linux 2.6.11.11, имея карту ens1371. Вот копия любой распространенной ошибки.
ВНИМАНИЕ! Ошибка при вставке snd_page_alloc (/lib/modules/2.6.1.11/kernel/sound/acore/snd-page-alloc.ko): формат ошибки больного модуля
ВНИМАНИЕ: вставка snd (/lib/modules/2.6.1.11/kernel/sound/acore/snd.ko): формат больного курса
ВНИМАНИЕ: ошибка при установке snd_timer (/lib/modules/2.6.1.11/kernel/sound/acore/snd-timer.ko): недопустимый формат
ВНИМАНИЕ: ошибка курса при закреплении snd_pcm (/lib/modules/2.6.1.11/kernel/sound/acore/snd-pcm.ko): недопустимый формат для элемента
ВНИМАНИЕ! Ошибка при вставке snd_ac97_codec (/lib/modules/2.6.1.11/kernel/sound/pci/ac97/snd-ac97-codec.Invalid kb): формат элемента
ВНИМАНИЕ: ошибка при вставке snd_seq_device (/lib/modules/2.6.1.11/kernel/sound/acore/seq/snd-seq-device.ko): недопустимый тип устройства
ВНИМАНИЕ: ошибка при вставке snd_rawmidi (/lib/modules/2.6.1.11/kernel/sound/acore/snd-rawmidi.ko): неверное построение курса
СЕРЬЕЗНО: ошибка при вставке (/ lib / quests / 2 snd_ens1371.6.11.11 / kernel / sound per pci / snd-ens1371.ko): недопустимый формат модуля