Entiende Linux (II): El Hardware

Sección [Linux] Fecha [2003-07-28] Hora [23:35]

Leo a veces gente que se queja amargamente de que con tal o cual distribución de Linux no pueden usar determinado hardware mientras que con otra distribución sí que pueden.

El trabajo que les supone reinstalar otra distribución es demasiado como para no hacer el esfuerzo de dar soporte para ese hardware concreto a mano (siempre y cuando la versión actual del núcleo Linux lo soporte). La lástima es que sabemos a ciencia cierta que estas personas harían el esfuerzo, pero la falta de información hacen que desconozcan que dos sistemas Linux pueden ser tan similares o tan distintos como uno quiera aunque uno de ellos fuera una Debian 3.0 y el otro una RedHat 9.0. Veamos a que me refiero:

La forma de poder usar nuestro hardware en Linux viene de dos formas que al fin y al cabo son dos maneras de hacer lo mismo: Cargar los controladores (drivers) del hardware en memoria.

La primera manera es tenerlos compilados dentro del núcleo, con lo que cuando arranque el sistema los controladores se cargarán automáticamente.
La segunda manera es compilarlos como un módulo independiente, de forma que podemos cargarlos al iniciar mediante algún script de arranque, descargarlos cuando queramos o simplemente cargarlos cuando los necesitemos. Esta última opción es especialmente útil en sistemas con poca RAM y con periféricos externos que no siempre estén conectados (memorias USB, grabadoras/lectores externos, etc).

Como dije en la anterior entrega el núcleo es hasta cierto punto independiente de la distribución que estemos usando. Si bien es cierto que casi todas las distros personalizan el kernel que viene de serie, siempre podemos poner uno bajado de Kernel.org con las opciones que nosotros queramos.

Sobre la compilación del Kernel hay un How-To (Cómo) especialmente útil en Kernel-como. En esta miniguía no entraremos, por ahora, en profundidad sobre que opciones añadir a la hora de configurar nuestro propio núcleo. Eso lo dejamos para más adelante, pero si eres impaciente o te interesa especialmente esta parte te ruego primero leas el Kernel-Como.

Como dije antes, podemos o bien configurar el controlador dentro del núcleo o como módulo independiente. Lo de independiente es un decir, pues normalmente depende del núcleo desde el que fue compilado e incluso de la versión del compilador. Debido a esto no se suelen ver controladores en Linux que no traigan su código fuente. Incluso los controladores de Nvidia deben ser compilados para nuestro núcleo.

Dejando de lado las compilaciones vamos a pasar a la parte más útil y que sería una respuesta a la pregunta "¿Si mi Mandrake/SuSe/RedHat/Debian/... no me ha detectado tal o cual hardware qué hago?". Vayamos por partes:

Primero asegurémonos de que nuestro hardware está soportado realmente en Linux y a partir de que versión del núcleo lo está. No hay una fórmula magistral para hacer esto y es aquí donde deberemos invertir más tiempo, ya sea en Google, IRC o en la web del fabricante. A día de hoy la mayoría de hardware está bien soportado, las excepciones son:

· Winmodems: Módems normalmente internos de bajo coste, pensados para correr con Windows ahorrando así dinero en hardware. Tampoco algunos dispositivos ADSL por USB no están soportados por el mismo motivo (son los típicos que bajan el rendimiento de tu PC cuando trabajas con ellos).

· Aceleradoras 3D: Las Nvidia tienen un soporte más que decente a pesar de que sus controladores son propietarios. ATI donó controladores pero las opiniones sobre estos son bastante contradictorias, así que no puedo pronunciarme por ahora. El resto de tarjetas están más o menos soportadas, incluyendo las que usan el chip Kyro2 y las extintas 3Dfx. Cito las Aceleradoras 3D porque a pesar de que como tarjetas 2D sí están soportadas, para activar la aceleración 3D quizá tengamos que buscar controladores a parte.

· Tarjetas de sonido: Suelen estar bien soportadas en lo básico, pero ha habido problemas con el sonido envolvente, los sistemas tipo 5.1 y las salidas digitales. Hoy en día me consta que la mayoría de errores graves están subsanados.

· Dispositivos de almacenamiento USB: En principio no deberían dar problemas a pesar de lo que ocurre con algunos WinModems ADSL, es conveniente tenerlos conectados durante la instalación de nuestra distro para facilitar su configuración.

Una vez sepamos que funciona solo nos queda saber qué modulo del núcleo le corresponde. Esto lo podemos saber mediante el método anterior de búsqueda :-)

Por suerte para nosotros la mayoría de distros compila casi todos los módulos (o almenos los más usuales) de forma que no tengamos que compilarlos nosotros cuando instalemos hardware. Gracias a esto y sabiendo qué módulo tenemos que cargar la tarea será tan sencilla como:

$ modprobe nombremodulo

Y con un simple lsmod veremos si está cargado en memoria o no.

Después de esto nuestro trabajo será configurar las opciones del hardware, si es que las tiene (p. ej. los parámetros de red para una tarjeta ethernet). Como depende mucho de qué es lo que estemos configurando esto lo dejamos para otro día.

Notas interesantes:

· ¿Cómo saber que versión del Kernel tengo?
$ uname -a te enseñará la versión de tu Kernel. También en el panel de control de KDE puedes verla. Las distros actuales tienen alguna versión de la rama 2.4 (que es la rama estable).

· Si mi núcleo es personalizado por mi distro y quiero compilarlo o compilar un módulo para él, ¿de dónde saco el código fuente?
Echa un vistazo a los CD's de tu distro y busca paquetes que sean similares a kernel-headers-versión.de.tu.núcleo o kernel-sources-versión.de.tu.núcleo. Si no están bájatelos de los FTP de tu distro, por ejemplo:

RedHat
Mandrake
Debian

También puedes bajarlos con las herramientas de actualización de tu sistema: up2date en RedHat, urpmi en Mandrake, YaST2 en SuSe y apt en Debian.

De nuevo espero que os sirva de ayuda y como siempre teneis los comentarios para lanzar preguntas, sugerencias, aviso de erratas, ... ¡Gracias!


Comenta (0) comentario/s

Referencias (TrackBacks)

URL de trackback de esta historia http://simbiosis.blogalia.com//trackbacks/10176

Comentarios

Nombre
Correo-e
URL
Dirección IP: 54.196.33.246 (b58d9776cb)
Comentario