# Consultas básicas sobre M o * en el kernel

## nachopro

Hola chicos... pasando un poco afuera de lo que es Gentoo y su metodología de trabajo hoy vengo con consultas sobre el Kernel...

Veamos, salvando el driver de video framebuffer, sistemas de archivo y drivers de controladoras de disco... me confundo mucho a la hora de agregar soporte como módulo o integrado al kernel.

Por ejemplo, la placa de Sonido la tengo integrada, la placa de red como módulo y ahora estoy compilando el kernel con soporte para PPP y otras cosas para poder acceder a una VPN.

Sé que puede sonar a tontería total pero... qué me recomiendan?? todo como módulo, no?

Bueno, espero sus respuestas y recomendaciones. gracias!

----------

## hernanlp83

Una placa de sonido se puede entender que se compile como módulo, pero un controlador de red podria que no, por ejemplo en una red interna es mejor tenerlos compilados en el propio nucleo ya que se puede bootear desde la misma sin tener que cargar los controladores desde un dispositivo que es medio denso. O el soporte para dispositivos de bloques USB ahora que esta tan de moda debido al tamaño de los pendrives a cargar sistemas operativos (por lo menos yo lo hago para probar diferentes SO) también es práctico compilarlo y en el módulo. En este caso cae como ficha el soporte para particiones VFAT también al kernel y no como módulo. 

Siempre depende de la utilidad que se va a darle al ordenador y que cosas necesitamos tener siempre funcionales. 

Un fuerte abrazo.

----------

## gringo

si dichos módulos son para hardware que usas con frecuencia yo lo compilaría dentro del kernel, no le veo mucho sentido a tenerlos fuera del kernel en un uso doméstico cotidiano. Para hardware que uso rara vez lo compilo como módulo y cuando lo necesito lo cargo, aunque con udev esto ya casi ha pasao a la historia, sobre todo si hablamos de dispositivos plug & pray.

Realmente es algo que cada uno debe decidir, el cargar módulos supone que se va a consumir algo mas de ram ( algo insignificante ) y añade cierta complejidad a las operaciones del kernel ; el poder cargar módulos tb. supone un pequeño problema de seguridad ( insignifante tb.) pero por otro lado hay drivers que sólo se suministran como módulos externos al kernel, asi que cada uno decida.

saluetes

----------

## i92guboj

 *gringo wrote:*   

> si dichos módulos son para hardware que usas con frecuencia yo lo compilaría dentro del kernel, no le veo mucho sentido a tenerlos fuera del kernel en un uso doméstico cotidiano. Para hardware que uso rara vez lo compilo como módulo y cuando lo necesito lo cargo, aunque con udev esto ya casi ha pasao a la historia, sobre todo si hablamos de dispositivos plug & pray.

 

Completamente de acuerdo. Hay unos pocos motivos por los que vale la pena compilar como módulos, por ejemplo, si estás haciendo una distro custom que deba andar en varios tipos de máquinas con hardware distinto, o si el módulo en cuestión es propietario (p.ej. el driver de nvidia). También puede venir bien si por algún motivo un módulo es especialmente pesado y estás limitado en ram (lo puedes descargar cuando no lo uses) o si simplemente necesitas cargar y descargar para pasar parámetros distintos cada vez.

Pero para el uso cotidiano en el mismo hardware, yo prefiero usar un kernel monolítico.

 *Quote:*   

> 
> 
> Realmente es algo que cada uno debe decidir, el cargar módulos supone que se va a consumir algo mas de ram ( algo insignificante ) y añade cierta complejidad a las operaciones del kernel ; el poder cargar módulos tb. supone un pequeño problema de seguridad ( insignifante tb.) pero por otro lado hay drivers que sólo se suministran como módulos externos al kernel, asi que cada uno decida.
> 
> saluetes

 

Bueno, el problema de seguridad existe, y no es que sea insignificante. Si un rootkit se apodera de tu máquina, entonces puede hacer virtualmente lo que le vengan en gana. Aunque mucha gente sobrevalora el problema. Me refiero al hecho de que pasa instalar un rootkit, alguien tiene que entrar primero como root, ESE es el verdadero problema. No es que el rootkit no sea malo, pero para cuando el rootkit es instalado, el sistema ya ha sido comprometido anteriormente, así que el rootkit en si es el menor de nuestros problemas porque ya ha operado algún invasor como root con anterioridad.

Para eliminar dicha vulnerabilidad habría que deshabilitar el soporte de módulos por completo, lo cual a veces no es posible debido que necesitemos hardware que use módulos propietarios.

----------

## gringo

 *Quote:*   

> Pero para el uso cotidiano en el mismo hardware, yo prefiero usar un kernel monolítico. 

 

el kernel linux siempre es monlítico, siempre obtienes un único ejectuble al compilarlo que es a lo que se invoca con el cargador. O yo es lo que tengo entendido al menos. Hurd y los micro-kernels p.ej. creo que funcionan de otra manera, no hay un único binario.

 *Quote:*   

> Bueno, el problema de seguridad existe, y no es que sea insignificante. Si un rootkit se apodera de tu máquina, entonces puede hacer virtualmente lo que le vengan en gana. Aunque mucha gente sobrevalora el problema. Me refiero al hecho de que pasa instalar un rootkit, alguien tiene que entrar primero como root, ESE es el verdadero problema. No es que el rootkit no sea malo, pero para cuando el rootkit es instalado, el sistema ya ha sido comprometido anteriormente, así que el rootkit en si es el menor de nuestros problemas porque ya ha operado algún invasor como root con anterioridad. 

 

me refería a que si tienes el kernel bien compilao ( el vermagic es dificil de putear por lo que tengo entendido), insertar código maligno en espacio kernel através de un módulo es realmente jodío hoy en día por lo que he leído, aún siendo root. Ya no hablo de grsec, rsbac o selinux que creo que tienen mecanismos especiales para dicho menester y en máquinas que hagan funciones de producción alguno de estos tres seguramente estará en ejecución. De cualquier manera, lo que tú dices, si ya se han hecho con root en tu máquina, que puedan insertar o no módulos es el menor de tus problemas.

saluetes

----------

## esculapio

El sistema está cada vez mas automatizado pero no hace todo solo, p.ej. la  parte de iptables la pongo toda como modulo y el sistema se encarga de gestionar lo que necesita cargar, sino tenes que aprender un monton de cosas para que sirven y por ahi todavia no es el momento de poner la cabeza en eso (no es difícil pero es todo un tema). Despues hay cosas que no trabajan correctamente si no están como módulos, pero eso se ve en la práctica ya que de una forma funciona y de la otra no, en mi caso es una placa de red realtek que se resiste a funcionar si no es como módulo. Tambien está la parte visual del módulo levantando o no puede ser necesario segun el caso para indicar algun estado, etc. No hay una regla general pero es segun a que te dediques o que te guste, ahi van a estar tus módulos ya que es dondé uno experimenta con cosas y  necesita pasarle parametros para funcionar.

----------

## nachopro

mm... muy interesante... gracias por sus opiniones...

el caso de ejemplo que tengo es mi placa de sonido... en módulo como en kernel anda bien, pero si la compilo en el kernel pierdo algunos conntroles de volumen (eso lo descubrí esta semana que la compilé as module)

 :Cool: 

----------

