# ¿Qué es mejor, usar módulos o construir con el kernel?

## edgar_uriel84

Pues con esa duda, explico bien para que se entienda. Tengo mi kernel construido digamos que a la medida de mi laptop, y tengo la costumbre de los drivers que siempre serán necesarios los construyo dentro del kernel y no como módulos, para pronto, les pongo Y en lugar de M en el menuconfig.

Lo malo de esto es que algunos drivers dejan de funcionar, por ejemplo los snd-hda no funcionan a menos que sean módulos, en algunas ocasiones me paso con alguna gráfica que funcionaba y otras veces no, y creo que es debido a que el driver esta constuido dentro del kernel porque al cambiarlo regresaba a su función normal.

Ahora me pasa que mi lector de tarjetas SD funciona a placer, y buscando en el log encontré cosas como:

```
modprobe: FATAL: Module wmi:0B3CBB35-E3C2-45ED-91C2-4C5A6D195D1C not found.

modprobe: FATAL: Module usb:v04F2pB330d2937dcEFdsc02dp01ic0Eisc01ip00in00 not found.

modprobe: FATAL: Module acpi:PNP0C14: not found.
```

Esos módulos están actualmente construidos dentro de mi kernel y funcionan, pero supongo que el sistema esperaría que fueran efectivamente módulos, la pregunta es entonces, ¿qué conviene más usar módulos o construir dentro del kernel, inferfiere con el rendimiento del sistema o con el tamaño del kernel?

----------

## JotaCE

Para mi depende del dispositivo en cuestión. si se trata por ejemplo del sistema de ficheros compilo como parte integral del kernel y sis fuera por ejemplo el audio o la red inalámbrica lo compilo como módulo.

Sal-U2

----------

## edgar_uriel84

Pues voy a intentar convertir todos a módulos, haber que tal va porque en realidad no encuentro una razón a esto.

----------

## pelelademadera

yo integro lo que siempre esta en la pc, el resto, modulos

----------

## edgar_uriel84

 *pelelademadera wrote:*   

> yo integro lo que siempre esta en la pc, el resto, modulos

 

Nunca haz tenido algún problema como los que describo en el post inicial?

----------

## pelelademadera

 *edgar_uriel84 wrote:*   

>  *pelelademadera wrote:*   yo integro lo que siempre esta en la pc, el resto, modulos 
> 
> Nunca haz tenido algún problema como los que describo en el post inicial?

 

la verdad que no....

tengo un lector de tarjetas en el gabo, es un switch 810, lo trae asi puesto...

 *Quote:*   

> Bus 001 Device 005: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader

 

anda de mil maravillas... si bien no lo uso demasiado, anda de 10, y los lectorcitos usb "tipo pendrive" andan tambien...

lo unico activado en el kernel es usb mass storage support, sin nada de lo que viene abajo, y no tengo activado para nada

 *Quote:*   

> < > MMC/SD/SDIO card support  ----

 

esto esta en la parte de drivers...

 *Quote:*   

> 
> 
>       <*>     USB Mass Storage support                                                                                                                                     │ │  
> 
>   │ │                                                                                               [ ]       USB Mass Storage verbose debug                                                                                                                             │ │  
> ...

 

esto esta en la parte de usb dentro de drivers

----------

## edgar_uriel84

Parece que este es el mejor consejo que encontré:

Things that you may need to include in your kernel:

as modules:

    Wireless/LAN drivers

    Support for your graphics card

    Support for your audio card

    Support for USB devices

as built in:

    scsi sata & or ata controllers

    file system used

Extraído de la guía de Funtoo.

----------

## pcmaster

Hola,

El controlador para el disco desde el que inicies el sistema debería estar en el kernel, de lo contrario no podrás iniciar el sistema.

Los demás módulos, la mayoría es igual cómo los compiles, si bien si hay alguno que deba cargarse con algún parámetro debará estar como módulo, y si metes demasiados en el kernel su tamaño será demasiado grande.

Por eso mi consejo es que metas en el kernel lo imprescindible, y el resto como módulos.

----------

## Stolz

Es un tema ya tratado. Ej: [kernel] ¿Como módulos o en el núcleo?

Yo suelo tener todo como módulos a excepción de lo que se necesita para que el sistema arranque.

----------

## Pipeng

Bueno, te comentare, gracias al comentario del moderador aunque ese hilo no responde por completo la pregunta, en el hilo mensionado la respuesta de Slotz practicamente responde todo y es esta linea:

Se pueden pasar parametros a los modulos. A las cosas compiladas estaticas no (o al menos no es tan comodo hacer un cat a /proc o a /sys como usar parametros en /etc/modules.d/*). 

Por experiencia propia con cirtos dispositivos estos deben ser iniciados con paramentros en los modulos y si no los tenian me daban una buena cantidad de errores, ahora estos parametros son cargados al iniciar el sistema, el problema es que si dejas esos controladores compilados en el nucleo los parametros no podran ser pasados automaticamente por el sistema, tendrias que meterlos a la configuracion del booteo, asi que debido a eso esos controladores es mejor dejarlos como modulos, y el resto que no nesesitan incrustados en el nucloe, algunos ejemplos:

para el driver snd-hda en realidad existen creo que unos 7 u 8 modos diferentes, o versiones y se debe cargar la version correcta para que esta funcione en el ordenador, pero si lo incrustas solo se iniciara la configuracion por defecto y provocara varios errores.

pasa lo mismo con algunos drivers de mouse por ejemplo y con otros de pantallas o tarjetas graficas o de wifi, asi que como solucion simple tambien apoyo la solucion del moderador del hilo mensionado, dejar lo nesesario para el booteo como incrustado y el resto como modulo.

Detalle, hay algunos drivers que literalmente "chocan", osea que no puedes existir simultaneamente, ni como modulos ni incrustados, no es un error muy habitual pero es mala idea dejar casi todo lo que se te ocurra como modulo ya que puedes provocar una falla asi, ye tengo un lector sd, y tenia ese problema.

Bueno eso, chaop.

----------

## natrix

Siempre hay alguien que piensa diferente y esta vez me tocó a mí. Yo tengo casi todo en kernel.

Al comienzo manejaba principalmente módulos, incluso ya había leído de ante mano el hilo que menciona Stolz. Pero luego tuve algunos problemas con unos drivers que en parte se solucionó metiendo cosas en el kernel y vi que algunas cosas andaban mejor, más agiles, principalmente aquellos soft que demandan hardware, principalmente el uso rutinario de KDE. De a poco fui metiendo más cosas en el kernel y vi que el desempeño de la PC mejorar, no mucho, no tanto como para justificar una migración completa, pero le tomé el gustito y terminé pasando todo al kernel.

Es muy fastidioso eso de estar reiniciando la máquina a cada cambio, pero es algo que hago algunas veces al año. Y el kernel quedó pesado, pero lo necesariamente pesado, así que sigo manejandome así.

Tomé la costumbre de que cada cambio que hago, primero lo hago a nivel módulo para aprovechar todas las ventajas de esto, luego lo pruebo un tiempo, y si todo funca bien lo incrusto en el kernel. Hasta ahora todo parece marchar bien.

Saludos

----------

