Me dais consejos sobre compilar nucleo?

Buenas!!

Estoy cacharreando con una mini plaquita x86 que tiene una microSD como HDD, una miniPCI como expansion y unos cuantos puertos usb. El caso es que le he instalado un linux sin X, un kernel empaquetado para esa plaquita, pero que no lleva modulos para la tarjeta wifi. Mi batalla ahora es hacer funcionar el wifi y para ello he visto que tengo (creo) 3 opciones:
- Compilar el kernel desde 0
- Restaurar una imagen del S.O con el modulo cargado en mi microSD
- Compilar el kernel usando el fichero de configuracion de la imagen del S.O que si trae el modulo

La primera opcion me da un poco de miedo/pereza. Las veces que lo he intentado en un PC normal siempre he desistido (aunque no la descarto, claro).
La segunda, la he intentado. Pero despues de unas cuantas pruebas he supuesto que el MBR no coincide o el Grub no funciona, al copiar la imagen de / en mi SD.
La tercera, si no me equivoco, para compilar un nucleo puedes usar la configuracion anterior (desde un fichero que se crea). ¿Podria coger ese fichero de la imagen del S.O que si esta compilado con el nucleo wifi?

Espero me podais guiar un poquito, que ando un pelin perdido.

Muchas gracias
Puedes usar la configuración de tu actual kernel (/proc/config.gz, o /boot/config-...) y modificar lo que quieras :D
Por curiosidad... que placa es? :D
Pues es una roboard rb-100
Imagen

Parte del contenido de mi config-2.6.26... es este:
#
# Wireless LAN
#
CONFIG_WLAN_PRE80211=y
CONFIG_STRIP=m
CONFIG_ARLAN=m
CONFIG_WAVELAN=m
CONFIG_PCMCIA_WAVELAN=m
CONFIG_PCMCIA_NETWAVE=m
CONFIG_WLAN_80211=y
CONFIG_PCMCIA_RAYCS=m
CONFIG_IPW2100=m
CONFIG_IPW2100_MONITOR=y


viendo que si que hay algo de soporte wlan compilado. No sé por donde tirar, ciertamente...
Pues depende del modelo/chipset del wifi, tendras que compilar el modulo correspondiente :)
Saludos!
Una pregunta que no tiene nada que ver con el tema pero referente a tu placa...
Estoy viendo las especificaciones y dice que tiene una cpu x86 Vortex...no se supone que este tipo de cpus solo las pueden fabricar AMD, Intel y VIA?

La verdad es que una cosa así para tenerla todo el día enchufada descargando cosas es un gustazo de lo poco que consumirá
NaNdO escribió:Una pregunta que no tiene nada que ver con el tema pero referente a tu placa...
Estoy viendo las especificaciones y dice que tiene una cpu x86 Vortex...no se supone que este tipo de cpus solo las pueden fabricar AMD, Intel y VIA?

La verdad es que una cosa así para tenerla todo el día enchufada descargando cosas es un gustazo de lo poco que consumirá


Te refieres a algun tipo de patente??? Ni idea, aunque tampoco me quita el sueño :-|
Casi es tan pequeña que la puedes meter dentro del router y tenerla ahi siempre encendida con un disco por usb...

