Mostrando entradas con la etiqueta Kernel. Mostrar todas las entradas
Mostrando entradas con la etiqueta Kernel. Mostrar todas las entradas

sábado, octubre 10, 2009

Averiguar drivers a compilar en el Kernel

Siempre podemos tener problemas a la hora de compilar el kernel, mas que nada porque no sabemos que drivers se deben de habilitar para que todo nuestro hardware funcione correctamente.

Para esta ardua tarea existe una página que nos ayudará en esta tarea.
Pegando la salida del comando lspci -n en la página comentada veremos los drivers que debemos habilitar.

En el menú de configuración (make menuconfig), podemos realizar una búsqueda por el nombre del driver, de esta manera podremos localizar la sección en la que se encuentra el driver.
La forma de buscarlo es / y aparecerá un cuadro de búsqueda.

A los mas novatos en temas de compilación de kernels les será de mucha ayuda o eso espero ;)

miércoles, octubre 07, 2009

Sonido Dell XPS Studio

Ya expliqué en una ocasión anterior como configurar el sonido para la salida HDMI de este equipo, pero no expliqué cuales eran los drivers a habilitar en el propio kernel.

Entramos al configurador del kernel como siempre:
cd /usr/src/linux
make menuconfig

En las siguientes capturas de pantalla se pueden apreciar las opciones a habilitar:









































Así de simple, ahora mismo estoy investigando como compilar un kernel super reducido para poder bootear el portatil con lo mínimo pero con soporte para la Atheros que lleva, de esta forma podría reinstalar mi Debian sin necesidad de conectar el portatil a la red cableada. Ya os contaré como acaba mi investigación ;)

domingo, junio 28, 2009

Controlador SATA Dell XPS Studio

Poco a poco voy ajustando cada vez mas mi kernel al hardware de mi portatil, voy a explicar cual es el driver SATA para el Dell XPS Studio.
La ruta del driver es la siguiente:
Device drivers --> Serial ATA (prod) and Parallel ATA (experimental drivers)
  • ATA ACPI support
  • AHCI SATA support
  • ATA SFF support
  • NVIDIA SATA support
Recordad compilar estas opciones directamente dentro del kernel, no como módulos ya que si no se hace así el kernel no arrancará y nos mostrará un bonito Kernel Panic en el arranque.

domingo, junio 14, 2009

Frequency Scaling

Hola amigos, hace poco que tengo mi portatil y hasta ahora no me había preocupado excesivamente la temperatura que alcanzaba el microprocesador pero con la llegada del verano empieza a alcanzar temperaturas de hasta 80 y pocos grados, no soy un experto en la materia pero me parece excesivo, se trata de un Core 2 Duo P8400 a 2600 GHz.

Finalmente he optado por habilitar en el kernel las opciones de escalado de frecuencia:
Power Managament and ACPI options --> CPU Frequency Scaling
Default CPUFreq Governor --> Esta será la opción por defecto que usará si no le indicamos lo contrario, yo voy a dejarlo en userspace para poder ajustar ls frecuencia de reloj a mi antojo.

Compilamos las siguientes opciones como módulos:
performance governor
powersave governor
ondemand cpufreq policy governor

Esta otra opción nos forzará a compilarla dentro del kernel:
userspace governor for userspace frequency scaling

ACPI Processor P-State Driver--> Esta opción es para los Core 2 Duo, si disponemos de otro microprocesador habrá que "Googlear" para saber cual es la opción correcta.

Una vez habilitadas las opciones necesarias compilamos y reiniciamos:
make && make modules_install && cp arch/x86_64/boot/bzImage /boot/kernel-"version" && reboot

Ahora hay que cargar el módulo ACPI Processor P-State Driver:
modprobe acpi_cpufreq

Con esto ya podemos agregar el applet de Gnome: "Monitor de frecuencia de la CPU"

Ejecutamos como root el comando: dpkg-reconfigure gnome-applets

Y respondemos que sí para ejecutar el applet con el bit SUID habilitado, de este modo nuestro usuario del día a día será capaz de ajustar la frecuencia de reloj de las CPUs.

Clickando sobre el applet ya podremos cambiar la frecuencia con un simple click ;)

Esto es todo, así de sencillo, si queremos probar más modos tenemos los siguientes modulos:
  • cpufreq_powersave --> Ahorro de energía
  • cpufreq_ondemand --> Si las aplicaciones exigen potencia de calculo la frecuecnia es elevada a su máximo, y si la demanda cesa va bajando paulatinamente.
  • cpufreq_userspace --> La frecuencia max y minima es habilitada por programas.
  • cpufreq_conservative --> Es igual que el modo ondemand pero cuando sube la frecuencia lo hace progresivamente.

Finalmente hacemos que este proceso se realice de forma automática en el arranque:
vi /etc/modules
acpi_cpufreq

lunes, mayo 04, 2009

Hacer andar la WebCam y las dos tarjetas de red del Dell XPS Studio 1340

Ya casi tengo todo el hardware de mi portatil funcionando en mi Debian, solo falta que funcione el SLI-Hibrido pero todo a su debido tiempo.

Con el programa usbview podemos observar el fabricante de la camara:

Integrated Webcam
Manufacturer: M092R-A00-9109-SD0MX

Para incorporar el driver a nuestro kernel hay que dirigirse a /usr/src/linux y una vez en esta ruta ejecutar:

make menuconfig

Aparecerá una ventana de configuración donde seguiremos los siguientes menus:
Device Drivers --> Multimedia Devices --> Video for Linux --> Video Capture Adapters --> V4L USB Devices

Y habilitaremos estas dos opciones:
  • USB Video Class
  • UVC Input events device support

Ya que estoy tambien voy a poner la ruta de los drivers de la tarjeta de red inalámbrica y la cableada.

Para compilar con soporte para la tarjeta de red cableada:
Device Drivers --> Networking Device Support --> Ethernet (10 or 100Mbit)
  • EISA, VLB, PCI and on board controllers
  • nForce Ethernet support
Para la inalámbrica:
Device Drivers --> Networking Device Support --> Wireless LAN --->
  • Wireless LAN (IEEE 802.11)
  • Atheros 802.11n wireless cards support
Si hay dudas de como compilar ya publiqué un artículo sobre el tema.

miércoles, abril 15, 2009

Salida HDMI Dell XPS Studio 1340

Tras la reciente adquisición de mi Dell he estado tratando de configurar todos el hardware para que funcione correctamente bajo Linux.
Esta vez voy a explicar como conseguir que la salida HDMI ande desde mi Debian con los últimos drivers de mi Nvidia GForce 9400M G.
Cabe destacar que este equipo viene equipado con la tecnología Hybrid-SLI la cual yo no he podido hacer funcionar desde Linux.

Desde la utilidad nvidia-settings configuramos el televisor, en el televisor lo configuramos como TwinView y en position: Clones.

Con esto ya tendríamos el video funcionando, pero para que el audio funcione hay que realizar ciertos pasos:
  1. Abrimos el control de volumen de Gnome y en la pestaña conmutadores habilitamos IEC958 en el caso de que no apareciese iríamos a Editar --> Preferencias y lo haríamos visible.
  2. Ahora le indicaremos a Gnome que emplee la salida HDMI.
Sistema --> Preferencias --> Sonido
En pistas predeterminadas del mezclador:
NVIDIA MCP7A HDMI (OSS Mixer)


Por ahora solo funcionaría el sonido con el reproductor de video Totem, para que funcione con todos hay que generar en nuestro home el fichero .asoundrc con el contenido:

defaults.pcm.device 3

Con esto ya podremos disfrutar de nuestras películas favoritas en cualquier televisor con entrada HDMI.

