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

miércoles, 9 de noviembre de 2011

Fiabilidad

Estaba cerrando algunas pestañas del editor de textos (gedit) que utilizo en mi puesto de trabajo (Ubuntu 10.04 LTS), cuando me ha aparecido un mensaje que seguramente no es muy habitual.

Mejor dejo una captura de pantalla...


Robustas y fiables. Así deben de ser las herramientas de trabajo. De este modo, uno se puede centrar en hacer el trabajo y no en mantener la herramienta. Leer más...

viernes, 17 de septiembre de 2010

Square: Soporte nativo de 64 bits en Flash

Con fecha 15 de septiembre, en un blog de Adobe se anunciaba la disponibilidad de Flash Player Square: Una versión preliminar del reproductor de Flash, que ofrece como característica más interesante el soporte nativo para arquitecturas de 64 bits.

Podemos encontrar más información acerca de sus características, así como los enlaces para descargarlo en la web de Adobe.

Dado que las instrucciones de instalación para sistemas Linux son más bien escuetas, publico las siguientes instrucciones para aquellos que deseen instalar el reproductor en equipos con Ubuntu.

Instalación de Flash Player "Square" en Ubuntu 10.04 x86_64


Si echamos un vistazo al sistema de ficheros de nuestro Ubuntu buscando la ubicación del reproductor de flash, veremos referencias al mismo en múltiples sitios. Además podremos observar que la instalación se ha realizado con el sistema de alternatives, del cual nos vamos a beneficiar instalando la versión "square" sin necesidad de desinstalar la versión estable que tengamos alcualmente. Este es precisamente el objetivo del sistema alternatives: permitir que convivan diferentes alternativas que ofrecen un mismo servicio.

En el sistema de ficheros, podemos observar las siguientes entradas relativas al reproductor de flash (Estamos hablando de un sistema con una distribución de 64 bits):

En primer lugar, la librería que contiene la versión 32 bits del reproductor:
/usr/lib/flashplugin-installer/libflashplayer.so

Por otra parte, una entrada para poder ejecutar el reproductor mediante un wrapper (envoltorio) que permite la ejecución de código de 32 bits en entornos de 64 bits:
/var/lib/flashplugin-installer/npwrapper.libflashplayer.so

Y por último, las entradas para diversas aplicaciones que pueden requerir el reproductor de flash:
/usr/lib/iceape/plugins/flashplugin-alternative.so
/usr/lib/iceweasel/plugins/flashplugin-alternative.so
/usr/lib/firefox/plugins/flashplugin-alternative.so
/usr/lib/midbrowser/plugins/flashplugin-alternative.so
/usr/lib/mozilla/plugins/flashplugin-alternative.so
/usr/lib/xulrunner-addons/plugins/flashplugin-alternative.so
/usr/lib/xulrunner/plugins/flashplugin-alternative.so


Observando estas entradas, vemos que no son más que enlaces simbólicos al directorio donde se almacena la configuración de la utilidad alternatives:

/etc/alternatives/iceape-flashplugin
/etc/alternatives/iceweasel-flashplugin
/etc/alternatives/firefox-flashplugin
/etc/alternatives/midbrowser-flashplugin
/etc/alternatives/mozilla-flashplugin
/etc/alternatives/xulrunner-addons-flashplugin
/etc/alternatives/xulrunner-flashplugin


A su vez, todas estas entradas son enlaces simbólicos a un único punto: La librería preparada para ser ejecutada a través del wrapper que comentabamos anteriormente:

/var/lib/flashplugin-installer/npwrapper.libflashplayer.so

Lo que vamos a hacer es respetar toda esta instalación y añadir como nueva alternativa la versión square. Esto evitará que tengamos que desinstalar la versión que tengamos actualmente. Además permitirá que en caso de aparecer problemas o resultar inestable, podamos volver atrás de manera sencilla y que el sistema siga viendo y actualizando la versión estable.

Instalación:

Nos dirigimos a la página indicada anteriormente y descargamos la versión de 64 bits para Linux:

Creamos un directorio de instalación (con un nombre y ubicación consistente con la versión estable) para dejar en éste la nueva versión:


sudo mkdir /usr/lib/flashplugin-square
cd /usr/lib/flashplugin-square
sudo tar -xzf ~/Descargas/flashplayer_square_p1_64bit_linux_091510.tar.gz

A continuación instalamos las alternativas para aquellos programas en los que deseemos utilizar el nuevo reproductor. Comentar que Firefox (al menos la versión 3.6.x) no utiliza la entrada firefox, sino la entrada mozilla. Es decir, si únicamente queremos hacer las pruebas en Firefox, bastará con ejecutar el siguiente comando:

sudo update-alternatives --install /usr/lib/mozilla/plugins/flashplugin-alternative.so mozilla-flashplugin /usr/lib/flashplugin-square/libflashplayer.so 60


Si reiniciamos el navegador, veremos que ya tenemos una versión de 64 bits (en particular se trata de la versión 10.2.161.22), que se ejecuta sin ningún tipo de wrapper.

En cualquier momento podemos conmutar entre una y otra versión con el siguiente comando:
sudo update-alternatives --config mozilla-flashplugin


Y por último, si queremos realizar la misma operación con cualquier otro producto que pueda hacer uso del reproductor de flash, basta con repetir estas operaciones para el producto en cuestión:


sudo update-alternatives --install /usr/lib/iceape/plugins/flashplugin-alternative.so iceape-flashplugin /usr/lib/flashplugin-square/libflashplayer.so 60
sudo update-alternatives --install /usr/lib/iceweasel/plugins/flashplugin-alternative.so iceweasel-flashplugin /usr/lib/flashplugin-square/libflashplayer.so 60
sudo update-alternatives --install /usr/lib/firefox/plugins/flashplugin-alternative.so firefox-flashplugin /usr/lib/flashplugin-square/libflashplayer.so 60
sudo update-alternatives --install /usr/lib/midbrowser/plugins/flashplugin-alternative.so midbrowser-flashplugin /usr/lib/flashplugin-square/libflashplayer.so 60
sudo update-alternatives --install /usr/lib/xulrunner-addons/plugins/flashplugin-alternative.so xulrunner-addons-flashplugin /usr/lib/flashplugin-square/libflashplayer.so 60
sudo update-alternatives --install /usr/lib/xulrunner/plugins/flashplugin-alternative.so xulrunner-flashplugin /usr/lib/flashplugin-square/libflashplayer.so 60


Tras haber realizado unas cuantas pruebas los resultados son excelentes: El reproductor es sumamente estable y todo parece funcionar correctamente.

Para quienes deseen probarlo, dejo un enlace a un sitio interesante que puede servir a modo de test (pues indica tasa de FPS así como memoria RAM utilizada).

(English version of the article here)

Actualización (20110117): Modificado el enlace de descarga, para apuntar a la nueva ubicación de Flash Player Square Leer más...

martes, 20 de abril de 2010

Rotación de fotos sin pérdidas en Gnome (Nautilus)

Cada vez son más los modelos de cámaras digitales que incorporan un sensor de posición, capaz de determinar la orientación de la cámara (horizontal o vertical) en el momento de realizar una fotografía.

Conocida la orientación, es fácil registrar en el correspondiente campo EXIF de la foto los datos de la misma, para que así el software de visualización la pueda mostrar con la orientación correcta sin necesidad de ninguna intervención manual.



Dado que hay infinidad de cámaras digitales que no cuentan con este tipo de mecanismos, y que la tarea de rotar fotos se vuelve un poco pesada cuando manejamos series grandes, se ha tratado de preparar una herramienta para facilitar o al menos hacer un poco más llevadera la tarea de orientar correctamente nuestras fotos.

Parece bastante razonable asumir que nadie quiere que sus fotos se degraden, de modo que vamos a efectuar esta reorientación con herramientas que realizan las modificaciones necesarias sin necesidad de aplicar de nuevo algoritmo de encodado (nos referimos a imágenes en formato Jpeg, el cual implica una compresión con pérdidas). En Linux contamos con dos utilidades que pueden realizar este tipo de tareas sin afectar a la calidad de nuestras fotografías: jpegtran y exiftran.

Para quienes utilizamos Ubuntu, la primera de estas utilidades parece la más indicada, ya que aunque ambas están incluida en los repositorios oficiales, sólo jpegtran cuenta con soporte de Canonical. Sin embargo, exiftran parece más recomendable, ya que a juzgar por la descripción, realiza las modificaciones de una forma más consistente, dejando la información contenida en los campos EXIF acorde con la nueva orientación que hemos dado a la fotografía.

Lo que se plantea en este artículo es lo siguiente: Preparar unos scripts para realizar la rotación de las imágenes e integrarlos en Nautilus para que su uso sea cómodo y sencillo para usuarios de cualquier nivel.

En primer lugar, instalaremos el paquete exiftran, bien desde Synaptic o desde la línea de comandos:

$ sudo apt-get install exiftran

A continuación preparamos los scripts que se ocuparán de realizar la rotación. Para integrarlos en Nautilus, deberán de estar en la ubicación adecuada: ~/.gnome2/nautilus-scripts

Dado que podemos tener otros scripts, puede resultar conveniente agruparlos en un nuevo directorio:

$ mkdir ~/.gnome2/nautilus-scripts/jpeg-ls

A continuación creamos es script con nuestro editor favorito, p.ej:

$ vi ~/.gnome2/nautilus-scripts/jpeg-ls/lrotate


#!/bin/bash

for URI in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS;
do
MIME_TYPE=`file --mime-type -bp $URI`;
if [ $MIME_TYPE == "image/jpeg" ]
then
exiftran -2i $URI
fi
done


Este primer script realiza la rotación a la izquierda (lrotate: Left Rotate), y del mismo modo creamos el script rrotate, en el cual simplemente cambiamos un parámetro de la llamada al comando exiftran:


exiftran -9i $URI


El script únicamente se ejecuta sobre los ficheros seleccionados cuyo mime-type sea image/jpeg Una vez creados los scripts, basta con darles permisos de ejecución

$ chmod +x ~/.gnome2/nautilus-scripts/jpeg-ls/?rotate

Y ya tenemos un menú en Nautilus para rotar nuestras fotos de manera muy simple. Para acceder al menú, se seleccionan las fotos a rotar y con el botón secundario del ratón, en la categoría scripts, se indica el script a aplicar. Con hacer esto la fotografía estará ya rotada, aunque Nautilus no siempre es consciente de los cambios y en ocasiones es necesario forzar un refresco para que se muestren las nuevas miniaturas, ya correctamente orientadas. Leer más...

domingo, 28 de febrero de 2010

Novedades en Ubuntu 10.04

El pasado día 25 de febrero se publicó la versión alfa 3 de Ubuntu 10.04. En ella ya podemos ir viendo algunos de los cambios que nos vamos a encontrar cuando, dentro de algo menos de dos meses, se publique la versión final.


Arrancamos el ya veterano Asus Eee PC 701 con dicha versión del sistema operativo. Observamos que éste incluye la versión 2.6.32 del kernel, así como Gnome 2.29


En los menús del sistema (sistema → preferencias) encontramos opciones para gestionar las preferencias de mensajería y VoIP


Con respecto al navegador, se incluye Firefox 3.6, en el que podemos observar que el buscador predeterminado ha cambiado: Google ha sido reemplazado por Yahoo. No obstante, podemos fácilmente elegir entre varios buscadores, tal y como venía sucediendo hasta ahora.


Como anécdota, comentar que entre los juegos se incluye Gbrainy: Un juego de entrenamiento mental similar a los que se han popularizado con alguna consola portátil.


El resto del software, también se ha actualizado. Por ejemplo, se incluye la última versión disponible actualmente (3.2) de la suite ofimática OpenOffice.org.


Quizás el cambio más destacable en cuanto a software incluido esté en el apartado de imagen y multimedia: Se ha eliminado GIMP y se ha incluido un editor de video: PiTiVi


Otro software que llama la atención es onBoard: Un teclado en la pantalla, relacionado con cuestiones de accesibilidad. Me quedo con la duda de si será utilizable desde una pantalla táctil.


Mención especial merece la ya de por sí valiosa utilidad de discos. Dicha utilidad ha sido ampliada y mejorada, de manera que se convierte en un punto de entrada rápido para casi cualquier operación o test que queramos hacer a nuestros dispositivos de almacenamiento de datos. Como comentario, indicar que estas últimas pantallas se han capturado en un equipo Asus Eee PC 1005HA (equipado con un procesador Intel Atom N270).


Un último comentario relacionado con multimedia y codecs: El sistema, en su versión actual no es capaz de reproducir videos. Tras haber probado con diferentes formatos (h264, xvid, mpeg) observamos que el sistema ni siquiera puede obtener unos codecs mpeg1. Suponemos que es algo propio de la versión alfa y esperamos no encontrarnos en la versión final con limitaciones o restricciones en cuanto a los codecs disponibles. Leer más...

lunes, 22 de junio de 2009

Multiterminal en Ubuntu 9.04

El concepto de multiterminal es una particular configuración de un equipo informático de tal modo que permite que el equipo pueda ser utilizado por más de una persona simultáneamente. Dado que el hardware actual tiene sobrada potencia para los requerimientos que pueda exigir la gestión de múltiples escritorios, esta configuración es especialmente interesante en entornos de tipo de trabajo de oficina. La principal ventaja: el ahorro, no sólo en energía sino también en costes de mantenimiento.

Hasta hace algún tiempo, este tipo de configuraciones no eran sencillas y requerían modificar, recompilar o parchear diferentes partes del sistema. En las versiones más recientes, el kernel de Linux ya incluye lo necesario para poder tratar por separado los eventos provenientes p.ej. de diferentes teclados. De esta manera, actualmente se puede conseguir una configuración multiterminal simplemente instalando algún paquete adicional y modificando algún fichero de configuración.

En anteriores ocasiones he preparado tutoriales para configuraciones multiterminal en Ubuntu 6.06 y 8.04, pero esta es la primera ocasión en que publico el tutorial también en castellano.

La configuración es muy similar a la de la versión 8.04, con la diferencia de que algunos componentes de software han sido actualizados consiguiendo así alguna mejora con respecto a versiones anteriores. No obstante, continúa habiendo algunos problemas.





El equipo es el mismo que se utilizó en la anterior versión:
Pentium 4 a 3GHz, con 512MB de RAM y un disco duro de 80GB. La tarjeta de video es una ATI Radeon X300 PCIe de Gigabyte con dos salidas (VGA y DVI). En la salida DVI se utiliza un adaptador VGA de modo que finalmente tenemos dos monitores VGA analógicos en el sistema. Los monitores son pantallas convencionales LCD/TFT con una resolución de 1280x1024.

1.- En primer lugar, instalamos Ubuntu 9.04 en el ordenador. Lo hacemos utilizando un sistema "live" (CD/DVD o USB). Dado que actualmente la mayor parte de los equipos soportan arranque desde USB, recomedamos hacerlo con un USB-live, dado que el proceso de instalación será mucho más rápido que si lo hacemos desde un CD o DVD.

