Freitag, 25. Mai 2012, 20:09

Du bist nicht angemeldet.



[gelöst] modul erstellen

klima06

ist zu Gast bei Freunden.

  • »klima06« ist der Autor dieses Themas

Beiträge: 17

Ubuntu: 8.10

Kernel: ---

Desktop: ---

Architektur: ---

  • Private Nachricht senden

1

Samstag, 18. Dezember 2010, 23:57

modul erstellen

hallo zusammen ,
ich habe ubuntu 10.4 und habe kernel 2.6.36 drauf installiert .
meine frage ist : wie kann man ein modul im kernel 2.6.36 erstellen ?
ich habe schon versucht folgendermasse ein modul zu erstellen :
//--------------------------------------------------------------------------------------------------------
#define MODULE
#include <linux/module.h>

int init_module(void) { printk("<1>Hallo, Welt\n"); return 0; }
void cleanup_module(void) { printk("<1>Ade, du grausame Welt\n"); }
//--------------------------------------------------------------------------------------------------------

aber mir wurde immer ein fehler bei 1.zeile "#define MODULE" beim compilieren gezeigt.
ich habe nächste woche ein prüfung und ich muss bis dahin das hin bekommen.

danke!!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »klima06« (12. Februar 2011, 21:29)


haliner

hat hier 2. Wohnsitz.

Beiträge: 423

Ubuntu: ---

Kernel: 2.6.39-ARCH

Desktop: KDE

Architektur: ---

  • Private Nachricht senden

2

Sonntag, 19. Dezember 2010, 13:00

Makefile:

Quellcode

1
2
3
4
5
6
obj-m = testmodule.o
KVERSION = $(shell uname -r)
all:
	make -C /lib/modules/$(KVERSION)/build M=$(PWD) modules
clean:
	make -C /lib/modules/$(KVERSION)/build M=$(PWD) clean


testmodule.c:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
 *  testmodule - A small module for testing kernel module compilation.
 *
 *  GPL-Hinweise, etc.
 */

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

static int __init testmodule_init(void)
{
	printk("testmodule: init");
	return 0;
}

static void __exit testmodule_exit(void)
{
	printk("testmodule: exit");
	return 0;
}

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Stefan Haller");
MODULE_DESCRIPTION("Small module for testing kernel module compilation");

module_init(testmodule_init);
module_exit(testmodule_exit);


Anschließend kompilieren, laden und entladen mit:

Quellcode

1
2
3
4
make
sudo insmod testmodule.ko
sudo rmmod testmodule.ko
dmesg | tail


Viel Erfolg bei der Prüfung :)


Gruß, Stefan

klima06

ist zu Gast bei Freunden.

  • »klima06« ist der Autor dieses Themas

Beiträge: 17

Ubuntu: 8.10

Kernel: ---

Desktop: ---

Architektur: ---

  • Private Nachricht senden

3

Montag, 20. Dezember 2010, 00:32

danke sehr haliner :thumbsup: :thumbsup: :thumbsup: ,

es hat mir sehr geholfen , ich versuche jetzt eine funktion von meine hausaufgabe hinzukriegen , wenn es nicht klappt , dann melde mich nochmal .
vielen vielen dank .

klima06

ist zu Gast bei Freunden.

  • »klima06« ist der Autor dieses Themas

Beiträge: 17

Ubuntu: 8.10

Kernel: ---

Desktop: ---

Architektur: ---

  • Private Nachricht senden

4

Donnerstag, 23. Dezember 2010, 01:35

wie kann man ein funktion drin schreiben können.

Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von »klima06« (12. Februar 2011, 21:18)


haliner

hat hier 2. Wohnsitz.

Beiträge: 423

Ubuntu: ---

Kernel: 2.6.39-ARCH

Desktop: KDE

Architektur: ---

  • Private Nachricht senden

5

Donnerstag, 23. Dezember 2010, 18:05

Für Quellcode benutzt du am besten den Code-Tag.

Ich habe mir dein Kernel-Modul nicht näher angesehen, aber ich glaube, dass ich dennoch weiß, wo das Problem liegt. dmesg schreibt dir die Kernel-Log auf die Standardausgabe. Durch das leiten durch tail werden nur die letzten 5 Zeilen angezeigt. Nutze less um alles anzuzeigen (scrollbar).

Quellcode

1
2
3
dmesg | less
# bzw. kannst du auch die Log-Datei aus dem Log-Verzeichnis nehmen. Ergebnis ist dasselbe ;)
sudo less /var/log/dmesg


Ich schätze mal, dass du dich nur an die Vorgaben halten musst, aber zum Prozesse auflisten benötigt man kein Kernel-Modul. Ich schätze mal, du weißt das, aber falls andere hier drüber stolpern, möchte ich nur den Hinweis hier anbringen. :)

Schöne Weihnachten,
Stefan