30 nov. 2009

Personalizando el arranque de Karmic: grub2

Continuamos con los artículos destinados a conocer y personalizar el proceso de arranque de Karmic, en esta ocasión vamos a ver como personalizar el menú del gestor de arranque Grub2.

Aprenderemos como cambiar la imagen de fondo y los colores de los menús, para darle un aspecto más personal y atractivo que el soso menú en blanco y negro que se instala por defecto. Cuando acabemos nuestro grub2 tendrá un aspecto parecido a este:

Apariencia final del menu modificado de grub2


  • Instalar los paquetes necesarios
Instalaremos todo lo que vamos a necesitar con la orden:
$ sudo aptitude install grub2-splashimages startupmanager


  • Poner una imagen de fondo
Podeis usar cualquier imagen pero ha de estar en formato .tga para que grub2 pueda leerla, además para que se vea correctamente la redimensionaremos a la misma resolución que tengamos grub2. Por defecto usa una resolución de 640x480, pero también soporta 800x600 y 1024x768.

Para cambiar el formato de la imagen a TGA y modificar su resolución podeis usar cualquier programa de retoque fotográfico, yo usé gimp.

Por si teneis algun problema con este paso o no se os ocurre ningún fondo que poner teneis una colección de imágenes en /usr/share/images/grub listas para usarse como fondo de menú. O podeis conseguir impresionantes fondos en www.vladstudio.com. También podeis descargar el mio ya en formato TGA y 800x600 de fantasmas_800x600.tga

Una vez tengamos la imagen con el formato correcto (supongamos que se llama fantasmas_800x600.tga) la copiaremos al directorio de trabajo de grub2:
$ sudo cp fantasmas_800x600.tga /boot/grub

Ahora editamos el script que define el tema de grub por defecto:
$ gksu gedit /etc/grub.d/05_debian_theme

En este archivo localizaremos la linea:
for i in {/boot/grub,/usr/share/images/desktop-base}/moreblue-orbit-grub.{png,tga} ; do

Y la cambiaremos para que refleje nuestro fondo:
for i in {/boot/grub,/usr/share/images/desktop-base}/fantasmas-800x600.{png,tga} ; do


  • Cambiar los colores del texto
Depende del tipo de fondo que hayamos seleccionado tendremos que elegir unos colores más claros o más oscuros para que podamos leer bien los textos.

En mi caso como uso un fondo oscuro pondré los textos en blanco y como el tono menos presente en la imagen es el verde usaré resaltado en verde.

Para eso volvemos a editar el mismo script de antes:
$ gksu gedit /etc/grub.d/05_debian_theme

Localizaremos las lineas:
set color_normal=black/black
set color_highlight=magenta/black


Y la cambiaremos para que refleje nuestro nuevo juego de colores:
set color_normal=white/black
set color_highlight=white/green


La primera linea define el color de la letra y el fondo del texto normal y la segunda define el color y el fondo del texto seleccionado. Podeis usar cualquier color poniendo su nombre en inglés.


  • Cambiar la resolución del grub2
Finalmente usaremos el programa startupmanager para determinar a que resolución queremos que se muestre nuestro menú (la misma a la que hayamos redimensionado la imagen de fondo):
$ gksu startupmanager

Nos dirigimos a la pestaña Avanzado y curiosamente donde pone Colores del menú del cargador de arranque definimos la resolución que queremos darle al menu:

Definir la resolución deseada para el menú de arranque

Después de esto solo nos quedará reiniciar y disfrutar de nuestro nuevo menú de arranque.


  • Más información
Grub2


  • Artículos relacionados
Personalizando el arranque de Karmic: usplash

23 nov. 2009

Personalizando el arranque de Karmic: usplash

Vamos a ver ahora como personalizar a nuestro gusto todas las pantallas y animaciones que muestra Ubuntu Karmic desde el arranque hasta que aparece finalmente el escritorio. El objetivo será dar a todo elproceso de arranque un aspecto coherente y a nuestro gusto.

La secuencia de programas que se muestran es la siguiente:

Grub2 - Usplash - XSplash - GDM - Escritorio

