martes, agosto 01, 2006

Instalar Debian Etch en un Dell Inspiron 9400

Ante todo escribir que llegar a instalar Etch no ha sido un camino de rosas, pero despues de conseguirlo, me puedo permitir ciertas licencias, ya que he ido escribiendo bastante sobre mis peripecias.

El portátil que tengo es un Dell Inspiron 9400 (tambien es conocido como el modelo Dell E1705). Las características hardware básicas son:
  • Procesador Intel Core Duo T2600 @ 2.16GHz
  • Tarjeta gráfica Nvidia Gforce Go 7800 con 256 MB.
  • Trajeta de red Broadcom Corporation BCM4401-B0 100Base-TX
  • Tarjeta inalámbrica Intel Corporation PRO/Wireless 3945ABG.
  • Disco duro de 100 GB en una controladora serial ata.
  • Sonido Intel Corporation 82801G (ICH7 Family) High Definition Audio (HDA).
La instalación la realice utilizando el netinst de Debian, bajándome la última ISO que se hace semanalmente. Utilice el instalador grafico que viene con Etch pero igualmente probe el instalador normal, sólo hay que pasarle el parámetro libata.atapi_enabled=1 para que te reconozca el disco duro y la grabadora de DVD.

El disco duro (y la grabadora) es reconocida como un dispositivo SCSI al utilizar el nuevo driver libata que viene con los kernels 2.6, más información se puede ver en la documentacion del kernel que trae los fuentes.

Una vez instalado el sistema base, hay que bajarse los fuentes del kernel para compilarlo y crear un nuevo kernel que permita incorporar sin problemas los drivers de Nvidia y de la tarjeta wifi que es necesario construir en el sistema. Además tambien se compila para incluir el soporte de los dos procesadores, porque el kernel que te instala Etch es un 2.6.16 pero sin soporte de dos procesadores.

La compilación la realicé del kernel 2.6.16 que me baje con aptitude. Para compilar el kernel tambien me baje una serie de paquetes como dpkg-dev que permiten construir un paquete de .deb con todo el nucleo y modulos incluidos.

Los pasos pueden parecer engorrosos, pero cuando los haces por primera vez, las siguientes ocasiones es coser y cantar. Bajar fuentes del kernel que se meten en /usr/src y descompromirlos con 'tar xvfj linux-source-2.6.16.tar.bz2' (o con 'tar xvfz' si es un tar.gz). Cuando tienes descomprimido el fuente, creas un enlace simbolico con 'ln -s linux-2.6.16 linux', así no hay problemas luego.

El siguiente paso es seleccionar que opciones y drivers vas a meter en el kernel de linux. Para ello se ejecuta en el directorio raiz de los fuentes del kernel 'make menuconfig' que te aparecera un bonito menu con muchas opciones agrupadas en diferentes secciones. Puede que te algun fallo, pero eso se debe a que no se ha instalado la biblioteca ncurses-devel que son necesarias para ejecutarlo. Tirar de aptitude para instalar y volver a ejecutar make menuconfig.

Por mucho que diga aqui, lo importante es ir viendo que cosas tienes en el portatil y que cosas no vas a necesitar. Por ejemplo, hay un monton de drivers para tarjetas de red o para controladoras scsi. Los quitas todos dejando los de la broadcom y los de libata en scsi.

Mas detalladamente:
  • Processor Type & Features, señalar el tipo Pentium 4 y habilitar el Symmetric multi-processing support y poner 2 procesadores.
  • En Device Drivers lo dicho, quitar todo aquello que no suene pero en SCSI Device marcar el soporte serial ATA que se encuentra en la sección Low Level Drivers. No olvidar que no se debe poner como modulo cargable, sino que debe estar compilado dentro del nucleo, de lo contrario no podremos arrancar.
  • Tambien en Device Drivers, pero en la seccion Network Device, buscar nuestra Broadcom (que estara en las tarjetas de 10/100) y lo demas fuera. Dejar lo que son cosas genericas de la red, pero no incoporar drivers particulares menos los referentes a la broadcom.
  • Lo demas es ir buceando y mirar.
Todavia no ha acabado esto, ahora viene compilar el kernel, puesto que hasta ahora solo hemos elegido que cosas queremos que tenga. Para compilarlo ejecutamos 'make-dpkg --initrd kernel_image' 'make-kpkg --initrd kernel_image' que creara un bonito paquete situado en /usr/src que luego instalaremos con 'dpkg -i nombre_paquete_kernel.deb'.

La instalación del kernel reconstruye grub creando dos nuevas entradas para el nuevo kernel. Hacemos un reboot y pa arrancamos con él. Si todo ha ido bien, tendremos un kernel con la red ethernet activada y con el soporte para los dos procesadores tambien. Esto se puede comprobar echando un vistazo a dmesg o mirando /proc/cpuinfo que tienen que aparecer los dos procesadores.