2.- A continuación, actualizamos el sistema para tener los últimos paquetes disponibles. Lo podemos hacer o bien con las herramientas gráficas (Gestor de Actualizaciones / Synaptic) o bien utilizando la línea de comandos desde un terminal:


$ sudo apt-get update


3.- Posteriormente, instalamos unos paquetes adicionales (xserver-xephyr y wmctrl). Estos paquetes no vienen incluidos en la instalación por defecto, pero podemos encontrarlos en los repositorios oficiales, de modo que su instalación es muy sencilla. Dichos paquetes son necesarios para conseguir obtener la configuración multiterminal que estamos buscando.


$ sudo apt-get install xserver-xephyr wmctrl


Antes de comenzar con las modificaciones particulares de la configuración multiterminal, es recomendable hacer los ajustes y configuración necesarios para el escenario de trabajo particular de cada usuario (configuración de red, creación de usuarios, etc). Algunas herramientas y utilidades de Gnome no funcionan al trabajar con múltiples sesiones simultáneas. Al detectar el sistema operativo múltiples sesiones, no es posible generar los necesarios ficheros de bloqueo requeridos por las herramientas de configuración.

Es muy recomendable conservar una copia de los ficheros de configuración en su estado inicial (/etc/X11/xorg.conf y /etc/gdm/gdm.conf). Estos ficheros serán necesarios si el usuario desea volver a la configuración inicial (monousuario) del equipo.

Una vez realizadas estas tareas previas de configuración inicial, procedemos a realizar la configuración específica del equipo multiterminal.



Inicialmente, tras la configuración por defecto, el sistema se inicia con las dos pantallas en modo "clon". si examinamos la salida del comando xrandr podremos ver los detalles de nuestra actual configuración. En nuestro caso particular, obtenemos lo siguiente:


$ xrandr -q
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1200
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 60.0
832x624 74.6
800x600 75.0 60.3
640x480 75.0 59.9
720x400 70.1
DVI-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3
640x480 75.0 72.8 59.9
720x400 70.1
S-video disconnected (normal left inverted right x axis y axis)


El siguiente paso es modificar /etc/X11/xorg.conf para indicar cómo obtener un "escritorio extendido". En caso de tener dudas sobre este tema, en el wiki de ubuntu se puede encontrar información adicional para configurar y definir manualmente sistemas multipantalla.

En las últimas versiones de Linux, algunos aspectos relacionados con la gestión de dispositivos están siendo modificados y se gestionan desde diferentes partes del sistema, como hal y udev. Vemos que ya no es necesario indicar nada relacionado con ratón y teclado en el fichero xorg.conf

Tras haber hecho nuestra copia del fichero xorg.conf inical, lo modificamos para describir nuestra configuración con dos monitores. Incluimos también algunas opciones convenientes (las indicadas en la sección "ServerFlags") para un sistema multiterminal.


Section "Device"
Identifier "Card0"
BoardName "ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)]"
Driver "ati"
BusID "PCI:1:0:0"
Option "Monitor-VGA-0" "Mon-VGA"
Option "Monitor-DVI-0" "Mon-DVI"
EndSection

Section "Monitor"
Identifier "Mon-VGA"
Option "DPMS"
EndSection

Section "Monitor"
Identifier "Mon-DVI"
Option "DPMS"
Option "Below" "Mon-VGA"
EndSection

Section "Screen"
Identifier "Screen-base"
Device "Card0"
Monitor "Mon-VGA"
DefaultDepth 24
Subsection "Display"
Depth 24
Modes "1280x1024"
Virtual 1280 2048
EndSubSection
EndSection

Section "ServerFlags"
# Even if mouse detection fails, X will start
Option "AllowMouseOpenFail" "yes"

# VT switching is disabled
Option "DontVTSwitch" "yes"

# X restart (Ctrl+Alt+Backspace) is disabled
Option "DontZap" "yes"
EndSection


En esta ocasión hemos elegido una distribución vertical de los monitores. Ha sido únicamente como prueba para ver si la aceleración 3D funciona al mantener las dimensiones de la pantalla virtual menores (o iguales) que un cuadrado de 2048 pixels de lado. Si el usuario prefiere una distribución horizontal, basta con utilizar leftOf o rightOf en lugar de below, en la sección correspondiente al segundo monitor. Además, se deberá de ajustar el tamaño del escritorio virtual al requerido en función de la distribución deseada.

Tras haber hecho estos cambios, si reiniciamos el servidor X veremos un escritorio ocupando los dos monitores en vertical y con estas características:


$ xrandr -q
Screen 0: minimum 320 x 200, current 1280 x 2048, maximum 1280 x 2048
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 60.0
832x624 74.6
800x600 75.0 60.3
640x480 75.0 59.9
720x400 70.1
DVI-0 connected 1280x1024+0+1024 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.0*+ 75.0 60.0*
1152x864 75.0
1024x768 75.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3
640x480 75.0 72.8 59.9
720x400 70.1
S-video disconnected (normal left inverted right x axis y axis)


Tras haber modificado el fichero xorg.conf y teniendo ya un escritorio extendido que cubre los dos monitores (tanto si utuilizamos una distribución vertical como una horizontal) el siguiente paso es configurar gdm para lanzar dos sesiones Xephyr, una para cada puesto.

Previamente, tenemos que obtener información acerca de los eventos de entrada (los dos teclados y ratones) del sistema.


$ ls -la /dev/input/by-path/ | grep event | grep kbd
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 pci-0000:00:1d.2-usb-0:2:1.0-event-kbd -> ../event5
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 platform-i8042-serio-0-event-kbd -> ../event3

$ ls -la /dev/input/by-path/ | grep event | grep mouse
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 pci-0000:00:1d.2-usb-0:1:1.0-event-mouse -> ../event4
lrwxrwxrwx 1 root root 9 2009-06-18 13:11 platform-i8042-serio-1-event-mouse -> ../event8


En nuestro caso, tenemos una pareja de teclado y ratón conectados por puerto PS2 para uno de los puestos, y para el segundo una pareja de teclado y ratón USB. Los valores que obtengamos aquí serán usados posteriormente para configurar los dispositivos de entrada que corresponden a cada puesto.

A continuación se crea un lanzador con el objeto de ejecutar Xephyr con los parámetros adecuados y relacionando a cada uno con sus eventos de entrada. Para lograr esto, creamos un fichero que se utilizará a modo de script de lanzamiento. podemos nombrar y crear el fichero del modo que nos parezca más conveniente. En nuestro caso, lo creamos como /usr/sbin/Xephyr-path.sh

Se escoge un editor (vi, gedit, ...) para crear el fichero en cuestión, sin olvidar que tiene que tener permisos para poder ser ejecutado por root (el propietario del fichero).


$ sudo gedit /usr/sbin/Xephyr-path.sh
$ sudo chmod 744 /usr/sbin/Xephyr-path.sh


El fichero en cuestión tendrña un contenido similar a esto (cambiando el parámetro xkblayout en función del lenguaje de teclado del usuario):


$ cat /usr/sbin/Xephyr-path.sh



#!/bin/bash

# 200906 - josean
# http://netpatia.blogspot.com/

trap "" usr1

XEPHYR=/usr/bin/Xephyr
DISPLAY=:0
XAUTHORITY=/var/lib/gdm/:0.Xauth

args=()

while [ ! -z "$1" ]; do
if [[ "$1" == "-kbdpath" ]]; then
shift
if [ ! -z "$1" ]; then
args=("${args[@]}" "-keybd")
args=("${args[@]}" "evdev,,device=/dev/input/by-path/$1,xkbrules=xorg,xkbmodel=evdev,xkblayout=es")
fi
elif [[ "$1" == "-mousepath" ]]; then
shift
if [ ! -z "$1" ]; then
args=("${args[@]}" "-mouse")
args=("${args[@]}" "evdev,,device=/dev/input/by-path/$1")
fi
else
args=("${args[@]}" "$1")
# echo "+++ args $1 +++" >> /tmp/logXephyr
fi
shift
done

# Next line is just to create a log file with the invocation parameters, for debug purposes
# echo $XEPHYR -ac "${args[@]}" >> /tmp/logXephyr
exec $XEPHYR -ac "${args[@]}"


Tras haber creado este script, continuamos con las modificaciones en el fichero /etc/gdm/gdm.conf

En la sección [servers] de gdm.conf comentamos las reglas correspondientes a la distribución inicial y definimos lo necesario para la nueva distribución. Modificamos el fichero para lanzar las X de base y dos sesiones Xephyr (una por puesto) ejecutandose sobre las X de base.


# ****************************************************************************

[servers]

# 0=Standard
#
# Means that DISPLAY ":0" will start an X server as defined in the
# [server-Standard] section.

# ****************************************************************************

# Multiseat setup (200906)

0=Xephyr0
1=Xephyr1
2=Xephyr2

[server-Xephyr0]
name=Xephyr0
command=/usr/bin/X -br -dpms -s 0
handled=false
flexible=false

[server-Xephyr1]
name=Xephyr1
command=/usr/sbin/Xephyr-path.sh -br -screen 1280x1024 -kbdpath platform-i8042-serio-0-event-kbd -mousepath platform-i8042-serio-1-event-mouse
handled=true
flexible=false

[server-Xephyr2]
name=Xephyr2
command=/usr/sbin/Xephyr-path.sh -br -screen 1280x1024 -kbdpath pci-0000:00:1d.2-usb-0:2:1.0-event-kbd -mousepath pci-0000:00:1d.2-usb-0:1:1.0-event-mouse
handled=true
flexible=false

# ****************************************************************************


Vemos que éste es el script en e que hay que indicar qué dispositivos de entrada (sus puntos físicos de conexión) son los que corresponden con cada uno de los puestos.

El segundo cambio en el fichero gdm.conf está relacionado con la petición de autentificación. En esta parte hay algunas tareas que todavía es necesario realizar de forma manual.

Nos encontramso con el problema ya conocido de colocar cada sesión Xephyr adecuadamente para que cada usuario vea su sesión en su monitor. La versión actual de Xephyr no soporta el parámetro geometry que incluyen muchas aplicaciones X, de modo que no es posible indicar a Xephyr el lugar en el que se tiene que colocar. Para evitar este problema, creamos un script que será invocado en lugar de hacer una llamada directa al script de petición de identificación para iniciar sesión (greeter).

Este script, invocará una serie de comandos destinados a colocar cada ventana Xephyr en el lugar deseado. Para ello haremos uso de las utilidades xwininfo, wmctrl. con ellas podremos identificar una de las ventanas Xephyr y desplazarla al segundo monitor, de manera que resolvamos el problema de solapamiento entre las ventanas de sesión. Este es el motivo por el que anteriormente instalamos el paquete wmctrl.

En la sección [daemon] de gdm.conf cambiamos la referencia al "greeter" original por una referencia a este nuevo script. El script en cuestión no sólo invocará la petición de identificación, sino que se ocupará de colocar cada ventana Xephyr en su posición correcta:


# ****************************************************************************

[daemon]

# The greeter for attached (non-xdmcp) logins. Change gdmlogin to gdmgreeter
# to get the new graphical greeter.
# Greeter=/usr/lib/gdm/gdmgreeter
Greeter=/usr/sbin/Xephyr-login.sh

# ****************************************************************************


Como hemos indicado, creamos el script responsable de solicitar la identificación (en nuestro caso lo hemos llamado /usr/sbin/Xephyr-login.sh). Este script será invocado por el usuario gdm, de modo que creamos el script como propiedad de dicho usuario, dando únicamente permisos de ejecución por éste.


$ sudo gedit /usr/sbin/Xephyr-login.sh
$ sudo chown gdm:gdm /usr/sbin/Xephyr-login.sh
$ sudo chmod 744 /usr/sbin/Xephyr-login.sh


El script que acabamos de crear debería de tener este aspecto:


$ cat /usr/sbin/Xephyr-login.sh


#!/bin/bash
# /usr/sbin/Xephyr-login.sh

XAUTHORITY=/var/lib/gdm/:0.Xauth
XEP=$(xwininfo -root -children -display :0 | grep "Xephyr on :1" --max-count=1)
echo XEP ${XEP} >> /tmp/logXephyrLogin

# assign values to positional parameters to obtain the id (first parameter) of the Xephyr window
set ${XEP}
DISPLAY=:0 wmctrl -i -r $1 -e 0,0,1024,-1,-1
/usr/lib/gdm/gdmlogin


En nuestro caso, desplazamos en vertical una de las sesiones 1024 pixels (recordamos que nuestra distribución consiste en dos pantallas de 1280x1024 alineadas verticalmente).

Vemos que cuando se debería invocar la identificación de sesión, en su lugar se ejecuta el nuevo script (que incluye también esta parte de solicitud de identificación). Desde el punto de vista del usuario, lo que se ve es cada una de las pantallas de identificación ejecutandose en uno de los monitores. El resto de las operaciones realizadas pasan desapercibidas para el usuario.

La versión 9.04 de esta configuración multiterminal consigue algunas mejoras con respecto a versiones anteriores:
* La rueda de scroll vertical del ratón funcina correctamente.
* Los indicadores LED de los teclados funcionan de forma independiente sin mezclarse.

Updated 2009/06/22: Cambios menores
Leer más...

viernes, 12 de junio de 2009

Fedora 11 en el Asus EeePC 701

Dado que recientemente ha sido publicado Fedora 11 (Leonidas), y aprovechando que está disponible en forma de Live-ISO, he decidido descargar la imagen en cuestión, preparar un Live-USB y probarla en el Asus EeePC 701.

Fedora 11 incluye una serie de mejoras en cuestiones relativas a seguridad y virtualización, además de mejoras en sus características en los ámbitos de equipo de escritorio como de servidor.

La distribución incluye el soporte de ficheros ext4 y entre otras cosas se habla de un arranque en 20 segundos (obviamente no es el caso de la versión live-USB). En algunos blogs se indica que es incluso más rápido que el inicio de Ubhuntu 9.04, el cual consigue unos tiempos mucho más que aceptables.

En cualquier caso, el objeto de esta entrada no es hacer una revisión de Fedora 11 y sus nuevas características, sino analizar si es una opción viable para instalar en un Asus Eee PC 701, con sus particulares limitaciones y su hardware.

En una de las páginas de la web de Fedora indican que este modelo está completamente soportado sin necesidad de realizar modificaciones ni ajustes manuales.

Efectivamente, los componentes que he estado examinando (tarjeta de audio, adaptador de red inalámbrica y cámara) son detectados de forma automática y funcionan a la perfección.



Una distribución muy recomendable para quienes quieren aprovechar las ventajas y las prestaciones de una distribución completa, sin recortes ni simplificaciones excesivas, y con unos completísimos repositorios de aplicaciones y utilidades listos para instalar

Note: English version:
Fedora 11 on the Asus EeePC 701 Leer más...

miércoles, 4 de marzo de 2009

Problemas con adaptador USB wireless en Linux

El objeto de esta entrada es indicar una solución muy sencilla que puede ser útil para resolver problemas con algunos adaptadores inalámbricos USB en Linux.

En mi caso particular, utilizo un adaptador Netgear MA111 (v1), basado en el chipset prism2. Este dispositivo, aunque tiene algo más de cinco años de antigüedad, de soportar únicamente velocidades de 11Mbps (802.11b) y de ser un dispositivo USB1.1, es perfectamente funcional y cumple perfectamente con su cometido.



Utilizo el adaptador en un equipo con una distribución Ubuntu 8.10 de 64 bits. Gracias al enorme esfuerzo de los desarrolladores y la gran cantidad de harware soportado, el adaptador funciona sin realizar ningún tipo de configuración, tanto arrancando con un live-usb como con la distribución recien instalada. El único requisito es introducir la clave de la red, y a funcionar.

El problema aparece al cabo de unos minutos navegando: Se interrumpe la conexión y no es posible volver a establecerla. Tras algunos intentos (deshabilitar y habilitar de nuevo la red, quitar y poner el adaptador, descargar y cargar - rmmod/insmod/modprobe - ) los módulos que controlan el dispositivo, no hay más remedio que reiniciar el equipo para volver a tener red.

El problema se repite en cada sesión. Un tráfico de unos pocos MB es suficiente para bloquear de nuevo el dispositivo de red. Al tratar de obtener más información, descubro que en el momento en que el tráfico de red se interrumpe, en el log del sistema (dmesg) aparecen decenas de mensajes como éste:


hfa384x_usbctlx_complete_sync: CTLX[3] error: state(Request failed)


Tras buscar un poco la cadena con el mensaje de error en cuestión, encuentro con que el error es más o menos habitual y se da con muchos modelos de adaptadores inalámbricos usb. En particular, me encuentro con alguna entrada en launchpad informando del error.

Continuando la búsqueda, aparece también una propuesta de solución.

Decido probarlo:
Marcamos como blacklist el módulo prism2_pci


$ sudo echo blacklist prism2_pci >> /etc/modprobe.d/blacklist


Tras reiniciar el equipo, comienzo a navegar, con múltiples pestañas, escuchando simultáneamente una radio online con Rhythmbox. Me dedico a ver también el capítulo 1 de Aguila Roja, y por el momento todo funciona perfectamente.


$ ifconfig wlan0 |grep RX
RX packets:350374 errors:0 dropped:0 overruns:0 frame:0
RX bytes:508203218 (508.2 MB) TX bytes:15082717 (15.0 MB)


Más de 500MB transferidos, y ni el más mínimo síntoma de error. Conclusión: Muy recomendable el intentarlo para todos aquéllos que tengan algún problema con tarjetas de red inalámbricas en Linux Leer más...

martes, 3 de marzo de 2009

Firefox + FlashPlayer 64 bits en Ubuntu 8.10

Recientemente he instalado Ubuntu 8.10 x86_64 en un equipo en el que hasta ahora solía trabajar con Windows XP. Me encuentro ahora instalando software y haciendo algunas pruebas respecto a la usabilidad del equipo, y sobre todo al tratarse de la versión de 64 bits.

Tras más de 4 años utilizando distribuciones Linux de 64 bits en servidores en producción, no tengo ninguna duda de que es una excelente opción para este tipo de máquinas. Sin embargo, para equipos domésticos cuyo principal uso es el de ser utilizado como ordenador de sobremesa, no termino de decidir si es mejor optar por la solidez de algo sobradamente probado, o si por el contrario merece la pena ganar algo de rendimiento aunque en ocasiones nos lleve a encontrarnos con dificultades propias de un bet-tester.

Para quienes quieren probar lo último, Adobe desde hace algún tiempo proporciona versiones de 64 bits de su popular reproductor de Flash. Quienes lo quieran instalar de los repositorios oficiales de Ubuntu (versión 8.10, 64 bits), se encontrarán con que instalan la versión de 32 bits, a través de ndiswrapper.

Podemos descargar e instalar de forma manual la versión de 64 bits (precisamente hace escasos días, el 24 de febrero de 2009, han publicado una nueva versión: 10.0.22.87).

El proceso es así de sencillo:


$ cd /tmp
$ wget http://download.macromedia.com/pub/labs/flashplayer10/libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz
$ tar -xzf libflashplayer-10.0.22.87.linux-x86_64.so.tar.gz
$ sudo mv libflashplayer.so /usr/lib/firefox-addons/plugins


A continuación, reiniciamos Firefox, y ya disponemos tanto de un navegador como de un reproductor de flash en 64 bits.

En la web de Adobe, insisten en que se trata de una versión alfa, de modo que será más o menos frecuente que el navegador se bloquee al acceder a ciertas páginas en flash. Hay que tener claro que se trata de una herramienta para testeo o para desarrolladores, pero para usuarios finales que deseen un producto estable, por ahora la recomendación es utilizar la versión de 32 bits.

Actualización (7-marzo-2009): Parece ser que los usuarios de sistemas de 64 bits todavía tendremos que esperar un poco hasta disponer de un entorno de reproducción de flash estable.

Tras ver lo muy inestable que resulta la versión alfa proporcionada por Adobe, utilizo la versión de los repositorios de Ubuntu (32 bits + wrapper). Esta versión genera errores esporádicos como éste:


npviewer.bin[5916]: segfault at ff9bea2c ip 00000000ff9bea2c sp 00000000ff8cecec error 4


Y al tratar de obtener un poco más de información me encentro en Launchpad con el que probablemente sea el error más sufrido actualmente en Ubuntu (no hay más que ver el número de suscriptores y duplicados).

Tal vez sea el momento de probar en profundidad SWFdec y Gnash Leer más...

martes, 20 de enero de 2009

GPS para Linux (II)

Tras haber mostrado en el anterior artículo el proceso de instalación de Navit, ahora nos ocuparemos de instalar en el equipo lo necesario para recibir señal de los satélites y así poder utilizarlo como navegador GPS.

La primera cuestión es elegir el hardware adecuado. Afortunadamente en la actualidad hay una fuerte competencia entre los fabricantes de chips receptores GPS, lo cual lleva a una constante mejora en las características de los mismos así como un abaratamiento de los receptores. Hoy en día es posible conseguir receptores de última generación, de gran sensibilidad y consumo muy reducido por precios sorprendentemente bajos.

En este caso en particular, el receptor utilizado en un Globalsat ND-100. Se trata de un receptor muy interesante, pues aúna características tales como reducido tamaño, muy bajo consumo, rapidez de adquisición, alta sensibilidad y sobre todo un coste sumamente reducido (Se pueden conseguir en eBay por menos de 30 euros, gastos de envío incluidos).



Una de las cosas que me llamó la atención fue el hecho de que se anunciaba con drivers para Linux, pero lo que me desconcertó, es que estos drivers se anuncian para sistemas "RedHat 7.3 / 8.0 / 9.0". Algunos de estos sistemas tienen 7 años de antigüedad, y curiosamente no se menciona ningún Linux reciente. A pesar de lo desconcertante de los drivers anunciados para Linux, seguí adelante y decidí comprar uno de estos dispositivos.



La decisión no pudo haber sido mejor. Al conectar el dispositivo GPS-USB en un Ubuntu 8.10 instalado en un equipo Asus EeePC 701, éste reconoció automaticamente lo necesario para tratarlo como un dispositivo que transmite datos por un puerto serie (Prolific PL2303 USB to serial adaptor).


~$ dmesg | tail -10

[ 104.472054] usb 3-2: new full speed USB device using uhci_hcd and address 2
[ 104.639516] usb 3-2: configuration #1 chosen from 1 choice
[ 104.986259] usbcore: registered new interface driver usbserial
[ 104.989944] usbserial: USB Serial support registered for generic
[ 104.992020] usbcore: registered new interface driver usbserial_generic
[ 104.992020] usbserial: USB Serial Driver core
[ 105.011304] usbserial: USB Serial support registered for pl2303
[ 105.013390] pl2303 3-2:1.0: pl2303 converter detected
[ 105.025605] usb 3-2: pl2303 converter now attached to ttyUSB0
[ 105.028018] usbcore: registered new interface driver pl2303
[ 105.028018] pl2303: Prolific PL2303 USB to serial adaptor driver


En estas líneas de dmesg se nos indica la referencia (ttyUSB0) del puerto serie que recibirá los datos del receptor GPS.



El siguiente paso es instalar gpsd. Esta paquete contiene la utilidad gpsd (que actúa como demonio sirviendo datos del GPS a cuantas aplicaciones lo requieran) y permite ocultar los detalles de la configuración del GPS a las aplicaciones que hacen uso de éste. Dado que este paquete se encuentra en los repositorios de Ubuntu, su instalación es sumamente sencilla:


~$ sudo apt-get install gpsd


Una vez instalado el servicio gpsd y con el receptor GPS conectado en el ordenador, colocamos éste en un lugar despejado en el que pueda recibir la señal necesaria para estimar su posición. A los pocos segundos el dispositivo obtiene su localización y comienza a enviar información a gpsd.


~$ gpsd /dev/ttyUSB0


Podemos comprobar los datos recibidos con xgps (utilidad incluida en el paquete gpsd-clients, el cuál se habrá instalado automáticamente al instalar gpsd). Obtenemos algo como esto:



El software de navegación que habíamos elegido (Navit) viene preparado para obtener datos de posicionamiento a través de gpsd, y de hecho la configuración por defecto trata de obtener los datos del GPS a través de dicho servicio. No tenemos más que ejecutar la aplicación y a los pocos segundos mostrará nuestra ubicación (la representación en pantalla dependerá de los mapas que hayamos decidido instalar en Navit).



Así de sencillo. No hemos tenido ni que abrir el miniCD con los drivers proporcionados por el fabricante del GPS y en pocos minutos hemos conseguido tener perfectamente en funcionamiento un dispositivo GPS conectado a nuestro sistema Linux.

Actualización (5/08/2009):

Dado que en los comentarios no se permiten determinadas etiquetas, respondo aquí cómo incluir en Navit los mapas de Openstreetmaps: Para incluir los mapas de openstreetmaps en Navit, se pueden cambiar los permisos al fichero o bien editarlo como sudo:

$ sudo gedit /etc/navit/navit.xml

En el fichero, hay que buscar la seccion correspondiente a openstreetmaps. En mi caso, lo tengo así (he tenido que poner espacios adicionales dado que blogger no permite introducir determinadas etiquetas en el contenido):


< !-- Mapset template for openstreetmaps -->
< mapset enabled="yes">
< map type="binfile" enabled="yes" data="/usr/share/navit/maps/peninsula.bin" />
< /mapset>


Se trata de un mapa de la Península Ibérica. Leer más...

lunes, 12 de enero de 2009

Navit: Navegación GPS para Linux

Ultimamente estoy interesado en el tema de desarrollo de software relacionado con posicionamiento mediante GPS, y en particular he estado recopilando información acerca de lo que hay disponible para Linux.

Mi interés particular se centra en lo que se conoce como GPS tracker (un sistema que genera un registro de los lugares en los que ha estado) para un proyecto en el que estoy comenzando a trabajar. Además, en paralelo, he estado examinando algunas de las aplicaciones libres disponibles para Linux de sistemas de navegación basados en GPS.

Podemos citar aplicaciones como Roadnav, RoadMap, GPSDrive, tangoGPS, Viking y Navit.

Quizás me deje alguna y seguramente más de una de las citadas no sean muy adecuadas como sistema de navegación, pero probablemente sean lo más parecido a los sistemas de navegación comerciales con los que quizás estemos más familiarizados.

Tras examinar la documentación acerca de las características de los sistemas, he decidido probar más en profundidad Navit pensando en que puede ser el que más se aproxime a lo que estoy buscando. Este software tiene algunas características que en mi caso particular me parecen interesantes.

Quiero insistir en que este artículo no es una comparativa y en ningún momento indico que ninguno sea mejor o peor que los otros. Para hacer una comparativa tendría que probarlos todos ellos en profundidad, y esto es algo que en este momento no he hecho.



Lo que he hecho ha sido instalar Navit en un Ubuntu 8.10 con una particularidad: El equipo. Se trata de un Asus EeePC 701 (512MB RAM y una pantalla de 7" de 800x480), es decir, un hardware muy limitado.

Una de las ventajas de utilizar Ubuntu es que al ser un sistema Linux muy extendido, son muchos los desarrolladores de software que proporcionan paquetes .deb ya preparados (sin necesidad de que el usuario compile el software), o mejor aún: Repositorios para poder instalar el software y gestionar sus actualizaciones del mismo modo que cualquiera de las aplicaciones incluidas con la distribución. Este es el caso de Navit.

En el caso de Ubuntu 8.10, añadimos la siguiente línea al fichero /etc/apt/sources.list


deb http://navit.latouche.info/ubuntu intrepid main

También podemos hacerlo desde la herramienta Synaptic, añadiendo esta línea desde la opción de menú "Opciones > Repositorios > Software de terceros".

Una de las dificulades con las que me encontré al tratar de instalarlo fue un tema de las firmas digitales. Aunque en la web se indican las claves a importar, no indican (o yo no lo supe encontrar) qué utilizar como servidor de claves. Tras realizar algunas búsquedas, encontré una página en el que se indican estos detalles.

En definitiva, que debemos de hacer lo siguiente:


~$ gpg --keyserver x-hkp://gpg-keyserver.de --recv-keys CB229096
~$ gpg --export -a CB229096 | sudo apt-key add -


Tras esto, ya podemos instalar la última versión del software disponible para nuestra distribución.


~$ sudo apt-get install navit


El siguiente paso es prepararar Navit: Principalmente obtener datos de un GPS e introducir mapas. Pero por ahora ya hemos dado el primer paso: Aunque en el estado actual (sin mapas ni GPS) sea de escasa utilidad, ya podemos ejecutar la aplicación.

Actualización (15-enero 2009):

Otro software que tiene un excelente aspecto y que habrá que probar en cuanto haya ocasión es QLandkarte

Leer más...

sábado, 19 de julio de 2008

Creación de USB Live

En la anterior entrada del blog, hacía referencia a algunas utilidades para crear unidades USB Live de forma sencilla.

Este tipo de utilidades parece que se ven popularizando, y quizás el proceso de creación manual de unidades USB capaces de arrancar pronto va a convertirse en algo del pasado.

En este caso vamos a hablar de UNetbootin (The Universal Netboot Installer).



Esta utilidad presenta algunas características muy interesantes, como son:

  • Está disponible para ser ejecutada tanto en equipos Windows como Linux
  • Dispone de información predefinida (y actualizada) sobre una gran cantidad de sistemas, de modo que la creación de la unidad USB Live se puede reducir a descargar la imagen a instalar y unas pulsaciones de ratón.

Voy a probarlo ahora mismo preparando un USB Live con Ubuntu-8.04.1 Leer más...

viernes, 13 de junio de 2008

Asus Eee PC: Webcam y aplicaciones Flash

Para quienes utilizamos Linux y hemos tratado de acceder a alguno de los sitios desarrollados en Flash que acceden a la cámara (webcam) del ordenador, es un problema conocido que Flash no puede acceder a la cámara del ordenador.

El problema se debe a que (al menos hasta la versión actual) el plugin de Flash accede a los dispositivos de vídeo mediante drivers de tipo V4L(1), y desde hace ya algún tiempo este tipo de drivers han sido sustituidos por V4L2. El resultado es que para usuarios de distribuciones más o menos recientes de Linux resultaba imposible utilizar la cámara en este tipo de aplicaciones web.

El problema es conocido. De hecho, hay solicitudes de soporte a los desarrolladores de Adobe, y parece ser que se lo han tomado en serio y están trabajando en ello. Por lo que se comenta en algunos foros, las versiones preliminares de Flash Player 10 ya detectan los dispositivos de vídeo de tipo V4L2, aunque todavía queda trabajo por hacer para acceder al stream de vídeo.

Mientras llega la próxima versión del reproductor de Flash, ha aparecido una opción sumamente interesante: Quizás la explicación que indico no sea muy correcta, pero el concepto viene a ser que se crea una capa intermedia de acceso que permite a los dispositivos V4L2 ser accedidos como si se tratara de dispositivos de tipo V4L1. Se trata de The Flashcam Project.

Hasta aquí, la información es genérica para todos los usuarios de Linux, y poco tiene que ver en particular con el Asus Eee PC. El tema que da título a esta entrada es que un usuario ha adaptado el software para que sea directamente utilizable en estos equipos en cuestión.

Mi enhorabuena y mi agradecimiento a los desarrolladores y usuarios que han aportado su tiempo y esfuerzo en la creación de esta utilidad. Leer más...

miércoles, 6 de febrero de 2008

Ubuntu 8.04 alfa 4: Cada vez más cerca

Cuando hace un par de años se publicó Ubuntu 6.06, supuso probablemente uno de los mayores éxitos en distribución, descargas y entradas publicadas en blogs acerca de una distribución Linux.

Mi opinión personal es que en abril, cuando aparezca la versión 8.04 el fenómeno se va a repetir pero esta vez a mucha mayor escala. En particular, llevo siguiendo las versiones previas de esta versión y no puedo más que comentar cosas positivas de la misma.



El día 2 de febrero me descargué la versión alfa-4 para probarla en un par de equipos, uno de ellos el que habitualmente utilizo en casa y que actualmente utiliza otro sistema operativo.

El problema de mi equipo es que tiene gran cantidad de hardware poco habitual y que me suele dar dificultades a la hora de localizar e instalar drivers: Tarjeta inalámbrica poco habitual, placa base con funciones ACPI que casi ningún linux es capaz de apagar, tarjeta de audio HD de múltiples canales, una vieja capturadora / sintonizadora de vídeo, ...

Esta mañana he estado preparando una memoria USB con Ubuntu 8.04 alfa 4 (ultimamente siempre que puedo evito utilizar CD's, por no generar residuos y por no financiar negocios que nada tienen que ver con mi actividad) y hace escasos minutos la he probado en mi ordenador. Sólo puedo decir que el resultado es inmejorable.

La primera grata sorpresa me la llevo al ver mi monitor de 20" iniciarse correctamente a 1680x1050 sin tocar absolutamente nada. Inmediatamente he escuchado el audio de inicio, y aunque siempre quito esas músicas de arranque (pues me parecen una pérdida de tiempo y una molestia) esta vez ha sido una alegría al ver que mi tarjeta de audio había sido reconocida y configurada también de forma completamente automática.

A continuación veo que el kernel incluye los drivers acx100 para mi vieja tarjeta inalámbrica de 22mbps, y que también ha reconocido mi cámara Logitech Sphere / Orbit de primera generación (hace ya algunos años). También aparece mi arcaica capturadora / sintonizadora, la tarjeta firewire, el lector de tarjetas... ¡por fin una distribución reconoce mi hardware en unos segundos y sin hacer nada! Cada vez estoy más convencido de que esta primavera mi ordenador utilizará Linux el 100% del tiempo (ahora lo utiliza pero sólo ocasionalmente)

Se me olvidaba, lo mejor de todo: Al apagar el equipo, por fin puedo apagar sin tener que pulsar unos segundos el interruptor. Mi placa (Asus P5GD1 Pro) y las funciones ACPI de esta distribución por fin son capaces de entenderse. Como decía, estoy convencido de que mi PC en breve va a comenzar una ueva vida.
Leer más...

viernes, 25 de enero de 2008

Linux, el canon y las redes p2p

Hay una serie de cosas que a uno le fastidian, y una de ellas son las afirmaciones y suposiciones que resultan estar equivocadas. En estos días en que se habla tanto de las redes p2p (peer to peer) y del canon que se aplica a los soportes de almacenamiento, a mí también me apetece dar mi punto de vista, o sea, la otra cara de los hechos.



Desde hace algún tiempo soy usuario de sistemas operativos libres (principalmente diferentes distribuciones de Linux). La forma que habitualmente utilizo para hacerme con los discos de instalación de estos sistemas es descargarlos de Internet. Siempre que tengo ocasión lo descargo mediante programas p2p, pues desde mi punto de vista, es una forma de contribuir al proyecto.

Por una parte consumo menos ancho de banda de los autores (o de quienes alojan y distribuyen el sistema) dado que una buena parte la obtengo de fragmentos entregados por otros usuarios, y por otra parte contribuyo con mi ancho de banda (escaso, por cierto, dado los enormes factores de asimetría con los que nos castigan nuestros proveedores en su oferta de conexiones a Internet) a distribuir el sistema en cuestión. Aclararé, por si hay algún ignorante en la materia, que todos estos sistemas son de libre distribución.

En total, haciendo un poco de limpieza en mis estanterías, he conseguido reunir 51 discos (45 CD's, 1 mini CD y 5 DVD's) y sé que me he dejado a algunos (Red Hat 9, Fedora Core 7, Centos 5.1, ...) que no salen en la foto. En fin, creo que ilustro lo que pretendo: Algunos utilizamos las redes p2p y los soportes de almacenamiento para promover y distribuir conocimientos y tecnología.

Por cierto, aclarar que ésta no es mi colección de Linux (vale, también hay un FreeBSD), pues a ésta habría que añadir otros tantos (si no más) CD's y DVD's de distribuciones Linux obtenidas por otros medios: Revistas, distribuciones regionales, pedidos a Canonical, entregados en ferias y eventos relacionados con la informática, etc. En la foto sólo salen aquellos descargados y grabados con mis propios medios.

Para completar la foto, algunos dispositivos con Linux: Un Sharp Zaurus 5500 y un Asus Eee PC, dos excelentes artilugios sin lugar a dudas.
Leer más...

domingo, 20 de enero de 2008

Copiar y restaurar el Asus EEE

Los afortunados propietarios de un Asus EEE, como los de casi cualquier otro ordenador, tienen la posibilidad de sustituir el sistema operativo original por otro que les parezca más adecuado a sus necesidades (más robusto, mejores herramientas, mejor soporte, etc). En particular se están haciendo bastante populares eeeUbuntu y eeeXUbuntu, además de otras distribuciones de Linux. También hay gente que se siente más cómoda con otro tipo de sistemas operativos e instalan versiones específicas de Windows XP.

Uno de los problemas del equipo Asus EEE es la restauración de la configuración inicial, en caso de que el experimento de instalar un nuevo sistema operativo no acabe dando los resultados esperados. Asus proporciona un disco e indica el procedimiento para restaurar el sistema original, pero requiere una unidad externa, cosa de la que algunos usuarios no disponemos.

Indico aquí un método alternativo que no sólo sirve para restaurar el sistema original, sino para realizar una copia de seguridad del disco SSD interno que en cualquier momento podemos restaurar. Esto nos permite disponer de diversos sistemas operativos, ya configurados con nuestras preferencias particulares y poder instalar uno u otro de manera muy sencilla.


Para ello utilizaremos la herramienta Clonezilla-Live, que no es más que otra distribución de Linux de tipo Live con utilidades específicas para copiar y restaurar discos o particiones.

En primer lugar descargamos el fichero .zip con la última versión (yo he utilizado la 1.0.7-18) y seguimos las instrucciones para convertirlo en un USB arrancable. Si lo haceis desde Windows, la herramienta propuesta requiere tener instalado .net, y si como en mi caso no disponeis de este entorno, podeis utilizar las herramientas que vienen con muchas otras distribuciones de Linux ya pensadas para instalar en dispositivos USB (Ejemplo con instrucciones).

El segundo requerimiento es un lugar donde copiar el contenido del disco. Necesitareis tanto espacio de almacenamiento como volumen de ocupación del disco duro (es decir, no necesariamente 4 y 8 GB sino algo menos). En mi caso he utilizado un disco duro USB externo de 80GB.

Una vez que teneis los dos dispositivos USB conectados al ASUS EEE, arrancais y pulsais la tecla ESC en la pantalla gris inicial (esto permite elegir el dispositivo de arranque sin necesidad de cambiar nada en la BIOS).



En breve nos aparece el menú de selección de arranque de clonezilla. En las pruebas que hice he escogido tanto la primera opción como la tercera (no framebuffer) y ha funcionado correctamente.



A continuación nos da opciones para configurar el teclado aunque no es necesario modificar nada y se puede dejar la opción por defecto.



Seguidamente nos da opción a iniciar el entorno de clonezilla o simplemente salir a un shell (consola de línea de comandos).



La opción del shell puede ser interesante si deseamos hacer copias en red, p.ej. utilizando un espacio de almacenamiento montado como NFS, SMB, etc aunque en este caso sería necesario instalar previamente los drivers de la tarjeta de red, ya que Clonezilla no incluye los drivers necesarios para utilizarlos.



Como lo que queremos es algo sencillo y rápido, la copia se hará a un dispositivo local, y de ahí la utilización de un disco duro USB. La siguiente pregunta es si deseamos duplicar un disco (o partición) o crear una imagen del mismo. Elegimos la opción primera para crear una imagen del disco.



A continuación se nos dan varias opciones y elegimos la primera para proceder a grabar el disco completo. Si estuvieramos en la fase de restauración, se elegiría la segunda opción.



Se nos ofrecen varias opciones para el proceso. Podemos dejar las opciones por defecto.



A continuación hay opciones sobre la forma de comprimir la imagen. También es buena idea dejar las opciones recomendadas por defecto.



La siguiente pregunta es el nombre que daremos a la imagen (a un directorio en el dispositivo de almacenamiento de destino que contendrá los ficheros con la imagen del disco). Es buena idea poner un nombre más descriptivo (Xandros original, eeeXubuntu_r3, XPEmbed, etc).



La siguiente opción es para elegir a qué disco interno se le va a crear la imagen. Como el equipo sólo dispone de un disco, la elección es sencilla.



A continuación se indicará el destino al cual se copiará la imagen del disco interno. Como no disponemos de red, elegimos la opción de utilizar un dispositivo local.



Una vez indicado que el destino es un disco local, el sistema nos indica los discos locales disponibles con posibilidad de escritura. Si tenemos el sistema original vemos las particiones iniciales (sdaN), y también vemos el disco duro externo (sdd1). Elegimos éste como lugar destino.



En función del sistema de ficheros empleado en vuestro disco externo, es posible que aparezca algún problema. Si se trata de un disco con NTFS puede aparecer un mensaje de error. En mi caso, he elegido forzar el montaje y todo ha funcionado correctamente. Suelo utilizar este programa en el trabajo pero con dispositivos en red montados por NFS, de modo que no puedo decir si la opción "force" en el caso de NTFS es segura. En mi caso ha funcionado pero no puedo asegurar que esto siempre sea así.



Si se ha montado correctamente, se nos muestra un resumen informativo y se espera nuestra señal para comenzar.



El proceso de copia está en marcha. Según la ocupación del disco llevará más o menos tiempo. En el caso de un 4G con el Xandros original, la copia de la imagen tarda unos 10 minutos.



El proceso de grabación de la imagen del disco SSD ha finalizado. Se nos informa y a continuación un menú nos dará opciones a realizar otras copias, apagar o reiniciar la máquina.

Leer más...

miércoles, 29 de agosto de 2007

¿Problemas de red en Linux?

En las últimas distribuciones de Linux es cada vez más frecuente encontrarse con problemas a la hora de conseguir que la red funcione. Además se trata de problemas un tanto atípicos, como que "la red me funciona en casa pero no en el trabajo" o "puedo ver páginas de Google pero no de Barrapunto".

Los problemas se presentan en distribuciones que utilizan la versión 2.6.17 o posteriores del kernel Linux. El origen del problema es ya antiguo, pero no ha empezado a manifestarse hasta que las distribuciones recientes han empezado a incluir los kernels con modificaciones en el manejo de la pila TCP.

En algunos casos, los usuarios optan por mantener sus equipos con versiones no actualizadas del kernel, cosa que si bien permite salir del paso presenta muchos inconvenientes. Afortunadamente con esta ayuda espero que los problemas puedan ser subsanados (como ocurrió en mi caso).

El origen del problema hay que buscarlo en el manejo de los paquetes TCP, en particular en el concepto de TCP window scaling. Se trata de una optimización orientada a mejorar el rendimiento en la transferencia de grandes volúmenes de datos (videos online, descarga de imágenes .iso, redes p2p), pero que desgraciadamente algunos fabricantes de hardware no implementan correctamente, a pesar de estar reflejado en el documento RFC1323 (TCP Extensions for High Performance), que data del año 1992.

Una forma de evitar el problema es deshabilitar estas extensiones de alto rendimiento y seguir funcionando tal y como se hacía hasta la versión anterior. Basta con modificar el fichero (como usuario root) que contiene el valor de la ventana. El nombre de este fichero varía según distribuciones (tcp_window_scaling, tcp_default_win_scale). Ejemplo:

Fedora core / Red Hat:

su -
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

Debian / Ubuntu:
sudo bash
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

Para hacer los cambios permanentes de manera que en el siguiente arranque la red siga funcionando sin problemas , añadimos la línea:
net.ipv4.tcp_window_scaling = 0


al fichero /etc/sysctl.conf

La solución óptima sería poder aprovechar unas optimizaciones que fueron pensadas hace 15 años, pero como han sido ignoradas por algunos fabricantes, la solución más sencilla para el usuario final es renunciar a dichas optimizaciones.
Leer más...

martes, 28 de agosto de 2007

Compilando con Ubuntu

Estaba probando algunas cosas en un Ubuntu 7.04 que instalé hace algunos días en un PC, y me encuentro con un problema para compilar un pequeño programilla en C.

Es un fallo muy tonto. Al tratar de compilar aparecen unos cuantos menajes, y el primero (realmente el único error) de ellos es:

error: stdio.h: No such file or directory

Bien. Está claro que el compilador no encuentra las librerías estándar de C. Lo que me choca es que en la distribución, tal y como viene inicialmente (DVD Ubuntu 7.04 Desktop i386) es que se instale el gcc pero no sus librerías, de modo que es completamente inútil.

Me choca un poco más lo difícil que es encontrar información en foros. Mucha gente tiene ese mismo problema, y se les recomienda instalar librerías que nada tienen que ver (y lógicamente no resuelven el problema), como "build-essential".

Basta con instalar "libc6-dev" y gcc ya podrá encontrar las librerías estándar y compilar sin errores (salvo los que cada uno haya introducido en su código) :-) Leer más...