Grub2: menú de arranque y selección del sistema operativo
Usplash: animación inicial, anterior a la carga del servidor gráfico
XSplash: animación que se presenta durante la carga del entorno gráfico
GDM: pantalla de selección de usuario y tipo de sesión

En este artículo aprenderemos a crear un Usplash personalizado con las imágenes que nosotros queramos.

  • Instalación de los paquetes necesarios
Antes de empezar instalaremos todos los paquetes que vamos a necesitar con una sola orden:
$ sudo aptitude install startupmanager build-essential libusplash-dev


  • Preparar las imágenes de fondo
Podeis usar cualquier imagen, pero debeis tener en cuenta que debe estar en formato PNG, tener la resolución que vayais a usar (en mi caso 1024x768) y una paleta de colores no superior a 256 colores.

Podeis usar cualquier programa de manipulación de imágenes o retoque fotográfico para conseguir este formato, yo usé el impresionante Gimp.

Nota: este paso es importante pues si la imagen no es PNG 256 colores el proceso fallará más adelante.

Por si este paso os da algun problema aqui os dejo la imagen que yo he usado, ya convertida a PNG 1024x768 y 256 colores:


  • Cambiar la imagen de fondo
El propio paquete libusplash-dev proporciona un tema de ejemplo sobre el que trabajaremos modificando las imágenes que lleva por las nuestras. Una vez convertida la imagen de fondo al formato correcto substituiremos la del paquete por la nuestra y le daremos el mismo nombre que tiene en el ejemplo:
$ cp -R /usr/share/doc/libusplash-dev/examples ~
$ cp ~/Imágenes/wallpaper_1024x768_256colores.png ~/examples/eft_1024_768.png



  • Cambiar la barra de progreso
Se trata de dos imágenes throbber_back.png y throbber_fore.png que podemos substituir igual que en el caso del fondo por nuestras creaciones, teniendo la precaución de mantener la misma resolución y la misma paleta de colores.


  • Cambiar la fuente del texto
Tambien podemos cambiar el tipo de letra en que se muestran los mensajes del sistema, para eso debemos tener la fuente en formato bdf. Si, como es normal, tienes la fuente en formato TrueType usaremos la siguiente orden para convertirla:
$ sudo aptitude install otf2bdf && otf2bdf -o fuente.bdf fuente.ttf

Nota: teneis una amplisima coleccion de fuentes TrueType en /usr/share/fonts

Una vez tenemos la fuente en formato bdf reemplazaremos la fuente del tema de ejemplo con la nuestra:
$ cp fuente.bdf ~/examples/helvB10.bdf


  • Compilar e instalar el tema
Una vez substituida las imágenes (y opcionalmente la fuente) ya podemos crear nuestro tema compilado e instalarlo para que el sistema pueda usarlo:
$ cd ~/examples/ && make && sudo make install

Para aquellos que esteis deseando cambiar el tema pero no os haya salido aqui os dejo el que acabo de hacer para este artículo: fosco_usplash_theme.so, con soporte para las resoluciones 800x600 y 1024x768. Podeis descargarlo e instalarlo con el propio startupmanager.


  • Aplicar el tema
Para aplicar el nuevo tema usaremos el programa startupmanager que ejecutaremos con la orden:
$ gksu startupmanager

En él tan solo tendremos que elegir la resolución deseada en la pesataña Opciones de arranque (en mi caso usé 1024x768):

Selección de la resolución deseada

Y finalmente seleccionamos el tema en la pestaña Aspecto (en mi caso eft-theme):

Selección del tema de Usplash

El próximo arranque mostrará nuestro tema modificado (y también se mostrará al apagar el sistema)


  • Más información
Usplash: https://wiki.ubuntu.com/USplash
Documentacion oficial de Ubuntu: https://help.ubuntu.com/community/USplashCustomizationHowto

16 nov. 2009

Compilar el kernel (2.6.31.6)

El kernel es el núcleo del sistema, compilar el kernel no es una tarea sencilla ni mucho menos necesaria. Las distribuciones actuales proveen kernels genéricos preparados para ejecutarse sobre una gran variedad de hardware sin problemas y con una buena colección de módulos para mejorar aun más este soporte.

Sin embargo, compilar el kernel puede ser útil en ciertas circunstancias, como por ejemplo:
  1. Activar funciones no activadas por defecto en el kernel de la distribución
  2. Usar opciones experimentales
  3. Mantener el kernel actualizado
  4. Optimizar/ajustar el kernel a nuestro hardware
  5. Por el placer de aprender

Si no necesitas hacer nada de lo anterior te recomiendo que no compiles el kernel manualmente. En mi caso lo he hecho para poder activar el nuevo sistema de ficheros experimental btrfs, sobre el que hablaremos en el próximo artículo.

  • Instalar las fuentes
El kernel se distribuye en forma de código fuente que podemos encontrar en http://www.kernel.org

Descargaremos y descomprimimos la versión más actual (la 2.6.31.6 a día de hoy) con la orden:
$ wget -c ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.6.tar.bz2
$ tar xvfj
linux-2.6.31.6.tar.bz2

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


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

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

Menu de configuración de las opciones del kernel

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.

  • Compilar kernel y módulos
Para compilar el kernel, una vez repasadas las opciones:
$ make

Empezaremos a ver mensajes por pantalla que nos informan del progreso de la compilación. En función de la potencia del hardware y de las opciones marcadas en el kernel este proceso puede tardar mucho rato (en mi sistema tardó 1 hora 40 minutos en compilar el kernel y los módulos con las opciones por defecto).

Para instalarlo ejecutaremos:
$ sudo make install modules_install

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

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


  • Actualizar grub1 (Versiones 9.04 y anteriores)
Ahora vamos a crear una entrada en el menu del grub para poder elejir el nuevo kernel:
$ sudo gedit /boot/grub/menu.lst

Recomiendo duplicar la sección de Ubuntu cambiando el número del archivo del kernel y la linea initrd por los nuevos), en mi caso por ejemplo quedó así (resalto los cambios que he hecho en rojo para que lo veais mejor):

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

title
Linux 2.6.31.6 - manual
root (hd0,1)
kernel
/boot/vmlinuz-2.6.31.6 root=/dev/sda2 ro splash locale=es_ES vga=792
initrd
/boot/initrd.img-2.6.31.6
quiet
[...]


La parte que he añadido es la segunda, y el resto del archivo de configuración del grub se deja sin alterar.

Una vez guardardo el archivo reiniciamos y seleccionamos el nuevo kernel, si todo ha ido bien ejecutamos uname -r y veremos algo así:

$ uname -r
2.6.31.6


  • Actualizar grub2 (Versiones 9.10 y posteriores)
En el caso de que estemos usando grub2 (versiones Karmic y posteriores de Ubuntu) la forma de modificar el menú de arranque es algo diferente.

Primero editaremos el archivo de opciones generales de grub para asegurarnos de que aparece el menu de selección de sistema operativo y que tenemos tiempo de elegir el nuevo kernel (si en tu sistema ya se muestra el menu de grub2 saltate este paso):

$ gksu gedit /etc/default/grub

Y nos aseguraremos de comentar (poniendo un "#" delante) la linea:
#GRUB_HIDDEN_TIMEOUT=0

Como el nuevo formato de configuración no es muy conocido yo os recomiendo que saqueis una copia de una de las entradas actuales de vuestro grub leyendo el archivo /boot/grub/grub.cfg. En mi caso las siguientes lineas corresponden a una entrada en el menu:

menuentry "Ubuntu, Linux 2.6.31-14-generic" {
recordfail=1
save_env recordfail
set quiet=1
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set fcc3f8cd-346f-4337-b75d-dff91753f1d3
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=fcc3f8cd-346f-4337-b75d-dff91753f1d3 ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}

Nota: los identificadores de particiones y los nombres de archivo serán diferentes en cada caso, usad los vuestros, no copieis estos!

Ahora añadiremos la entrada manual copiando la información anterior al final del archivo /etc/grub.d/40_custom y modificando los nombres del archivo del kernel y del initrd por los que hemos creado nostotros:
$ gksu gedit /etc/grub.d/40_custom

En mi caso al final del archivo añadí estas lineas (resalto los cambios que he hecho en rojo para que lo veais mejor):
menuentry "Linux 2.6.31.6 - manual" {
recordfail=1
save_env recordfail
set quiet=1
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set fcc3f8cd-346f-4337-b75d-dff91753f1d3
linux /boot/vmlinuz-2.6.31.6 root=UUID=fcc3f8cd-346f-4337-b75d-dff91753f1d3 ro quiet splash
initrd /boot/initrd.img-2.6.31.6
}

Como veis lo único que he cambiado es la etiqueta de la entrada, la referencia al archivo del kernel y al archivo del initrd.

Finalmente actualizaremos el grub2 con la orden:
$ sudo update-grub

Debemos ver que aparece el nuevo kernel que hemos introducido, reiniciamos y seleccionamos el nuevo kernel, si todo ha ido bien ejecutamos uname -r y veremos algo así:

$ uname -r
2.6.31.6


  • Más información
http://www.kernel.org
Como compilar el kernel de ubuntu

  • Artículos relacionados
Compilar el kernel (2.6.25)

9 nov. 2009

Internet en tu disco duro con wget

wget es un comando de consola que nos permitirá descargar a nuestro disco duro casi cualquier cosa que esté en internet a través de los protocolos HTTP y FTP.

Es rápido, potente, soporta cientos de opciones, puede usarse en scripts, descargar un listado de direcciones guardado en un archivo y muchas cosas más.

Algo que wget aun no puede hacer es descargar de servidores tipo RapidShare o MegaUpload, para ese tipo de servicios podeis usar Tucan.

En este artículo vamos a ver una serie de ejemplos prácticos que cubrirán la mayoría de las necesidades de cualquier usuario.


  • Instalación
Empezaremos por instalarlo, al estar en los repositorios oficiales es tan sencillo como:
$ sudo aptitude install wget

Una vez instalado podemos ver un completo listado de opciones y un manual de uso con las órdenes:
$ wget --help
$ man wget


  • Descargar un único archivo
La función más básica de wget es descargar un único archivo, para lo cual sólamente le pasaremos como opción la dirección del archivo a descargar:

$ wget $URL

Substituyendo $URL por la dirección del archivo que queramos descargar. En la siguiente imagen vemos a wget descargando las fuentes del kernel:

wget descargando


  • Cancelar y reanudar descargas
Para cancelar una descarga bastará con pulsar Ctrl+C desde la linea de comandos, si queremos recuperar la descarga y que continue desde el punto donde lo había dejado usaremos el parámetro -c

$ wget -c $URL

  • Descargar una web entera
Usa este comando con cuidado, el contenido de una web a menudo es mucho más extenso de lo que parece. El siguiente comando descargará todo el contenido de la web http://www.gnu.org/ y convertirá los enlaces de manera que se podrá navegar off-line por los archivos descargados:

$ wget --convert-links -r http://www.gnu.org/

  • Descargar un directorio ftp
Al trabajar con ftp las opciones se simplifican y para descargar por ejemplo todo el contenido de ftp://ftp.kernel.org/pub/linux/kernel/ bastará con ejecutar la orden:

$ wget -r ftp://ftp.kernel.org/pub/linux/kernel/

  • Descargar una lista de direcciones contenidas en un archivo
Suponiendo que tengamos las direcciones que queremos descargadas guardadas en un archivo llamado direcciones.txt la orden para descargarlas todas sería:

$ wget -i direcciones.txt

  • Mantener un mirror de una dirección de internet
Podemos mantener un mirror es decir, una copia exacta, de un sitio de internet mediante la orden:

$ wget --mirror $URL

Esto puede ser útil para manatener copias locales de repositorios, hacer copias de seguridad de nuestras propias webs publicadas...

  • Descargar todas las imágenes de una página web
Se trata de especificar las extensiones que queremos obtener usando el parámetro -A, por ejemplo:

$ wget -r -l12 --no-parent -A.jpg $URL

Descargará recursivamente todos los archivos con extensión jpg de la dirección $URL.

  • Entorno gráfico
Existen varios frontends gráficos para facilitar el uso de wget, adaptados a diferentes escritorios y la mayoría de ellos disponibles en los repositorios.

Gwget: frontend escrito en GTK+ especialmente diseñado para usar con el escritorio GNOME. Para instalarlo bastará con usar:

$ sudo aptitude install gwget

Gwget

Kget: frontend escrito en Qt y pensado especialmente para usarse con el escritorio KDE. Para instalarlo bastará con ejecutar el comando:

$ sudo aptitude install kget

Kget

  • Más información
Pagina del manual de wget: http://www.gnu.org/software/wget/manual/wget.html
Gwget
Kget

  • Artículos relacionados

2 nov. 2009

Gnome-shell: la nueva interfaz de usuario de Gnome

Gnome-shell es un completo rediseño de las funciones de interacción entre Gnome y el usuario. Actualmente permite el lanzamiento de programas, abrir documentos, gestionar las aplicaciones y los espacio de trabajo abiertos y hacer búsquedas tanto de aplicaciones como de documentos.

Visión general de la interfaz gnome-shell

Es un sistema en pleno desarrollo y se espera que con el tiempo se le vayan añadiendo más funcionalidades como notificaciones, gestión de contactos, applets...

La interfaz de gnome-shell está formada por:
  1. El panel superior
  2. El menu actividades
  3. El área de espacios de trabajo
Aqui podeis ver un video de como trabaja gnome-shell:


Funcionamiento general de gnome-shell


  • Instalación
Gnome-shell está en los repositorios de Karmic, así que su instalación será tan fácil como:
$ sudo aptitude install gnome-shell

Para ejecutarlo usaremos:
$ gnome-shell --replace

Al ejecutarlo se desactivará el panel de Gnome, pues gnome-shell ya aporta un panel, se desactivará el cambiador de escritorios, gnome-shell organiza las aplicaciones en espacios de trabajo, y se desactivará compiz, gnome-shell tiene algunos efectos básicos aunque no es esa su principal función.


  • El panel superior
El panel superior es un reemplazo del tradicional panel de Gnome. Contiene el menu Actividades el icono y el nombre de la aplicación con el foco, un reloj con calendario y el área de notificación con el applet de gestión de usuarios, desde el que podremos acceder a la configuración del sistema y apagar o reiniciar el ordenador.

Panel de Gnome-shell

El panel también aporta un cambiador de ventanas pulsando la combinación de teclas Alt+Tab y un lanzador de aplicaciones con la típica combinación Alt+F2.

  • El menu actividades
El menú de actividades es el corazón de Gnome-shell, contiene un cuadro de búsqueda de aplicaciones y documentos, un lanzador de aplicaciones con las aplicaciones más usadas y acceso al menú general de Gnome, acceso al menú lugares y a los documentos usados recientemente, así como previsualizaciones de todos estos elementos.

Menú de Gnome-shell

Para activar este menú solo tendremos que pulsar sobre el botón Actividades del panel superior o llevar el ratón a la esquina superior izquierda de la pantalla.

  • El área de espacios de trabajo
En esta zona encontramos los espacios de trabajo (o escritorios virtuales) y una representación de cada una de las aplicaciones abiertas. Podemos añadir y quitar espacios de trabajo pulsando sobre los botones "+" y "-" así como cambiar las aplicaciones de uno a otro simplemente arrastrandolas con el ratón.

Espacios de trabajo


  • Conclusiones
Aunque se trata de un sistema muy nuevo y en un estado muy temprano de desarrollo se ha comportado de manera bastante estable, dando una coherencia a toda la interacción entre el usuario y su escritorio. Una vez nos acostumbramos a su manera de trabajar se hace muy práctico y mejora la experiencia especialmente a aquellos usuarios que suelen trabajar con muchas aplicaciones abiertas a la vez.

En una sola aplicación se incluye un panel, un menú, un dock, gestor de espacios de trabajo, cambiador de aplicaciones... en general reune toda la gestión del escritorio en un solo programa.

Como puntos débiles cabe resaltar la nula capacidad de configuración de gnome-shell y su incapacidad de trabajar junto a compiz.


  • Más información
http://live.gnome.org/GnomeShell


  • Artículos relacionados
Compiz a fondo
Metacity con Composite