У меня то же с начало не выходило.
Здесь эта проблема уже обсуждалась
http://www.opennet.ru/openforum/vsluhforumID9/2164.htmlТут на соседней ветке форума у когото проблема с printk.
Лечится так же.
Вот работающий пример.
Обрати внимание на Makefile.
В файле version.h прописывается версия ядра для которой компилиркется модуль. 
В результате у меня для моего ASPLinux 7.3 получился следующий рабочий вариант. hello.c: 
#include <asm/atomic.h> 
#include <linux/kernel.h> 
#include <linux/module.h> 
MODULE_LICENSE("GPL"); 
MODULE_AUTHOR("(C) by  ... Inc, 2003"); 
MODULE_DESCRIPTION("Hello module."); 
int init_module()    { printk("Hello modele instaled.\n");   return (0); } 
void cleanup_module(){ printk("Hello module uninstalled.\n"); return;    } 
Makefile: 
CC=gcc 
MODFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX -I/usr/src/linux-2.4/include/ 
hello.o : hello.c /usr/src/linux-2.4/include/linux/version.h 
$(CC) $(MODFLAGS) -c hello.c