Como compilar un módulo sin recompilar todo el kernel (en OpenSuSE 10.2)

2 01 2007

Este documento describe como solucioné la siguiente situación:

Después de actualizar la distribución GNU/Linux de mi computadora, pasando de la versión 10.1 a la 10.2 de OpenSuSE me encontré que algunas aplicaciones no accedían a los dispositivos USB, ya que para esto necesitan poder ver la carpeta /proc/bus/usb.

El tema en cuestión es que el kernel por defecto que viene con la distribución no tiene habilitada la opción “USB device filesystem” con lo cual no es posible montar el sistema de archivos virtual usbfs.

Ante este problema tenía que encontrar una solución. En varios foros se recomendaba recompilar el kernel, tarea que si bien en alguna época hacía habitualmente, en la actualidad le esquivo bastante. La inquietud aquí era, si por ejemplo los drivers propietario de la placas de video, pueden compilar solo los módulos que necesitan, entonces tiene que ser posible compilar un solo módulo, en vez de todo el kernel.

Con esta idea empecé a investigar, sin mucho éxito, hasta que en la lista del Lugro me tiraron varios datos, que apuntaban a que si es posible realizar esta compilación. Con esto me dedique a probar con resultado satisfactorio, al final obtuve el módulo usbcore.ko recompilado y funcional, sin necesidad de recompilar todo el kernel.

Los pasos a seguir son los siguiente:

1) Se deben instalar los fuentes del kernel, en mi caso ya los tenía instalados en la carpeta /usr/src/linux, pero para esta prueba copie todo el contenido a una carpeta temporal en mi home (${home}/tmp/kernel/)

2) Abro una consola y me posisiono en la carpeta dende están los fuentes del kernel.

3) ejecuto los siguientes comandos:

#> make clean
#> make cloneconfig

Este comando sirve para copiar la configuración del kernel actual en el archivo .config utilizado para compilar el kenrel

#> make menuconfig

En el menú de configuración del kernel voy a:

Device Drivers –> USB Support –> USB device filesistem

menuconfig

Activo esta opción y saldo guardando el resultado.

Bien ahora hay que compilar solo el módulo “usbcore” y para esto ejecutamos lo siguiente:

#> make modules_prepare

#> make SUBDIRS=drivers/usb/core modules

Listo tenemo el modulo compilado, solo queda copiar el archivo drivers/usb/core/usbcore.ko a /lib/modules/{version}/kernel/drivers/usb/core

Ejecutamos depmod -a

y Reiniciamos (o desactivamos todos los modulos usb y los volvemos a cargar)
Listo tenemo la distribución OpenSuSE 10.2 con soporte para usbfs.

About these ads

Acciones

Información

17 respuestas

4 01 2007
aldozc

Buena guia!! Funciono bien en wmware workstation 5.5.3. Sin embargo cuando pongo la memoria usb en suse, aparecen continuamente muchas ventanas emergentes que dicen detectar el dispositivo y preguntan si deseas abrirlo en konqueror, solo se detienen hasta hacer una expulsion segura. Pero la luz del USB continua prendida (aun no desmontado del todo).

Tengo una pregunta…¿solo hay que activar -USB device file system- o tambien es necesario activar -the share table of common- ?

ver post #7 en:
http://www.forosuse.org/forosuse/showthread.php?t=10242

AldoZC

4 01 2007
magnifico

Solo es necesario activar el USB device filesystem con eso alcanza.

En cuanto a la memoria USB no te podría decir que sucede. Proba desmontar el sistema de archivos usbfs. En mi caso particular monto varios dispositvos de memoria USB y no se presenta ese problema. (camara de fotos, discos, telefono, etc).

Exitos.

22 02 2007
Daniel Piñeiro

Exelente tu aporte.
Hace tiempo que tenía el problema usando Vmware sobre open suse 10.2 y con tu ayuda lo he solucionado.
Mil gracias !!!!

4 03 2007
Lorenz

Hola,
me encuentro con la dificultad de no poder activar usb_devicefs como modulo. Solo puedo activar o desactivarlo (Y o N).
Se me ha escapado algo?
Un Saludo

Lorenz

4 03 2007
magnifico

Hola Lorenzo.
Es correcto que tenga solo la opción para desactivar o no el usb_devicefs, ya que el soporte para éste se compila dentro del módulo usbcore. Por eso tenes que recompilar este módulo, solo que activando además el soporte para usb_devicefs.

Exitos

Omar

10 03 2007
ElFontanero

Hola magnifico:

Estupendo trabajo, gracias a esta guia podemos activar el usbFS en el kernel a punto rapidamente cada vez que se descarga un nuevo parche.

Sólo falta una cosa, la primera operación de este proceso es hacer logon como root (típicamente con su) para poder hacer todas las operaciones de make del kernel (parece que tú trabajas directamente como root).

Un saludo y gracias.

El Fontanero

15 03 2007
Roberto

bueno aqui un problema aversi me puedes ayudar va todo bien hasta que hago el make menuconfig

HOSTLD scripts/kconfig/mconf
HOSTCC scripts/kconfig/lxdialog/checklist.o
In file included from scripts/kconfig/lxdialog/checklist.c:24:
scripts/kconfig/lxdialog/dialog.h:31:20: error: curses.h: No existe el fichero o el directorio

todo comienza con ese error y de ahi se desencadenan muchos y no prosigue, no sabes que librerias me puedan faltar?? por que el kernel-source, no se que libresias se ocupen, me pueden ayudar?

17 03 2007
magnifico

Probablemente el problema que tenés, es la falta de las librerías ncurses, en mi sistema tengo instalados los siguientes páquetes:

yast2-ncurses-2.14.4-3
ncurses-devel-5.5-42
php5-ncurses-5.2.0-10
ncurses-5.5-42

Verificálo ejecutando:

#> rpm -qa | grep ncurse

26 03 2007
German

FUNCIONOOOOOOOOO¡¡¡¡¡¡¡¡¡ :)

16 07 2007
xD

mi pregunta es:

tengo un modem usb, y no puedo entrar a internet porque no lo detecta como conectado por falta de este modulo

cuando hago este procedimiento, me dete4ctará el modem??????????

17 07 2007
magnifico

Si el modem USB esta soportado por el kernel y no esta compilado por defecto, este procedimiento se aplicaría a tu necesidad.
Probá y fijate que pasa una vez compilado. No se pierde nada ya que no rompemos el kernel por defecto.

5 12 2007
NW-E003F y VMware. It’s alive!! « Keep Walking

[...] Aquí hay un link para compilar los módulos sin recompilar el [...]

18 05 2008
Gustavo Serrano

Respondiendo a #

Comentario por Roberto — 15 – Marzo – 2007 @ 11:40 pm

Yo tenía el mismo error que le sucedia a él cuando queria ejecutar el comando

#> make menuconfig

pero se resuelve instalando en el YaST2 > Software Management

-ncdu
-ncurses
-ncurses-devel
-php5-ncurses
-yast2-ncurses

¡ Suerte !

15 06 2008
befama

Hola, Será esa la causa de que en el Suse 10.2 no reconozca los usb el virtualBox???

me recomiendan recompilar?
gracias

16 06 2008
magnifico

Si, es por esto.
Recompilá o actualizá a 10.3 que anda muy bien.

20 02 2009
Sephiroth

Demasiado tarde ya eh compilado el kernel Jeje XD, pero bueno lo tendre encuenta para la proxima ocasion. Igual Gracias!!

7 04 2010
Turambar

Excelente, gracias por tu post, pero tengo una duda,
servirá para una funcionalidad como el PAE?

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

%d personas les gusta esto: