Modulos del kernel o integrado en kernel
-
tengo una duda
para activar soporte para algun dispositivo enla configuracion del kernel podemos elegir que este integrado en el kernel y por lo tanto siempre en memoria o que se cargue como moduloque opcion es la que usais vosotros, y por que razon?
yo lo que veo es uqe tengo un giga de ram y me da igual que el kernel me ocupa 50 que 100 megas (cuando ocupa aproximadamente un kernel descomprimido?) lo que yo quiero es que vaya lo mas rapido posible, como influye en el rendimiento cada cosa? puede que sea mejor que este cargado cada modulo cuando sea necesario que estar molestando ahi todo el rato en memoria
y sobre lo de tener los modulos, hay que cargarlos cuando los necesitas (yo ahora no se como compilar los modulos usb que no estaran siempre en marcha) o los carga el sistema?
el de sonido por ejemplo lo tengo metido en el kernel, el lm-sensors esta en modulos (por que segui un manual sino lo suelo meter en el kernel lo veo mas sencillo)
como haceis vosotros y por que razon? o que es mas recomendable? -
que opcion es la que usais vosotros, y por que razon?
Yo te cuento mi visión del tema, que no es ni la más sabia y mucho menos algo "profesional", y quizás tampoco es la más acertada. Lo tengo todo en el kernel, ¿por qué? Lo veo más limpio, no me va eso de tener que ir cargando módulos cada vez que quiero hacer algo. Además, no sé cuanto ocupará un kernel descomprimido (mi bzImage -kernel comprimido- me ocupa 1600kb aprox.) pero teniendo las X, fluxbox, torsmo, xbindkeys, idesk, gnome-settings-daemon y alguna otra cosa más, se me come el 5% de la memoria que tengo, que son 1024MB (no te digo los megas que son porque ahora mismo tengo el torsmo que me lo indica en % y me da pereza mirarlo xD), usando el kernel 2.6.9 de debian. Así que no sé… :rolleyes: Yo creo que es más cuestión de gustos y/o comodidad de cada uno que no otra cosa...
y sobre lo de tener los modulos, hay que cargarlos cuando los necesitas (yo ahora no se como compilar los modulos usb que no estaran siempre en marcha) o los carga el sistema?
Las otras dos preguntas anteriores no te las contesto porque no estoy seguro de ellas, pero esta sí (creo). Los módulos generalmente los compilas, y se quedan ahí (creo que era en /etc/modules) y los cargas cuando tú lo indicas. ¿Qué gracia tendria que los tubieras como módulos y se cargaran nada más arrancar? (A parte de un posible arranque más rápido). Te pongo un ejemplo… Arrancas tu sistema, y lo usas como diariamente, navegas, chateas, etc. Pero, de repente, un día quieres imprimir un documento. ¿Qué haces si tienes el soporte como módulo? modprobe loquesea y a imprimir, si lo quieres quitar nada más impreso lo que querías, rmmod loquesea y a correr. Para cosas así (y creo que podría ser tu caso) quizás si que viene bien esto.
Espero haberte sido de algo de ayuda, por lo menos como opinión personal, a ver si comenta algo algún entendido de los módulos, porque yo se lo que me hace falta saber sobre ellos: lo justo Salu2!!
-
Ahora no hace falta especificar que módulos cargar, hotplug se encarga de ello.
Yo siempre he cogido una configuración de un kernel precompilado, que por ejemplo en debian, al intalarse se queda en /boot/config-<versión del="" kernel="">
Compilo en el kernel el soporte para mi sistema de ficheros y para mi controladora ide y lo demás lo dejo todo como viene. Le quito cosas como protocolos que nunca usaré y algún hardware muy raro y ya esta.
En debian, el kernel viene con prácticamente todo como módulo, por lo que con la configuración de ellos se que mi kernel estará consumiendo siempre la mínima memoria. De todas maneras, con las cantidades de ram que tenemos ahora tampoco se nota tanto.</versión> -
Y una cosita.
Supongamos que yo acabo de compilar mi kernel 2.6.88 por ejemplo.
La semana que viene resulta que está el 2.6.90 y quiero actualizarlo.
Como procedeis?? Osea, como haceis para partir de la configuración del kernel viejo?? O entrais al menuconfig y volveis a configurar todo de nuevo??? Porque no creo que se haga esto que es un coñazo y una fuente de errores.
-
Parchear el kernel De todas maneras, creo (y eso es lo que me ha pasado dos o tres veces que he actualizado el kernel a saco) te pilla la última configuración que has usado, o por lo menos es lo que me hace a mí…
scripts/kconfig/mconf arch/i386/Kconfig # # using defaults found in /boot/config-2.6.9 #
Esto me salió cuando estaba configurando el 2.6.10 y, cómo es obvio, estaba igualito que mi anterior kernel. Salu2!
-
Yo para actualizar de mi antiguo 2.6.8 al actual 2.6.10 hice un make xconfig (tambien lo puedes hacer con make menuconfig) y en el menu puedes decir que abra un fichero de configuracion, pues abri el fichero del kernel 2.6.8 y lo adapte a lo que queria para el 2.6.10, que basicamente es lo que dice josefu, asegurarte de que el sistema de ficheros y los ide estan correctos y listo, lo guardas y a compilar.
-
Y una cosita.
Supongamos que yo acabo de compilar mi kernel 2.6.88 por ejemplo.
La semana que viene resulta que está el 2.6.90 y quiero actualizarlo.
Como procedeis?? Osea, como haceis para partir de la configuración del kernel viejo?? O entrais al menuconfig y volveis a configurar todo de nuevo??? Porque no creo que se haga esto que es un coñazo y una fuente de errores.
Cuando tengas tu kernel configurado guardas tu configuración desde el menú de configuración (valga la redundancia) por ejemplo vallekano.config, que se queda guardado en el direcotorio donde estén las fuentes de tu kernel, por ejemplo /usr/src/linux-2.6.10, luego si sale el kernel 2.6.11 solo tienes que copiar el archivo vallekano.config a /usr/src/linux-2.6.11 y cargarlo desde el menú de configuración.
En cuanto a la forma de compilarlo, yo excepto con unos módulos de irda que no puedo cargarlos al inicio por un fallo que tienen cuando está a máxima velocidad y casos en los que tengo que hacer algo antes de cargar el módulo, siempre lo compilo todo empotrado, como dice Elfo me parece más limpio, y si añado algún dispositivo en el futuro no me cuesta nada perder 20 minutos recompilando. Lo de los modulos lo veo más util para las distribuciones, porque tienen que hacer un kernel con soporte para todo y si lo empotraran todo saldrían un kernel mastodóntico. En fin, para gustos los colores
-
Y una cosita.
Supongamos que yo acabo de compilar mi kernel 2.6.88 por ejemplo.
La semana que viene resulta que está el 2.6.90 y quiero actualizarlo.
Como procedeis?? Osea, como haceis para partir de la configuración del kernel viejo?? O entrais al menuconfig y volveis a configurar todo de nuevo??? Porque no creo que se haga esto que es un coñazo y una fuente de errores.
No hace falta reconfigurarlo todo desde cero. Para eso existe desde siempre el make oldconfig.
Copias el .config del kernel viejo al nuevo y ejecutas antes de compilar
make oldconfig
Este comando compara todas las opciones del viejo kernel con las del nuevo, conservando las que ya existan y preguntandote que hacer en caso de que el nuevo kernel incluya algo nuevo
En 10 segundos tienes todo la configuracion del viejo en el nuevo.
Volviendo al tema inicial, yo lo suelo tener todo como modulos por las siguientes razones, que practicamente unas se deducen de otras o son consecuencia unas de otras:
-Solo tengo en memoria aquellos datos que necesito, por lo que el consumo de memoria es menor.
-Como solo cargo lo que necesito cuando lo necesito, el tiempo de arranque es menor.
-Se tarda menos en recompilar el kernel. Si solo cambias algun modulo se recompialra ese modulo y no todo el kernel.
-No hace falta reiniciar para que los cambios tengan efecto.
-No hace falta tocar nada en /boot para que los cambios tengan efecto.
-Se pueden pasar parametros a los modulos. A las cosas compiladas estaticas no.
-Puedes probar distintas versiones de controladores sin reiniciar ni compilar, por ejemplo el I2C oficial del kernel o la ultima version de CVS.
-Es mas facil localizar errores.Hay mil razones mas, pero ahora no se me ocurren
Saludozzzzzzz