30 jun. 2008

Llega el veranito, refresca tu Ubuntu!

Con la llegada del verano y el calor aumentan los casos de sobrecalentamiento del sistema, con las incomodidades y riesgos que eso conlleva (sobre todo en los portátiles).

En este artículo veremos como identificar la temperatura del sistema (principalmente el procesador) y diferentes estrategias para reducir su calentamiento.

  • ¿Qué temperatura es la correcta?
Esta pregunta no tiene una respuesta exacta pues depende de muchos factores, como la marca y modelo de los componentes, el nivel de esfuerzo al que estamos sometiendo al sistema o las condiciones externas entre otros factores.

Pero para hacernos una idea podemos usar la siguiente tabla (valores aproximados):

Menos de 30º Posiblemente los sensores no están funcionando bien
30º - 60º Rango normal de temperaturas
60º - 70º Sistema sobrecalentado
Más de 70º Riesgo de avería (muchas BIOS apagan el sistema en estas condiciones)

  • Viendo la temperatura del sistema: lm-sensors
El paquete lm-sensors permite acceder a los sensores del sistema, obteniendo datos de temperatura, consumo de electricidad y velocidad de los ventiladores.

Si aun no lo hemos instalado lo haremos con la orden:
$ sudo aptitude install lm-sensors

Configuraremos el programa con la orden:
$ sudo sensors-detect

El configurador nos irá preguntando uno a uno por todos los tipos de sensores que reconoce, le diremos SI a todo y al finalizar el proceso nos dará una lista con los módulos que necesitamos cargar para tener acceso a los sensores del sistema, por ejemplo en mi caso veo esto:
#----cut here----
# Chip drivers
it87
k8temp
#----cut here----


Ahora podemos optar por reiniciar o cargar los módulos manualmente con el comando modprobe, en mi caso pondría:
$ sudo modprobe it87
$ sudo modprobe k8temp


Ya solo nos queda ejecutar el programa sensors para ver toda la información que pueden dar nuestros sensores, en mi caso muestra:
$ sensors
it8712-isa-0290
Adapter: ISA adapter
VCore 1: +1.09 V (min = +0.00 V, max = +4.08 V)
VCore 2: +1.14 V (min = +0.00 V, max = +4.08 V)
+3.3V: +3.23 V (min = +0.00 V, max = +4.08 V)
+5V: +4.97 V (min = +0.00 V, max = +6.85 V)
+12V: +11.97 V (min = +0.00 V, max = +16.32 V)
-12V: -7.23 V (min = -27.36 V, max = +3.93 V)
-5V: -8.37 V (min = -13.64 V, max = +4.03 V)
Stdby: +5.00 V (min = +0.00 V, max = +6.85 V)
VBat: +3.06 V
fan1: 4017 RPM (min = 0 RPM, div = 8)
fan2: 0 RPM (min = 0 RPM, div = 8)
M/B Temp: +127.0°C (low = +127.0°C, high = +105.0°C) sensor = transistor
CPU Temp: +127.0°C (low = +127.0°C, high = +105.0°C) sensor = transistor
Temp3: +35.0°C (low = +127.0°C, high = +106.0°C) sensor = thermal diode
cpu0_vid: +1.550 V

k8temp-pci-00c3
Adapter: PCI adapter
Core0 Temp: +32.0°C
Core1 Temp: +33.0°C


Podemos ver como en estado de reposo los 2 cores de mi Athlon64 X2 3.800+ marcan poco más de 30º

  • Viendo la temperatura del sistema: acpi
En el caso de que nuestro sistema no soporte el uso de sensores hay otra posibilidad, a través del comando acpi, especialmente últil en algunos portátiles:
$ acpi -V
Battery 1: charged, 100%
Thermal 1: ok, 49.0 degrees C
AC Adapter 1: on-line


Esta vez se trata de un portátil con la batería totalmente cargada, enchufado a la corriente eléctrica y a una temperatura de 49º

  • Reducir el uso de procesador
La manera más fácil y rápida de bajar la temperatura es reducir la carga del procesador, para ello intentaremos no ejecutar procesos que no necesitamos y descargar todos los procesos que no necesitemos.

Para saber qué procesos quitar puedes consultar los artículos Optimizar el arranque (III) Gnome y Optimizar el arranque (II) bum

  • Reducir la frecuencia del procesador
La mayoría de procesadores modernos pueden funcionar a diferentes frecuencias, a mayor frecuencia más disipación de calor. Si el procesador está a más de 60º podemos forzar el uso de una frecuencia menor (evidentemente también bajará el rendimiento) y veremos como rápidamente baja la temperatura.

Esta frecuencia se puede controlar con el comando cpufreq-selector. Un ejemplo:
$ sudo cpufreq-selector --cpu=0 --governor="powersave" --frequency=1000000

Pone el primer procesador en modo ahorro y fija la frecuencia de trabajo a 1Ghz. Para saber más sobre el uso de este comando podeis leer el man cpufreq-selector

Una manera aun más sencilla es usar el applet Monitor de frecuencia de la Cpu en el panel de Gnome:

Boton derecho sobre el panel - Añadir al panel - Monitor de frecuencia de la CPU

Por defecto el applet sólo muestra la configuración actual pero no permite cambiarla, para eso es necesario reconfigurar el paquete con la orden:
$ sudo dpkg-reconfigure gnome-applets

Nos preguntará si queremos que el applet cpufreq-selector se debe ejecutar con permisos de root, y le diremos que Sí. A partir de ese momento podemos gestionar la frecuencia de trabajo y la política de gestión de la CPU haciendo clic con el botón izquierdo en el applet.

  • Reducir el voltaje del procesador
A parte de manipular la frecuencia de trabajo de la(s) CPU(s) también podemos modificar el voltaje que se sumistra al procesador. A menor voltaje menos calor se genera. Esto no reduce el rendimiento del procesador pero si lo reducimos demasiado empezarán a aparecer fallos o directamente se apagará el sistema.

Existe un rango de voltajes al que un procesador puede funcionar, el fabricante nos dirá cual es el óptimo, pero podemos reducirlo para "enfriar" el sistema. La mayoría de BIOS permiten modificar este dato, lo iremos bajando poco a poco comprobando que no aparecen errores ni se apaga el sistema. En caso de producirse algun error volveremos a subir el voltaje.

La BIOS además nos permite controlar muchos otros parámetros como la frecuencia y voltaje de trabajo de la memoria, velocidad de los ventiladores, temperaturas máximas permitidas... os recomiendo leer a fondo el manual de vuestra placa base.

Aquí os dejo un par de pantallazos de la configuración de la BIOS para estos temas (disculpad la mala calidad de las imágenes pero no he encontrado ninguna manera de capturar la pantalla de la BIOS):


Configuración de frecuencia de CPU

Configuración de voltaje de la CPU y la memoria

  • Otros trucos
Comprar un disipador/ventilador mejor
Instalar un segundo ventilador (la mayoría de placas base tienen más de un conector para ventiladores)
Separa el ordenador de la pared (favorece la ventilación)
Mantén ventiladores y rejillas de ventilación limpias y libres de polvo
Informate bien de las opciones de ahorro de energía y control voltage de tu BIOS

  • Más información
En las páginas del manual de los comandos sensors, cpufreq-selector, acpi
Guía Ubuntu

Agradecimientos especiales a JTRIP y Tasslehof del canal #ubuntu de irc.irc-hispano.org.

23 jun. 2008

Usar el nuevo sistema de ficheros ext4 en Ubuntu

Ext4 es la cuarta revisión del sistema de ficheros básico de linux. Fue introducido por Andrew Morton en la rama del kernel 2.6 a finales del 2006, es posible que aparezca como opción en Ubuntu 8.10, pero por el momento tendremos que compilar un kernel manualmente para poder usarlo, sus puntos fuertes son:
  • Journaling (que ya estaba presente en ext3)
  • Extent: reduce aun más la fragmentación de la información,
  • Tamaño máximo de archivo 1 exabyte
  • Tamaño máximo del sistema de ficheros 1 exabyte
  • Compatibilidad con ext3
  • Mejora en el rendimiento respecto a ext3
Sus principales desventajas (por el momento) son:
  • Grub no puede arrancar una partición ext4
  • El kernel de Ubuntu no lleva soporte por defecto
  • Extent es incompatible con ext3
  • Sigue en estado experimental
Empezaremos por compilar el kernel 2.6.25 activando las opciones referentes a ext4 (si no sabes como hacerlo consulta el artículo Compilar el kernel (2.6.25)


Dentro del menú de configuración del kernel vamos al apartado File systems y ahi nos aseguramos de activar las opciones referentes al formato ext4 ya sea como módulo o integrado en el kernel. Acabamos de compilar el kernel, modificamos el grub y arrancamos con él.

Debemos actualizar las herramientas de gestión de sistemas de ficheros para que soporten ext4:
$ wget -c
ftp://ftp.kernel.org/pub/linux/kernel/people/tytso/e2fsprogs-interim/e2fsprogs-1.39-tyt3/e2fsprogs-1.39-tyt3.tar.bz2
$ tar xvfj e2fsprogs-1.39-tyt3.tar.bz2 && cd e2fsprogs-1.39-tyt3
$ sudo aptitude install texinfo
$ ./configure --prefix=/usr/local/ext4 && make && sudo make install


Nota: el prefijo /usr/local/ext4/ es para no sobreescribir las herramientas actualmente instaladas en el sistema

Es recomendable crear una particion nueva para las pruebas, en mi caso usaré /dev/sda5 para no poner en peligro la integridad de mis datos.

Crear una partición ext4:
$ sudo mkfs.ext3 -E test_fs /dev/sda5

Convertir una particion ext3 a ext4:
$ sudo debugfs -w /dev/sda5
debugfs 1.40.5 (27-Jan-2008)
debugfs: set_super_value s_flags 4
debugfs: quit


Revisar la partición:
$ sudo /usr/local/ext4/sbin/e2fsck -vf /dev/sda5

Montar la partición:
$ sudo mount -t ext4dev -o extents /dev/sda5 /media/sda5

Comprobamos que todo ha ido bien y ya estamos listos para usar el nuevo sistema de ficheros:
$ mount | grep ext4
/dev/sda5 on /media type ext4dev (rw,extents)


Más información en:
http://en.wikipedia.org/wiki/Ext4
http://en.wikipedia.org/wiki/Extent_(file_systems)
http://ubuntuforums.org/showthread.php?t=621814

16 jun. 2008

Compilar el kernel (2.6.25)

Compilar el kernel es algo que no está al alcance de todos, pero en ocasiones es necesario bien para activar una nueva característica que necesitamos, modificar algun parámetro existente, optimizar el rendimiento o, como en mi caso, simplemente por aprender.

Empezaremos descargando una versión actual de las fuentes del kernel (en este caso utilizaremos la última versión disponible que es la 2.6.25) y lo descomprimimos con la siguiente órden:

$ wget -c ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.25.tar.bz2
$ tar xvfj linux-2.6.25.tar.bz2 && cd linux-2.6.25


Si no lo hemos hecho aun, necesitaremos instalar algunos paquetes para poder compilar:
$ sudo aptitude install build-essential libncurses-dev

Usaremos la configuración del kernel actual como base para la configuración del nuevo:
$ cp /boot/config-`uname -r` ~/linux-2.6.25/.config

Ahora lanzaremos el menu de configuración del kernel:
$ cd ~/linux-2.6.25/ && make menuconfig


Nota: si teneis errores diciendo que falta alguna libreria, compilador o utilidad de desarrollo, la instalais y volveis a lanzar el comando.

Nota: existen varios tipos de menús de configuración del kernel, tanto gráficos como en modo texto. En el archivo README del kernel teneis una explicación más detallada.

No voy a alargarme aquí explicando todas las pantallas y opciones pero os recomiendo que os tomeis vuestro tiempo, leais la ayuda y ajusteis al máximo las opciones a vuestro sistema. Un buen consejo es que si no sabemos lo que hace una opción es mejor no tocarla.

Una vez repasadas todas las pantallas y marcadas las opciones deseadas salimos del menu y compilamos el kernel con:
$ make

Nota: este proceso puede llegar a ser muy largo, en mi sistema tardó unos 60 minutos en compilar un kernel con la configuración por defecto, que incluye 1741 módulos!

Y lo instalamos con:
$ sudo make install modules_install

Generamos un archivo initrd con:
$ sudo update-initramfs -c -k 2.6.25

Los módulos quedarán instalados en /lib/modules/2.6.25, el kernel y el archivo initrd en /boot/vmlinuz-2.6.25 y /boot/initrd.img-2.6.25 respectivamente.

Ya sólo nos queda añadir una entrada en el menú del grub para el nuevo kernel (recomiendo duplicar la entrada que tengas para Ubuntu cambiando el número del archivo del kernel y la linea initrd por los nuevos), en mi caso por ejemplo quedó así:

[...]
title Ubuntu hardy 8.04
root (hd0,1)
kernel /boot/vmlinuz-2.6.24-16-generic root=/dev/sda2 ro splash locale=es_ES vga=792
initrd /boot/initrd.img-2.6.24-16-generic
quiet

title Ubuntu hardy 8.04 - Kernel 2.6.25
root (hd0,1)
kernel /boot/vmlinuz-2.6.25 root=/dev/sda2 ro splash locale=es_ES vga=792
initrd /boot/initrd.img-2.6.25
quiet
[...]


Reiniciamos y seleccionamos el nuevo kernel, si todo ha ido bien ejecutamos uname -r y veremos algo así:

$ uname -r
2.6.25


El principal problema que he encontrado es que tanto los drivers restringidos como el virtualbox y algunos otros programas dependen de la versión del kernel instalado y habría que reinstalarlos para que funcionasen. Mi recomendación es seguir usando el kernel de la distribución y dejar la versión 2.6.25 para pruebas y necesidades especiales.

9 jun. 2008

Mil maneras de instalar el driver de nvidia

La aceleración gráfica 3D de las tarjetas nvidia es una de las más potentes y más atractivas en linux, pero su instalación puede llegar a ser un verdadero problema para los novatos y no tan novatos. Por eso he intentado hacer un resumen de todas las posibles técnicas de instalación del driver, si aun no habeis conseguido activar correctamente la aceleración 3D de vuestra nvidia seguro que alguno de estos métodos os da la solución:

  • Controladores de hardware
Sistema - Administración - Controladores de hardware

Si como en la imagen vemos aquí nuestra nvidia sólo necesitamos pulsar en el checkbox correspondiente de la columna Habilitado y el sistema nos pedirá confirmación para descargar e instalar el driver de nvidia.

Al finalizar nos pedirá reiniciar el sistema (una parte del driver es un módulo del kernel, por eso es necesario reiniciar el sistema entero) y si ha habido suerte ya tenemos el driver instalado y activado.

Si esto no funciona podemos volver a entrar en Sistema - Administración - Controladores de hardware y deshabilitar el controlador de nvidia.

  • Envy-ng
Este programa nos permitirá instalar los drivers de nvidia (y también los de ati) de una manera sencilla.

Instalaremos y ejecutaremos el programa con la orden:
$ sudo aptitude install envyng-gtk && sudo envyng-gtk (usuarios de Gnome)
$ sudo aptitude install envyng-qt && sudo envyng-qt (usuarios de KDE)


La mayor ventaja de este programa es que nos permite elegir con exactitud la versión del driver que queremos instalar (característica especialmente útil para aquellos modelos de nvidia no soportados por la última versión del driver)

El proceso es muy sencillo, seleccionamos instalación automática o manual aplicamos los cambios y reiniciamos el sistema.

Nota: Personalmente no recomiendo el uso de este tipo de programas (otro ejemplo es automatix) ya que pueden llegar a dañar el sistema de paquetes.

Para saber más sobre este programa visitad su página:
http://albertomilone.com/nvidia_scripts1.html

Si algo saliese mal podemos usar el mismo programa para desinstalar el driver.

  • aptitude / apt-get / synaptic
También podemos usar directamente el gestor de paquetes para instalar el driver, usaré aptitude para este ejemplo, pero podeis usar el que querais.

Instalar el driver más nuevo (169.12)
$ sudo aptitude install nvidia-glx-new

Instalar el driver anterior (96.43 usado por los chipsets GeForce 4)
$ sudo aptitude install nvidia-glx

Instalar el driver legacy (71.86 usado por los modelos más antiguos de nvidia como TNT, TNT2, TNT Ultra, GeForce y GeForce2)
$ sudo aptitude install nvidia-glx-legacy

Además podemos instalar el programa de control de la nvidia, que nos permitirá configurar todos los aspectos del dispositivo
$ sudo aptitude install nvidia-settings


Finalmente tendremos que editar el archivo de configuración de las X para indicarle que use el nuevo driver:
$ sudo gedit /etc/X11/xorg.conf

En la sección Device reemplazaremos
Driver "nv"
por
Driver "nvidia"

Guardamos, reiniciamos y si todo ha ido bien ya tenemos entorno gráfico. En caso contrario desinstalaremos el driver con la órden:
$ sudo aptitude purge nvidia-glx-new (o el paquete que hayamos instalado)

  • Driver oficial de nvidia
Vamos a probar a instalar ahora el driver directamente desde la web de nvidia, descargamos el driver:
$ wget -c -q http://es.download.nvidia.com/XFree86/Linux-x86/169.12/NVIDIA-Linux-x86-169.12-pkg1.run

Necesitaremos la maquinaria de compilacion y las cabeceras del kernel, si no los tenemos ya los instalamos con:
$ sudo aptitude install build-essential linux-headers

Instalamos el driver:
$ sudo sh NVIDIA-Linux-x86-169.12-pkg1.run -a --no-x-check

El asistente nos guiará durante el proceso de instalación descargando y compilando lo que necesite, finalmente modificará el archivo /etc/X11/xorg.conf y ya solo nos quedará reiniciar el sistema.

En caso de que este método nos fallase desinstalaremos el driver con:
$ sudo sh NVIDIA-Linux-x86-169.12-pkg1.run --uninstall

  • Drivers alternativos
El proyecto Nouveau intenta crear un driver totalmente libre para los chipsets nvidia, de momento está en desarrollo pero ya tiene soporte para la aceleración 2D (según ellos mejor que el propio driver oficial) y se está trabajando en la aceleración 3D.

No es aún una opción muy recomendada a menos que querais participar en el desarrollo o que todas las demás opciones os hayan fallado.

Podeis encontrar el driver y toda la información referente a la instalación y desarrollo en: http://nouveau.freedesktop.org/

  • Comprobación
La manera más sencilla de ver si el driver ha sido correctamente instalado y tenemos aceleración 3D es ejecutar la órden:
$ glxinfo | grep -i render

Si el resultado es algo así:
direct rendering: Yes
OpenGL renderer string: GeForce 8600 GT/PCI/SSE2
GL_NV_depth_buffer_float, GL_NV_conditional_render, GL_NV_depth_clamp,
GL_NV_vertex_program3, GL_NVX_conditional_render, GL_SGIS_generate_mipmap,


significa que todo ha ido bien y ya podemos empezar a usar software 3D.

Si el resultado es algo así:
Error: couldn't find RGB GLX visual
Xlib: extension "GLX" missing on display ":0.0".
Xlib: extension "GLX" missing on display ":0.0".


significa que algo ha fallado, tendremos que deshacer la instalación del driver y probar con otro método de instalación.

  • Solución de errores

Es posible que tras la instalación del driver 3D al reiniciar el entorno gráfico se nos quede la pantalla en negro o que aparezca un mensaje de error indicándonos que el sistema gráfico se está ejecutando en un modo de baja resolución (y lo veremos todo enorme).

En tal caso podemos restaurar el sistema gráfico tal como lo teníamos antes de instalar el driver 3D, para ello entraremos en modo texto pulsando la combinación de teclas Ctrl+Alt+F1, con lo que accederemos a una consola de texto, nos identificamos con nuestro nombre de usuario y contraseña habitual y ejecutamos la orden:
$ sudo nano /etc/X11/xorg.conf

Nota: recordad que las mayúsculas cuentan!

Esto abrira el archivo de configuración del entorno gráfico en el editor de texto, buscaremos la cadena Driver dentro de la seccion Device, deberiamos ver algo asi:
Driver "nvidia"

Lo cambiamos por:
Driver "nv"

Guardamos con Ctrl+o, salimos con Ctrl+x, reiniciamos y ya tenemos un sistema grafico en funcionamiento (aunque sin aceleración) listo para intentar otro método de instalación.

Más información en:
http://www.nvidia.com/linux
http://www.guia-ubuntu.org/index.php?title=Aceleraci%C3%B3n_gr%C3%A1fica_NVIDIA

2 jun. 2008

Administración del firewall con ufw

El Uncomplicated FireWall (ufw) es una solución de administración de firewall sencilla, sin necesidad de entorno gráfico y con plena integración en el sistema de paquetes.

Las principales ventajas de este nuevo sistema son:
  • Sintaxis fácil e intuitiva
  • Integración con el sistema de paquetes
La integración con el sistema de paquetes es una buena noticia, pues hasta ahora, si por ejemplo instalabas apache (servidor web) tenías que encargarte manualmente de revisar la configuración de la red y abrir los puertos necesarios. Con ufw este proceso será automático y transparente para el usuario.

Si no lo tenemos instalado aun lo haremos con la orden:
$ sudo aptitude install ufw

Vamos a montar un sencillo firewall de seguridad en el que cerraremos todo el tráfico, excepto los servicios que queramos habilitar.

Iniciar el firewall:
  • Iniciar el firewall: $ sudo ufw enable
  • Establecer la política por defecto (todo cerrado): $ sudo ufw default deny
  • Guardar un registro: $ sudo ufw logging on
  • Mostrar el estado del firewall: $ sudo ufw status

Permitir ciertos servicios:
  • Habilitar el servicio http (apache) para todos: $ sudo ufw allow http
  • Habilitar el servicio ftp en la red interna: $ sudo ufw allow from 192.168.0.0/16 proto tcp to any port ftp
  • Habilitar la administración remota (ssh) para la IP 214.214.214.214: $ sudo ufw allow from 214.214.214.214 proto tcp to any port ssh

Otras funciones:
  • Eliminar una regla: $ sudo ufw delete allow 80
  • Abrir puerto 4662 para emule: $ sudo ufw allow 4662
  • Abrir puerto 6891 para torrent: $ sudo ufw allow 6891

Guardar el estado del firewall:
  • Las reglas definidas por el usuario se guardan de manera automática en el archivo /var/lib/ufw/user.rules
  • El arranque automático de utf durante el boot se puede activar/desactivar en el archivo /usr/share/ufw/ufw.conf definiendo la variable ENABLED a "yes" o "no", por ejemplo, así quedaría el archivo para que el firewall se active automáticamente en cada arranque:
# /etc/ufw/ufw.conf
#

# set to yes to start on boot
ENABLED=yes


Más información en la página del manual de ufw y también:
https://wiki.ubuntu.com/UbuntuFirewall
https://launchpad.net/ufw

Existe además un proyecto para crear una interfaz gráfica (aun más sencillo de usar) llamado gufw, podeis encontrar más información y el programa en:
https://launchpad.net/gufw/