Dudas: Recompilar Kernel & Drivers tarjeta Red

Imagen de Trasgu_ubuntu
0 puntos

Hola tengo algunas respecto a como instalar los drivers(http://www.marvell.com/drivers/driverDisplay.do?dId=153&pId=36), no se si tengo o no tengo que recompilar el kernel. Se supone que el driver se puede cargar como un modulo, es decir, de forma dinamica,entonces ¿Es nesesario recompilar el kernel para esto?, lo digo porque por ejemplo yo tengo una tarjeta nvidia, y para hacerla funcionar correctamete lo que hice fue añadir el modulo nvidia al archivo correspondiente(que ahora no me acuerdo), o es que ¿hay que recompilar el kernel para que pueda añadir el driver como modulo aunque no lo incluya directamente en el?.

La verdad es que estoy un poco perdido. Me he leido un articulo que venia en la revista Todo-Linux sobre la compilacion del kernel, esta bastante bien pero si me pudieses dar algunos enlaces de manuales al respecto estaria bien para complementarlo.

Un Saludo a todos, espero impacientemente vuestras respuestas.

Imagen de cjadt
+1
0
-1

En este caso el pakete "install-8_36.tar.bz2" provee dos maneras de agregar soporte para la tarjeta:
1- Instalar un módulo
2- Parchear el kernel

1- Para instalar un módulo necesitamos:
Compilar el código del driver con el mismo compilador usado para compilar el kernel, esto es así porke un módulo es código objeto, está a mitad de camino entre un archivo de texto plano y un ejecutable, la mákina no lo ejecuta directamente pero el kernel puede "linkearlo" dinámicamente, osea ke lo termina de hacer ejecutable por así decirlo, para conseguir la versión del compilador usado:
pingusa:~# cat /proc/version
También necesitamos ke la versión mágica del módulo generado coincida con el resto de los módulos, para esto buscamos un módulo ke sepamos ke existe en el 99% de los casos, el floppy.ko:
pingusa:~# sudo modinfo floppy | grep vermagic
Esto nos dice ke los módulos guardan información ke el kernel compara para saber si le pertenece y poder cargarlo, la info ke te da es el nombre del kernel, algunas opciones, la arkitectura y por último la versión del gcc usado para su construcción.
También necesitamos las kernel-headers en este caso, las headers no son todo el código completo para generar un kernel, son cabezeras ke dan información suficiente como para generar módulos.

2- Para parchear un kernel necesitamos:
El kernel-source código fuente completo del kernel, el de la distro o el ke nos guste, total como lo vamos a compilar completo podemos usar cualkiera, el gcc ke nos guste, porke es el mismo caso, tanto el kernel como lo ke elijamos como módulo se compila con el mismo compilador, así ke nos da igual.
Esta opción es interesante si keremos tener un kernel personalizado u optimizado a nuestra mákina, también nos permite gracias al parche incluir el driver dentro del kernel o como módulo.
No es recomendable si nunca compilaste el kernel 2.6.x.x

Cualkier duda postea.

Christian

+1
0
-1
Imagen de Trasgu_ubuntu
+1
0
-1

Vale ya he seguido los pasos que me has dicho, para instalar los drivers como un modulo sin tener que recompilar el Kernel, pero esto no funciona. Al ejecutar dmesg el unico mensaje referente al nuevo modulo(sk98lin) es el siguiente: [17179590.936000] sk98lin: no version for "struct_module" found: kernel tainted.

Aqui tienes informacion respecto de las version para aclarar posibles preguntas:

:~$ uname -a
Linux Tatooine 2.6.15-27-386 #1 PREEMPT Sat Sep 16 01:51:59 UTC 2006 i686 GNU/Linux

:~$ cat /proc/version
Linux version 2.6.15-27-386 (buildd@terranova) (gcc version 4.0.3 (Ubuntu 4.0.3-1ubuntu5)) #1 PREEMPT Sat Sep 16 01:51:59 UTC 2006
:~$ gcc -dumpversion
4.0.3
:~$ modinfo sk98lin |egrep vermagic && modinfo floppy|egrep vermagic
vermagic: 2.6.15-27-386 preempt 486 gcc-4.0
vermagic: 2.6.15-27-386 preempt 486 gcc-4.0

No se, porque puede ser.

Otra cosa, ahora mismo la tarjeta de red funciona gracias al modulo sky2, que es el que utilizo ahora, pero ¿como hago para utilizar el nuevo(sk98lin) en lugar del de por defecto(sky2)?

+1
0
-1
Imagen de cjadt
+1
0
-1

El kernel se keja diciendo ke se "ensució" (tainted) siempre ke carguemos un módulo no GPL, esto no es un problema, el problema es ke no lo cargue por un "struct_module":
pingusa:~# sudo modprobe sk98lin
Aunke se keje verificamos si está cargado:
pingusa:~# sudo lsmod | grep sk98lin
Si no lo cargó:
pingusa:~# sudo dmesg | tail

Lo de "struct_module" se debe generalmente a una diferencia entre la configuración de símbolos entre el kernel y el módulo.

Ke tienes en "/usr/src", las headers o el source completo?
La salida de:
pingusa:~# gcc --version

Christian

+1
0
-1
Imagen de Trasgu_ubuntu
+1
0
-1

El modulo sk98lin esta cargado, se carga solo en el arranque, esto es lo que tengo en /usr/src:

lrwxrwxrwx 1 root src 36 2006-10-15 19:46 linux -> /usr/src/linux-headers-2.6.15-27-386
drwxr-xr-x 19 root root 4096 2006-10-15 19:26 linux-headers-2.6.15-27
drwxr-xr-x 4 root root 4096 2006-10-15 19:47 linux-headers-2.6.15-27-386

Solamente estan las cabeceras, y esto es lo que me sale al poner gcc --version:

gcc (GCC) 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
Copyright (C) 2006 Free Software Foundation, Inc.
Esto es software libre; vea el código para las condiciones de copia. NO hay
garantía; ni siquiera para MERCANTIBILIDAD o IDONEIDAD PARA UN PROPÓSITO EN
PARTICULAR

Bueno, a ver si entre todos damos con la solución o el problema.

Un saludo y gracias.

+1
0
-1
Imagen de cjadt
+1
0
-1

He leído por ahí ke el sky2 soporta mas cantidad de dispositivos ke el sk98lin, pero si insistes...
Si se carga el sk98lin al iniciar es porke el kernel identificó la tarjeta:
pingusa:~# sudo lspci | grep -i eth
Ke dice 'dmesg' al respecto?
pingusa:~# sudo dmesg | grep eth
Al iniciar tenemos eth activada?
pingusa:~# sudo ifconfig
eth0       Link encap:Ethernet HWaddr 00:4F:4E:0D:92:EB
              inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
...
lo           Link encap:Local Loopback
              inet addr:127.0.0.1 Mask:255.0.0.0
...
Si el módulo está cargado tienes el directorio "/proc/net/sk98lin/"?
Dentro deberías tener la interfaces eth como archivos de texto plano ke se pueden leer:
pingusa:~# cat /proc/net/sk98lin/eth0

Christian

+1
0
-1
Imagen de Anónimo
+1
0
-1

Ahora mismo no puedo, mirarlo pero lo hare cuando llegue a casa.
Te comento sobre el sky2, resulta que por defecto mi tarjeta de red utiliza sky2, el problema que tengo es que cuando estoy utilizando un programa p2p(Azureus, Emule,...) se me cae la conexion debido a que se satura por el numero de conexiones abiertas(esto es lo que he visto en algun foro, creo que a alguien le pasaba en este foro, pero no encuentro el post) y precisamente por esto queria instalar este otro modulo, con el que al parecer no hay ningun problema con este tipo de programas.
Por cierto que me imagino que para poder utilizar el sk98lin tendre que inhabilitar el sky2, que actualmente esta activo, ¿como lo hago?.

Muchas gracias.

+1
0
-1
Imagen de Trasgu_ubuntu
+1
0
-1

Por cierto el anonimo soy yo.

Bueno pues esto es lo que me sale:

lspci|egrep -i eth
0000:02:00.0 Ethernet controller: Marvell Technology Group Ltd. 88E8036 Fast Ethernet Controller (rev 10)

dmesg|egrep eth
[17179573.468000] Driver 'sd' needs updating - please use bus_type methods
[17179588.932000] sky2 eth0: addr 00:0f:b0:84:19:68
[17179589.984000] Warning: PCI driver ipw2200 has a struct device_driver shutdown method, please update!
[17179590.920000] sky2 eth1: enabling interface
[17179592.888000] sky2 eth1: Link is up at 100 Mbps, full duplex, flow control none
[17179593.504000] ADDRCONF(NETDEV_UP): eth0: link is not ready
[17179604.152000] eth1: no IPv6 routers present

eth1 Link encap:Ethernet HWaddr XX:XX:XX:XX:XX:XX
inet addr:192.168.6.23 Bcast:192.168.6.255 Mask:255.255.255.0
....

>>> Si el módulo está cargado tienes el directorio "/proc/net/sk98lin/"?

No tengo ese directorio.

Bueno y ahora que hago????????, ayudame porfavor que hace dias que no tengo noticias tuyas. Si alguien mas quiere echarme una mano, se lo agradeceria.

Un saludo a todos.

+1
0
-1