2010-12-09 5 views
0

Я пытаюсь скомпилировать привет мир модуля отдана hereКак построить модуль ядра

Я последовал следующий шаг.

  1. Загруженные Linux ядро ​​2.6.35-rc5
  2. извлеченный в каталог/Общие/источник/Linux
  3. Соблюдено все ядра.
  4. создал тест в каталоге linux.
  5. Создал и выполнил приветственный мировой модуль, как упоминалось там.

, когда я запускаю команду insmod, я получаю эту ошибку

insmod: error inserting 'hello.ko': -1 Invalid module format 

Как я рассортировать эту ошибку?

С уважением,

ответ

1

ОК, ошибка, которую вы делаете, - это версия ядра.

Сначала попробуйте

uname -r 

Вы бы получить версию ядра. Загружаемая версия, скорее всего, не будет версией ядра вашей системы. Так измените файл грим на

ifeq ($(KERNELRELEASE),) 

KERNELDIR ?= /lib/modules/$(shell uname -r)/build 
PWD := $(shell pwd) 

.PHONY: build clean 

build: 
     $(MAKE) -C $(KERNELDIR) M=$(PWD) modules 

clean: 
     rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c 
else 

$(info Building with KERNELRELEASE = ${KERNELRELEASE}) 
obj-m := hello.o 

endif 

Убедитесь, что вкладки в порядке, как указано в приведенном выше сценарии.

0

Ваш модуль ядра должен соответствовать запущенному ядру. Например, если вы хотите установить этот конкретный модуль, вам также необходимо установить ядро, которое вы создали.

Как правило, вы не должны создавать ядро ​​самостоятельно и использовать предварительно установленную версию, которая соответствует ядру вашего дистрибутива. Найдите пакет kernel-headers в репозитории вашего дистрибутива.

+0

`kernel * devel *` в некоторых случаях, потому что что-то с `headers` часто`/usr/include/linux`, которое зарезервировано для пользовательского пространства. – user502515 2010-12-09 21:09:01

Смежные вопросы