Un módulo del núcleo no es un ejecutable independiente, sino un fichero objeto que será enlazado dentro del núcleo en tiempo de ejecución. En consecuencia, deberían ser compilados con la bandera -c. También, todos los módulos del núcleo deberían ser compilados con ciertos símbolos definidos.
Hay otros símbolos que tienen que ser incluidos, o no, dependiendo de las banderas con las que se haya compilado el núcleo. Si no estás seguro de cómo fue compilado el núcleo, mira en /usr/include/linux/config.h
# Makefile para un módulo básico del núcleo CC=gcc MODCFLAGS := -Wall -DMODULE -D__KERNEL__ -DLINUX hello.o: hello.c /usr/include/linux/version.h $(CC) $(MODCFLAGS) -c hello.c echo insmod hello.o para conectarlo echo rmmod hello para desconectarlo echo echo X y la programación del núcleo no se mezclan. echo Haz insmod y rmmod desde fuera de X.
Así que ahora sólo falta hacer su a root (no compilaste como root, ¿a que no? Viviendo en el límite1.1...), y entonces haz insmod hello y rmmod hello para la satisfacción de tu alma. Mientras lo haces, observa la presencia de tu nuevo módulo del núcleo en /proc/modules.
Por cierto: el motivo por el que Makefile recomienda no hacer insmod desde X es porque cuando el núcleo tiene que imprimir un mensaje con printk, lo envía a la consola. Cuando no utilizas X, va al terminal virtual que estás usando (el que escogiste con Alt-Fn) y lo ves. Si utilizas X, en cambio, hay dos posibilidades: que tengas una consola abierta con xterm -C, en cuyo caso la salida será enviada allí, o que no, en cuyo caso la salida irá al terminal virtual 7 (el que está `cubierto' por X).
Si tu núcleo se vuelve inestable será más probable que cojas los mensajes de depuración sin las X. Fuera de X, printk va directamente desde el núcleo a la consola. En X, en cambio, los printks van a un proceso de modo usuario (xterm -C). Cuando este proceso recibe tiempo de CPU, se supone que lo envía al proceso servidor de X. Entonces, cuando el servidor X recibe la CPU, se supone que lo muestra; pero un núcleo inestable normalmente significa que el sistema se va a estrellar o a reiniciar, por lo tanto no quieres que se retrasen los mensajes de error, los que podrían explicarte qué es lo que fue mal, durante mucho más tiempo del que necesitas.