Eudyptula challenge

2017/04/25

Task 01


Enlaces a la documentación del kernel:

Documentación general para desarrollo: https://www.kernel.org/doc/html/latest/process/index.html


Descripción de como funciona la comunidad de desarrollo del kernel: https://www.kernel.org/doc/html/latest/process/howto.html

“Think of a teacher grading homework from a math student. The teacher does
not want to see the student’s trials and errors before they came up with the
solution. They want to see the cleanest, most elegant answer. A good student
knows this, and would never submit her intermediate work before the final
solution.

The same is true of kernel development. The maintainers and reviewers do
not want to see the thought process behind the solution to the problem
one is solving. They want to see a simple and elegant solution.”

De: https://www.kernel.org/doc/html/latest/process/submitting-patches.html


De: https://www.kernel.org/doc/html/latest/process/coding-style.html

Se puede utilizar el script scripts/checkpatch.pl para verificar la sintaxis de un archivo (esto no está documentado en el enlace anterior):

$ /path/to/checkpatch.pl -f file

La lista de los requerimientos minimos para compilar y ejecutar el kernel se encuentran en: https://www.kernel.org/doc/html/latest/process/changes.html

Los paquetes en debian que se corresponden son los siguientes:

FIXME: COMPLETAR LA LISTA Y EL COMANDO

Estos se instalan utilizando la siguiente linea:

$ sudo apt-get update
$ sudo apt-get install -qVy build-essential linux-headers-amd64

Para crear un módulo del kernel fuera del arbol se necesita:

Por más información leer los enlaces previos.


En el libro Linux Kernel Development en el capítulo 17 - Devices and Modules se explica como crear un módulo Hello World!.


Para compilar el módulo y probar que este es correctamente instalado y desinstalado:

$ make clean \
    && make \
    && sudo -s -- sh -c "dmesg --clear \
        && insmod hello.ko \
        && echo \"==== After insmod\" \
        && dmesg \
        && echo \"==== After rmmod\" \
        && rmmod hello \
        && dmesg"

La salida de este comando es la prueba al problema.