Etiqueta: módulo

  • Compilación del módulo tipc en Ubuntu

    Ubuntu incluye el módulo TIPC, sin embargo se trata de la versión 1.6.4, que carece de muchas de las funcionalidades existentes en la versión 1.7.6 y posteriores. Por ello se requiere compilar el módulo desde los fuentes e instalarlo manualmente.

    Ante todo tengo que decir que no considero este método muy ortodoxo, de hecho creo que es una pequeña chapuza, pero funciona y no presenta ningún problema para el resto del sistema.

    En primer lugar se debe obtener el código fuente del módulo TIPC. En este momento la última versión de TIPC es la 1.7.7 RC1, cuyo código fuente se obtiene de http://sourceforge.net/projects/tipc/files/tipc-linux/tipc-linux-1.7.7/tipc-1.7.7-rc1-bundle.tar.gz/download

    También se necesitan los paquetes linux-headers-`uname -r` y linux-source-`uname -r`.

    Ahora se crea un directorio para la compilación y se extraen los ficheros del módulo TIPC y el fuente del kernel y se copian los directorios de cabeceras. Hay que sustituir la versión indicada en el ejemplo por la que se tenga activa.

    mkdir tipc
    cd tipc
    tar xjvf /lib/modules/linux-source-2.6.32.tar.bz2
    cp -rf /lib/modules/linux-headers-2.6.32-24/* linux-source-2.6.32/
    cp -rf /lib/modules/linux-headers-2.6.32-24-generic/* linux-source-2.6.32/
    tar xzvf $RUTA_DESCARGA/tipc-1.7.7-rc1-bundle.tar.gz
    cd tipc-1.7.7-rc1-bundle
    tar xvf tipc-1.7.7-rc1.tar
    cd ..
    
    

    Ahora viene la parte que considero una chapuza, copiamos, en el siguiente orden, todos los ficheros dentro del directorio de las fuentes:

    cp -rf linux-headers-2.6.32-24/* linux-source-2.6.32/
    cp -rf linux-headers-2.6.32-24-generic/* linux-source-2.6.32/
    cp -rf tipc-1.7.7-rc1-bundle/include/ tipc-1.7.7-rc1-bundle/net/ linux-source-2.6.32/
    

    Ahora toca la compilación, para ello, en primer lugar hemos de crear una configuración que incluya el módulo TIPC:

    cd linux-source-2.6.32
    make menuconfig
    

    Casi para terminar se hace la compilación:

    make prepare
    make modules_prepare
    make modules M=net/tipc
    sudo make modules_install M=net/tipc
    

    Para la versión de núcleo con la que se hace este ejemplo, el fichero con el módulo es instalado en /lib/modules/2.6.32.15+drm33.5/extra/tipc.ko. Para convertirlo en el módulo por defecto se copia a la ruta esperada:

    cp /lib/modules/2.6.32.15+drm33.5/extra/tipc.ko \
                   /lib/modules/2.6.32-24-generic/kernel/net/tipc/tipc.ko
    
    

    Ahora ya se puede eliminar del núcleo el módulo original y cargar el construido:

    sudo rmmod tipc
    sudo modprobe tipc
    

    Para comprobar que todo es correcto:

    lsmod | grep tipc
    
  • Compilar un módulo del kernel

    En ocasiones se necesita compilar un módulo del kernel de Linux a partir de sus fuentes. Para ello hay que utilizar las cabeceras y, ocasionalmente, los ficheros fuente del propio núcleo y hacer un make indicando la ruta hacia las fuentes del núcleo o incluyendo el código fuente del módulo en el lugar apropiado dentro de dichas fuentes.

    En el caso que se detalla las fuentes del módulo se encontraban dentro de la estructura completa de las fuentes del núcleo. El módulo en cuestión era el rt61pci situado en el directorio drivers/net/wireless/rt2x00/ . Para compilarlo sin tener que compilar todo el núcleo hay que preparar las fuentes del núcleo para la compilación de un módulo externo y después indicar qué módulo se quiere compilar:

    $ make modules_prepare
    $ make M=drivers/net/wireless/rt2x00 modules

    Y listo, en unos minutos se obtiene compilado el módulo requerido sin tener que compilar todo el núcleo.