La línea defaults.pcm.device 3 no me la he inventado ni la he visto tras golpearme la cabeza contra el bidé mientras cambiaba la bombilla del baño, esta línea sale de ejecutar la orden:
aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: STAC92xx Analog [STAC92xx Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: NVidia [HDA NVidia], device 3: NVIDIA HDMI [NVIDIA HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0

Como se puede apreciar el dispositivo 3 es la salida de audio HDMI.

Cuando acabemos de usar la salida HDMI eliminamos el fichero .asoundrc de nuestro home, quitaremos el conmutador IEC958 y configuraremos el sonido con pistas predeterminadas del mezclador: HDA Nvidia (Alsa Mixer).

Después de esto ya funcionará el sonido por la tarjeta habitual.

jueves, diciembre 18, 2008

Kernel Linux mas seguro que las aplicaciones cerradas

Un estudio de 4 años de duración llevado a cabo por 5 investigadores de la Universidad de Stanford en el que se han analizado las 5,7 millones de líneas de código del kernel ha resuelto que Linux es un sistema mucho más seguro que la mayor parte del software propietario. El informe concluye que en el kernel 2.6 de Linux se han detectado únicamente 985 bugs, lo que da una media de tan solo 0,17 fallos por cada 1.000 líneas de código. Es una cifra sensiblemente inferior a la que se da en los programas comerciales, que se sitúa entre 20 y 30 por cada 1.000 líneas, según atestigua la Universidad Carnegie Mellon. De haberse seguido este promedio, se hubieran encontrado más de 140.000 errores en las 5,7 millones de líneas de código del kernel

sábado, julio 22, 2006

Configurar el Kernel.

Hay mucha gente que piensa que el kernel es algo del más allá, pero con este tutorial vamos a dejar bien clarito unos cuantos conceptos:
  1. El kernel no es más que un recopilatorio de drivers para nuestro hardware.
  2. Con su compilación conseguiremos que no se carguen drivers innecesarios que no vamos a utilizar.
  3. Su compilación no es tan compleja si se sabe exactamente el hardware del que se dispone.
Después de estas aclaraciones ya estamos en condiciones de continuar, lo primero será averiguar que HW tenemos instalado en nuestra máquina, comandos útiles para este fin pueden ser:
dmesg --> imprime por pantalla todos los mensaje de arranque del sistema.
lspci --> nos muestra información referente a los dispositivos conectados a los puertos PCI.

El comando dmesg suele proporcionar bastante información, esta aparecerá de golpe en pantalla, una buena idea es hacer que la salida de este comando sea la entrada de less:
dmesg | less

Con esto podremos analizar la salida de dmesg con mas calma y cundo terminemos presionamos 'q'.

Ahora nos bajaremos el kernel de http://www.kernel.org/, la última versión en estos momentos es la 2.6.30.4

Para este kernel la ruta a seguir sería:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.30.4.tar.bz2

Movemos las fuentes del kernel a /usr/src/:
mv "kernel".tar.bz2 /usr/src/

Descomprimimos las fuentes con la siguiente orden:
cd /usr/src

bzip2 -dc "kernel".tar.bz2 | tar -xv

Ahora creamos un enlace simbólico a nuestro kernel:
ln -s /usr/src/"nuestro kernel" linux
cd linux

Este es el momento en el que vamos a iniciar el configurador del kernel para especificarle nuestro HW.
NOTA(en Debian suelen hacer falta algunas librerías las libdev5-ncurses)
apt-get install libdev5-ncurses

Ahora vamos a arrancar el asistente de configuración:
make menuconfig
Si aparece algún error serán librerías que necesita que no están instaladas, se resuelve instalándolas con:
apt-get install "librerías"

Si todo ha ido bien tendremos ante nosotros todo un mundo de posibilidades.
Ahora llega la parte crítica, es la hora de la verdad, ya no vale echarse atrás, teniendo bien claro nuestro HW vamos a ir configurando todas las opciones del kernel, las opciones que no tengamos muy claras si instalarlas o no, podemos optar por dos opciones:
  1. Meterla en el kernel incrementando su tamaño.
  2. Leer el help y decidir si realmente nos es necesaria o no.
Yo recomiendo para los principiantes meter todo lo que no se sepa y luego ir depurándolo y optimizándolo.

NOTA:Una cosilla a tener en cuenta es que las opciones se pueden o compilar en el propio kernel o como módulo, se suele compilar como módulo todos aquellos drivers que utilicemos sólo de forma esporádica, en mi caso el driver de la tarjeta de TV y alguna cosilla más.

IMPORTANTE:
Nunca, pero nunca poner como módulo drivers que le hagan falta al sistema para arrancar como por ejemplo el sistema de ficheros de la partición raíz del sistema o el driver IDE, SATA.............

Si estamos cansados y decidimos continuar más tarde con la configuración, se saldrá y cuando pregunte si guardar se contestará que sí.
Cuando se tenga todo listo se procederá a salir y guardar los cambios y acto seguido se escribirá:
make && make modules_install && cp arch/i386/boot/bzImage /boot/kernel_nuevo

Para 64Bits:
make && make modules_install && cp arch/x86_64/boot/bzImage /boot/kernel_nuevo

Para que nos aparezca el nuevo kernel en el GRUB o el LILO(son los cargadores del sistema, es el programa que nos da a elegir si cargar Windows, Linux o cualquier otro sistema operativo), hay que modificar unos archivos.

NOTA: Solo voy a explicar el proceso con GRUB ya que es mas actual que LILO y el mas utilizado.

vi /boot/grub/menu.lst
Añadiremos un entrada parecida a esta:
(Nunca hay que modificar las entadas existentes porque en caso de que no funcione nuestro kernel tener la opción de arrancar el antiguo que si que nos permitía arrancar).

title=Kernel-2.6.17
root (hd0,4)
kernel /boot/kernel-2.6.17 root=/dev/hda8

Cambiando la línea de root(hd0,4) por la apropiada, en mi caso tengo Linux en el disco duro 1º en la 3º partición, también hay que modificar la línea kernel /boot/kernel-2.6.17 root=/dev/hda8 cambiando kernel-2.6.17 por kernel_nuevo y root=/dev/hda8 por root=/dev/"partición donde se tenga el directorio boot(normalmente suele ser la misma que la de Linux)".

Reiniciamos y nos aparecerá una entrada nueva en el menú de arranque, seleccionamos esta y ya lo tenemos.

ACTUALIZACIÓN:
Si estamos empleando Grub2 sseguir los pasos descritos en este artículo.

Conclusión:
La primera vez que se compile el kernel es normal que no funcione todo o incluso que no arranque la máquina, toqueteando al final todo llega a funcionar.

PD: El conocimienro humano pertenece al mundo ;)