The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"модуль ядра"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"модуль ядра" 
Сообщение от гриша Искать по авторуВ закладки on 01-Сен-05, 16:12  (MSK)
решил написать модуль по статье
http://gazette.linux.ru.net/rus/articles/lkmpg.html#HELLOWORLDPART2
взял пример

#include <linux/module.h>      
#include <linux/kernel.h>
#include <linux/init.h>  

static int __init hello_2_init(void)
{
  printk(KERN_ALERT "Hello, world 2\n");
  return 0;
}

static void __exit hello_2_exit(void)
{
printk(KERN_ALERT "Goodbye, world 2\n");
}

module_init(hello_2_init);
module_exit(hello_2_exit);

makefile :
obj-m += src.o

и попробовал собрать
make -C /lib/modules/2.6.9-1.667asp/source  SUBDIRS=$PWD modules

собралось даже без варнингов

make: Entering directory `/lib/modules/2.6.9-1.667asp/build'
  CC [M]  /home/tsolre/work/modules/1/src.o
  Building modules, stage 2.
  MODPOST
  CC      /home/tsolre/work/modules/1/src.mod.o
  LD [M]  /home/tsolre/work/modules/1/src.ko
make: Leaving directory `/lib/modules/2.6.9-1.667asp/build'

так же как и в примере  но вот при вставке модуля
insmod ./src.ko
выдает вот такое
insmod: error inserting './src.ko': -1 Invalid module format
в чем может быть проблема ?

  Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "модуль ядра" 
Сообщение от Alex_Borman emailИскать по авторуВ закладки(ok) on 01-Сен-05, 18:45  (MSK)
Вообщета надо указать, при компиляции, что этот код будет выполнятся в ядре и модулем!


Посмотри лучше другую ссылочку
http://www.opennet.me/docs/RUS/lkmpg/

И примерчик от туда:
----------------------hello.c------------------------------
#include <linux/kernel.h>   /* We're doing kernel work */
#include <linux/module.h>   /* Specifically, a module */

#if CONFIG_MODVERSIONS==1
#define MODVERSIONS
#include <linux/modversions.h>
#endif

int init_module()
{
  printk("Hello, world - this is the kernel speaking\n");
  return 0;
}

void cleanup_module()
{
  printk("Short is the life of a kernel module\n");
}
-----------------------------------------------------------

----------------MakeFile-----------------------------------
CC=gcc
MODCFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX

hello.o:        hello.c /usr/include/linux/version.h
                $(CC) $(MODCFLAGS) -c hello.c
-----------------------------------------------------------

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "модуль ядра" 
Сообщение от Alex Искать по авторуВ закладки(??) on 01-Сен-05, 22:58  (MSK)
Скорее всего проблема в несовпадении версий.
Выполни modinfo. Параметром укажи собраный модуль. Увидишь версию ядра под которую оно собрано.
Теперь смотри версию своего ядра в /proc/version.
Обе версии должны быть идентичны.
Если не совпадает только extraversion (2.6.12.xxx и 2.6.12.yyy), то можно поравить extraversion в Makefile, который лежит в корне исходников ядра.
Потом собери заново. Должно работать.

Есть 2-й способ, не правильный:
выполнить modprobe c параметром --force-vermagic.

Удачи.

  Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх


Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ]
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру