Cuando generamos el código objeto de nuestro módulo, todas las referencias a símbolos del kernel (como puede ser printk, por ejemplo) están sin resolver, es en el momento de la inserción del módulo cuando se resuelven dichas referencias, ya que cuando insertamos un módulo al kernel estamos linkando la imagen en memoria del kernel al código objeto del módulo.
Para que se puedan resolver esas referencias a símbolos del kernel, este publica todas sus referencias a través del sistema de ficheros virtual proc. Si queremos ver la tabla de símbolos del kernel podemos ejecutar la siguiente orden:
$ cat /proc/ksyms
Cuando insertamos un módulo, éste ofrece como símbolos por defecto todos sus símbolos globales no estáticos, estos nuevos símbolos pueden ser usados por otros módulos, por eso la salida de este comando incluye no solo símbolos del kernel si no los de aquellos módulos que estén cargados en el momento de ejecución del comando.
Si queremos buscar un determinado símbolo podemos ejecutar
cat /proc/ksyms | grep
simbolo, también podemos ver todos los símbolos que exporta
nuestro módulo, si una vez insertado hacemos:
$ cat /proc/ksyms | grep hola