Si algo hemos hecho MUY mal, no arrancara. Sin problemas. Reiniciamos de nuevo, seleccionamos el kernel antiguo en grub y desinstalamos el kernel que hemos construido y a repetir los pasos anteriores. No sin antes hacer make-dpkg clean para eliminar restos de la compilación.

Buff, esto se esta volviendo un pelin largo. Todavia queda instalar la wifi y el driver para la tarjeta de video.

Para la tarjeta de video, no hay que hacer mucho. Primero instalamos la xwindows con 'apt-get install xserver-xorg xorg gnome gdm' y bajarse los drivers desde nvidia.com y ejecutar (al no tener xwindows, tendremos que usar lynx que es un navegador en modo texto) con 'sh ./NVIDIA-Linux-x86-1.0-8762-pkg1.run --x-module-path=/usr/lib/xorg/modules/' asi se instalaron los drivers en su sitio correcto. Luego arrancamos las xwindows para comprobar que todo va fino. El parametro x-module-path es importante, sino el constructor de Nvidia no hara su trabajo.


Una vez hecho esto, queda la parte de la wifi. No hay que hacer mucho, sólo seguir las instrucciones que nos indican en http://ipw3945.sourceforge.net, desde allí nos bajamos los drivers,el microcodigo, el demonio que controla la tarjeta y el subsistema ieee80211 que tambien compilaremos.

Un último apunte. La compilación del modulo ipw3945 tiene un problemilla, no mete el modulo en el sitio correcto, por lo que es necesario copiarla al directorio /lib/modules/2.6.16 (o version del kernel que estamos usando) y situarlo donde veamos. Luego ejecutamos un depmod y palante. En mi caso meti el fichero ipw3945.ko (de Kernel Object) dentro del directorio /lib/modules/2.6.16/kernel/drivers/net/wireless. [Mirar abajo en la actualizacion2].

A partir de aqui, es trastear un poco con ipw3595d (meterlo en /sbin) y jugar con iwconfig para configurar la red. En mi caso hice un pequeño script que levantaba el demonio ipw3945d, configuraba los datos de la wifi (essid, key, etc) y hacia el dhclient de la interfaz wifi.

Continuará, sin duda alguna, porque me queda el tema del audio que ya configuré con Sarge y algun que otro hardware -como las pcmcia que no he probado aún-.

Actualización: Leer esto para configurar el sonido de la tarjeta de sonido Intel HDA.

Actualización2: Sobre la instalación del modulo de la tarjeta wifi ipw3945, se puede hacer con 'make install_for_testing', porque el 'make install' esta deshabilitado en los fuentes considerados de pruebas.

4 comentarios:

  1. Creo que hay un error en la parte de como compilar el núcleo "a la debian".

    ¿No debería ser "make-kpkg" en lugar de make-dpkg?

    (Me está resultando muy útil tu guía para instalar debian en este portátil, gracias!)

    ResponderEliminar
  2. Cierto, es make-kpkg.

    Gracias por el aviso de la errata, lo corrijo inmediatamente.

    Un saludo.

    ResponderEliminar
  3. Antes que nada enhorabuena por la guia y gracias por compartir el trabajo.

    Sin embargo, hay un par de cosas en las que creo que das demasiadas vueltas, y que haciendolo "al modo debian", la cosa es aun mas sencilla.

    Primero. Dudo mucho que haga falta recompilar el kernel.Desde luego, no es necesario para los drivers de nvidia, y seguramente tampoco para la wifi. Mas adelante comento cual es la alternativa mas comoda.

    Segundo, tampoco es necesario para dar soporte smp, puesto que los kernel de etch ya tienes ese soporte, que se activa automaticamente si tienes varios nucleos, como puedes leer por ejemplo aqui.

    La forma mas sencilla de añadir modulos externos al kernel, y de poder desinstalarlos, cambiarlos, etc, facilmente, es usar module-assistant.

    Por ejemplo, a partir de un kernel precompilado de debian, para instalar el driver de nvidia, lo unico que habria que hacer es:

    # apt-get istall module-assistant
    # m-a prepare
    # m-a update
    # m-a a-i nvidia
    # apt-get install nvidia-glx

    y solo quedaria configurar las X.

    Espero que sea de ayuda. Un saludo

    ResponderEliminar
  4. En mi caso, cuando hice la guia, era fundamental para el portatil que me compre, con con Etch tenia muchos problemas.

    Como tu dices, ahora debian (Etch) viene mejor preparada pero desde que lo hice hasta ahora, de etch han sado dos revisiones si mi memoria no falla. De todas formas le echaré un vistazo (incluso lo del module-assistan tengo algo escrito en versiones posteriores).

    ResponderEliminar

Cómo utilizar el servicio Secrets Manager para guardar las claves privadas de SSH

Para guardar la clave privada en el servicio Secrets Manager como un secreto en modo texto sin formato, sigue estos pasos Supongamos que la ...