Bueno, yo sigo a lo mio. A ver si me podeis aclarar las ideas.
Yo tengo el codigo fuente del controlador de la tarjeta wlan. No puedo compilarlo porque me dice:
make[1]: Entering directory `/home/default/VT6655_Linux_src_v1.20.02_x86/driver'
Makefile:93: /lib/modules/2.6.29.1-vortex86dx/build/.config: No such file or directory
make[1]: *** No rule to make target `/lib/modules/2.6.29.1-vortex86dx/build/.config'.  Stop.
make[1]: Leaving directory `/home/default/VT6655_Linux_src_v1.20.02_x86/driver'
make: *** [all] Error 2

Por lo que habia leido tenia que compilar el kernel con los modulos, pero ... que modulos???
Estaba viendo la posible config nueva del kernel y en el apartado wlan no veo el chipset de mi wifi, algo como VT6655GMA00 (de VIA).
¿Alguna idea?
He mirado un poco por google y he encontrado esto http://robosavvy.com/forum/viewtopic.php?p=25205 , nos vale?
Pues en esas estoy. Intentando compilar las fuentes del kernel para añadir los modulos que me hagan falta. El problema es que no sé qué modulos deberia añadir para mi tarjeta wifi y no se si unicamente necesitaré tocar ese apartado o tendré que "navegar" por todas las opciones para conseguir que despues me arranque. Ya os decia que eso de compilar el kernel no era mi fuerte
Has instalado el kernel-source?
El problema es que no puedo instalar el kernel-source desde los repositorios de debian, ya que el kernel que tengo corriendo es uno compilado especialmente para este hardware.
Si no me equivoco (que en parte prefiero equivocarme...), tengo que compilar un nuevo nucleo desde el kernel source que facilita el fabricante, para en el proceso de compilacion añadir lo que necesite.

Es posible, no?
CrosMax escribió:Pues en esas estoy. Intentando compilar las fuentes del kernel para añadir los modulos que me hagan falta. El problema es que no sé qué modulos deberia añadir para mi tarjeta wifi y no se si unicamente necesitaré tocar ese apartado o tendré que "navegar" por todas las opciones para conseguir que despues me arranque. Ya os decia que eso de compilar el kernel no era mi fuerte


Si tu tarjeta wifi es una pci, haz un lspci y con el indicador que te salga (algo como id: XXXX : XXXX, siendo las X numeros y letras) busca en internet sobre eso, ya que indica el chipset de tu wifi y asi sabes que modulo compilar. Si el kernel te lo pillara de primeras, haciendo un lspci -v te decia que modulo esta usando para hcer funcionar la tarjeta. Si es una usb, lsusb te dira el chipset (id de antes) de tu tarjeta.
Mmm... te refieres a integrar el driver en el kernel? eso no tengo ni idea de como se hace xD

Pero viendo la configuración de tu actual kernel y que el soporte para wlan está activado (otra cosa es que el kernel no incluya drivers para el chipset de tu wifi), podrías reutilizar esa configuración para compilar el kernel oficial y ya, luego, con tu kernel y kernel-source instalado, compilar el driver del wifi.

Creo que debería ser así :/
theogre escribió:Mmm... te refieres a integrar el driver en el kernel? eso no tengo ni idea de como se hace xD

Pero viendo la configuración de tu actual kernel y que el soporte para wlan está activado (otra cosa es que el kernel no incluya drivers para el chipset de tu wifi), podrías reutilizar esa configuración para compilar el kernel oficial y ya, luego, con tu kernel y kernel-source instalado, compilar el driver del wifi.

Creo que debería ser así :/


Pero hay una cosa que no entiendo. EL kernel source es el codigo necesario para hacer tu kernel a medida. Ademas está el paquete kernel-source y kernel-headers que no sé bien para que son. Por lo que leo de lo que me dices, no es lo mismo el kernel source que digo yo (para compilar el kernel) que el kernel-source que dices tú, que entiendo en un paquete para hacer "algo mas".
¿Que es entonces o para que sirve el kernel-source que dices que debo instalar? Lo podría instalar desde los repositorios de debian?

Si tu tarjeta wifi es una pci, haz un lspci y con el indicador que te salga (algo como id: XXXX : XXXX, siendo las X numeros y letras) busca en internet sobre eso, ya que indica el chipset de tu wifi y asi sabes que modulo compilar. Si el kernel te lo pillara de primeras, haciendo un lspci -v te decia que modulo esta usando para hcer funcionar la tarjeta. Si es una usb, lsusb te dira el chipset (id de antes) de tu tarjeta.

Voy a probar y te cuento. En principio es una miniPCI, aunque no descarto pillar un usb.
EDIT: Pues no trae el comando lspci. Solo lleva -> lsattr lsmod lspgpot lsusb

Gracias a los dos!!! Bueno, a todos!
Espero que alguien me pueda aclarar lo de las sources esas que me estan liando.
el kernel-source son las fuentes del kernel. Lo de hacerlo "a medida" es porque puedes elegir que opciones te vienen mejor para hardware, hacerlo modular o no y luego compilarlo para una arquitectura concreta. La headers son las cabeceras del kernel, por asi decirlo, lo necesario para poder generar un modulo para el kernel hecho por ti una vez que ya ha sido compilado para quitarte el paso de tener que recompilar el kernel entero o porque el driver en cuestion no está incoporado de serie en el nucleo. Un ejemplo, sirven para compilar los drivers de nvidia o de ati.
CrosMax escribió:Pero hay una cosa que no entiendo. EL kernel source es el codigo necesario para hacer tu kernel a medida. Ademas está el paquete kernel-source y kernel-headers que no sé bien para que son. Por lo que leo de lo que me dices, no es lo mismo el kernel source que digo yo (para compilar el kernel) que el kernel-source que dices tú, que entiendo en un paquete para hacer "algo mas".
¿Que es entonces o para que sirve el kernel-source que dices que debo instalar? Lo podría instalar desde los repositorios de debian?


Disculpa que me haya restrasado en la respuesta, he tenido visita.

Conocemos las fuentes del kernel linux, sabemos de dónde descargarlo y cómo configurarlo y compilarlo. Aun así, en los repositorios de las distribuciones suele estar presente la fuente del kernel linux con los parches que los "mantenedores" del núcleo han creído conveniente aplicar para la distribución.
Por lo tanto, la diferencia entre obtener las fuentes del kernel linux de kernel.org y obtenerlas desde el repositorio de la distribución (kernel-source) se halla en que el segundo está convenientemente modificado (y puede no interesarte).
El paquete kernel-headers, que también puedes encontrar en los repositorios de tu distribución, es una forma de atajar la necesidad de tener las fuentes del kernel para poder compilar un módulo. Aunque si lo que necesitas es recompilar el kernel, con el paquete headers no será suficiente.

Entonces, kernel-source puede hacer las veces de kernel-headers pero no a la inversa.

Tienes que tener en cuenta que los paquetes kernel-headers que encontrarás en los repositorios están preparados para funcionar con la imagen del kernel que también está en los repositorios. No vale descargarte, por ejemplo, el kernel-headers para la 2.6.32 que te has compilado de aquí o allí.

Te aconsejo que te descargues las fuentes del kernel que provee la web del cacharro, reutilices tu actual configuración, lo compiles y luego le instales el driver.
theogre escribió:Te aconsejo que te descargues las fuentes del kernel que provee la web del cacharro, reutilices tu actual configuración, lo compiles y luego le instales el driver.


Muchas gracias por vuestra ayuda. Y responder tarde es hacerlo en 1 mes!!! no en unas horas :)
Entonces si reutilizara el fichero de configuracion del kernel, ese tal config-2-6-29... para compilar el kernel desde las fuentes que hay en la web del fabricante (se supone que trae modulo wifi activo), ¿podría después compilar el driver de mi tarjeta wifi con un make si que me diera el error que puse??
Supongo que el error
Makefile:93: /lib/modules/2.6.29.1-vortex86dx/build/.config: No such file or directory
"nos" indica que no tengo instaladas las fuentes del kernel o kernel-source, no?

Me pondré a compilar, a ver si tengo mas suerte que cuando lo hacia en el PC hace años
Muchas gracias
En el enlace que te puse antes al foro de robosavvy, el que abrió el hilo hizo funcionar la wlan. Si él lo ha conseguido, tú también xD

Cuéntanos luego que tal ha ido :)
16 respuestas