Archivo de la categoría: Sistema

GNU/Linux. Aspectos relativos al sistema operativo.

Un poco de… consola (V): help, nl, dfc

En este nuevo artículo de la sección «Un poco de… consola», vamos a ver 3 comandos interesantes, a saber: «help«, «nl» y «dfc«.

help

Como su propio nombre indica, sirve para pedir ayuda, en este caso, mostrarla. Alguien se preguntará, si existe man, aporta alguna utilidad el comando help? Pues la respuesta es que sí. Es muy útil para mostrar la ayuda de comandos y palabras clave de bash. Así que, si estáis haciendo un script bash y no recordáis -por ejemplo- la sintaxis del while, pues podéis poner:

$ help while

No existe entrada de man para while (*) así que algo como man while no devolverá ningún resultado.

nl

Sirve para númerar líneas. Imaginaros que tenemos un fichero de texto con estas líneas:

Ésta es la primera línea.
 Línea segunda.
 Línea tercera.
 ...
 Y así sucesivamente.

Con nl podemos hacer lo siguiente:

$ nl ejemplo.txt

 1 Ésta es la primera línea.
 2 Línea segunda.
 3 Línea tercera.
 4 ...
 5 Y así sucesivamente.

Si queremos, podemos guardar la salida en otro fichero, de manera que tendríamos ya nuestro fichero con los números de línea incorporados. Tan sencillo como esto:

$ nl ejemplo.txt > ejemplo_con_numero_de_lineas.txt

dfc

Supongo que conocéis ya el comando df. Por si acaso, os resumo: sirve para saber la ocupación de vuestros discos/particiones y lo que queda libre. Ejemplo (**):

$ df -h

/dev/sdb7 19G 12G 5,9G 67% /
udev 1,9G 4,0K 1,9G 1% /dev
tmpfs 791M 988K 790M 1% /run
none 5,0M 0 5,0M 0% /run/lock
none 2,0G 608K 2,0G 1% /run/shm
none 100M 8,0K 100M 1% /run/user
/dev/sdb8 9,2G 1,2G 7,6G 13% /var
/dev/sdb9 9,2G 150M 8,6G 2% /tmp

Bien, pues dfc es una aplicación que hace lo mismo pero visualmente más agradable, mostrando barras de progreso que indican la ocupación de cada partición. En nuestro ejemplo, si ejecutamos esto:

$ dfc

se vería algo así:

r3

Al mostrar los datos de forma gráfica y con colores según el grado de ocupación, de un vistazo podemos ver qué particiones tenemos a punto de llenarse, cuáles están libres, etc.

Tanto con df como con dfc podemos mostrar también el sistema de ficheros de cada partición con el parámetro -T.

 

(*) Información parecida podemos conseguir con man (aunque de manera mucho menos concreta) ejecutando: man bash.

(**) El parámetro -h sirve para mostrar los tamaños en forma más fácil de ver, usando megas, gigas o teras según el caso. Si no se añade este parámetro muestra los tamaños en bytes, lo que hace más complicado leerlos. -h viene de human readable.

Un poco de… consola (IV): rm y find, cp, pushd y popd

Aquí van 3 pequeños «truquillos», tips, o utilidades (como queráis llamarlos), todos para sacarle un poco más de provecho a la consola de GNU/Linux.

Borrar un número grande de archivos

Imaginaos que queréis borrar todos los archivos .txt de un directorio y el número de ellos es muy elevado. Lo normal es que, estando dentro de dicho directorio, ejecutéis lo siguiente:

$ rm *.txt 

Si el número de archivos es muy grande, el comando rm no podrá procesarlos y os dirá algo similar a esto: «lista de argumentos demasiado larga». ¿Qué hacemos entonces para borrar los archivos? Pues podemos echar mano del comando find de esta forma:

$ find . -name "*.txt" -exec rm {} \;

Al lanzarlo, buscará todos los archivos terminados en .txt y, por cada uno de ellos, ejecutará un rm ARCHIVO (los dos paréntesis «{}» indican dónde va el archivo encontrado en dicho comando).

De esta forma, el comando rm sólo procesará un archivo cada vez y podréis borrar todos todos los archivos que queráis.

Esto es aplicable a otros comandos que tengan problemas similares para procesar una lista de argumentos muy larga (si no recuerdo mal, al comando mv también le ocurre este problemilla).

Backup de un archivo con cp

Si queremos hacer un backup de un archivo podemos usar cp de esta forma tan simple:

$ cp archivo archivo_backup

donde archivo es nombre del fichero que queremos salvaguardar y archivo_backup es el nuevo nombre que le daremos (será la copia de seguridad).

Pues hay una forma más corta de hacer esto, y es así:

$ cp archivo{,_backup}

Lo que hace esto es, precisamente, realizar una copia del archivo original y nombrarlo tal y como el original más la coletilla «_backup».

Recuperar último directorio accedido

Situación: estamos en un directorio cuyo path es bastante largo de poner. Sabemos que luego volveremos a él. Si queremos evitar tener que escribir toda la ruta entera, podemos usar los comandos pushd popd. Los usaremos como se indica a continuación.

Estando en el directorio cuya ruta (muy larga…) queremos guardar, ejecutamos este comando:

$ pushd .

Esto guarda en la pila de directorios dicho directorio, de forma que cuando ejecutemos esto:

$ popd

Nos sacará el último directorio de la pila, en este caso, el que habíamos metido antes, con lo cuál nos ahorramos escribir todo el path de nuevo. Lo que hace popd es sacar dicho path de la pila de directorios y nos mueve a dicho directorio, en otras palabras, hace un cd path_directorio.

De momento lo dejamos ahí. En otro artículo de esta serie… más.

Arrancando tu equipo de forma remota desde tu dispositivo Android

Imaginaos que, estando fuera de casa, queréis acceder a algún archivo o servicio de vuestro PC de casa pero éste está apagado. Lo que os voy a explicar aquí es cómo encenderlo de forma remota mediante wake on lan.

En el equipo a encender

En el equipo que queréis encender tenéis que instalar ethtool, que es una utilidad que permite controlar diversos parámetros de la tarjeta de red. Para ello, como siempre:

# aptitude install wakeonlan ethtool

Una vez instalado, tenemos que configurar nuestra tarjeta de red para que, una vez que se apague el equipo, ésta quede «a la escucha» de paquetes especiales de red llamados MagicPacket (paquetes mágicos), de forma que, cuando reciba uno, la máquina se encenderá. Para ello ejecutamos -como root- el siguiente comando:

# ethtool -s eth0 wol g

Con «-s eth0» indicamos la interfaz que queremos configurar con Wake On Lan y con «wol g» le decimos que queremos configurar dicha interfaz tal y como comentábamos, esto es, que «despierte» (que arranque) al recibir un «MagicPacket».

En el dispositivo Android

Ahora vamos al dispositivo Android. En este caso, instalamos la aplicación Wake On Lan (intuitivo, no?). Una vez instalada, simplemente tenemos que indicar el equipo queremos encender. Para ello, especificamos la dirección MAC de la tarjeta de red del equipo queremos encender y su IP. También se especifica un puerto, que normalmente es el puerto 7 o el puerto 9, pero os funcionará con cualquier puerto.

Lógicamente, si la IP que indicáis es la IP local del equipo (algo como 192.168.1.3), esto sólo os funcionará si estáis precisamente en esa misma red (por ejemplo, conectados por wifi al router de vuestra casa). Pero nosotros queríamos encenderlo estando fuera de casa, usando para ello nuestra conexión de datos 3G/HSDPA del móvil. Os cuento cómo tenéis que hacerlo.

Básicamente tenéis que configurar un port forwarding (una redirección de puertos) en el router, de forma que los paquetes UDP dirigidos a la IP pública vuestra y puerto UDP -por ejemplo- 33333-los reenvíe a la dirección de broadcast de vuestra red. Esta dirección será algo acabado en .255. Por ejemplo, si vuestro PC tiene la IP 192.168.1.3, la máscara de red será 255.255.255.0 y, por tanto, la dirección de broadcast es la 192.168.1.255. Ésta es la que tenéis que especificar en el router.

En particular, si nuestro router adsl es Cisco, os indico lo que tenéis que configurar exactamente:

1.- En la interfaz Vlan1 permitiremos el forward de los broadcast:

# ip directed-broadcast

2.- Añadimos un port forwarding a la dirección broadcast de nuestra red y un puerto UDP (el que queramos, da igual):

# ip nat inside source static udp 192.168.1.255 33333 interface Dialer1 33333

donde 33333 es el puerto que hemos especificado (insisto, podemos poner el que queramos entre 1024 y 65535).

Os preguntaréis, ¿por qué no puedo especificar la IP propia del PC en lugar de la dirección broadcast? Pues porque el router retiene la dirección MAC de vuestro PC durante un tiempo (*), pero al cabo de un rato se borra dicha dirección MAC de las tablas del router (para ser más exactos, de las tablas arp del switch que vuestro router adsl incorpora). Esto lo podríais solucionar si en vuestro router podéis meter traducciones arp estáticas, pero no es una opción que esté normalmente disponible en los routers adsl domésticos (al menos no desde el interfaz web, que será seguro el que uséis para «trastear» el router (**)).

Volviendo al tema en cuestión, si simplemente tenéis que especificar la IP pública de vuestro router en la apli Wake On Lan y, como siempre, la MAC del PC que queréis arrancar (eso no cambia).

Claro, prácticamente todo el mundo que usa banda ancha con adsl usa direccionamiento dinámico para la IP pública. ¿Cómo acceder entonces? Pues usáis Dns Dinámico. Existen varios proveedores de este servicio. Yo uso dyndns y me va de perlas.

En un equipo Linux

Si lo quisiéramos arrancar desde un equipo Linux en lugar de un dispostivo Android, instalaríamos el paquete wakeonlan:

# aptitude install wakeonlan

Para arrancar el equipo simplemente ejecutaremos

wakeonlan MAC

donde MAC es la dirección MAC del equipo que queremos arrancar.

 

Para el caso de IP pública:

$ wakeonlan -i IP_PUBLICA_O_NOMBRE -p 33333 MAC

También podéis usar el comando etherwake:

# aptitude install etherwake

Y, de forma similar a como hacíamos con wakeonlan, ejecutaríamos:

$ etherwake MAC

Si alguien se ha perdido y quiere que le concrete/explique algo, que lo comente y se aclara lo que sea necesario. Es posible que use algún tecnicismo pero debo partir de un cierto nivel de redes porque si no este artículo sería eterno. Insisto, si tenéis dudas y os interesa el tema preguntad y hallaréis respuesta -en la medida que esté en mi mano-.

Espero que os sea útil.

 

(*) De hecho, si especificáis la IP del equipo en lugar de la de broadcast, os funcionará durante unos minutos, pero si pasa un rato y probáis es posible que ya no os funcione porque el router ya no recuérda qué MAC corresponde a la IP en cuestión ni por qué puerto del router (del switch, para ser más exactos) tiene que enviar el paquete.

(**) Si alguien quiere ir a más, podéis acceder con telnet ssh y usar una interfaz de comandos que permite ir más allá y tener más control del router que desde el interfaz web.

NOTA: Previamente hay que activar el WOL en BIOS. Si la placa es moderna normalmente no hace falta ni poner el cable desde la tarjeta de red a la placa ya que si soporta PCI 2.2 tendrá la energía suficiente para el WOL. Si tiene tarjeta integrada, obviamente, tampoco hará falta el cable.

 

Un poco de… consola (II): creación de alarmas periódicas

Vamos con la segunda entrega de Un poco de… consola. La primera, para los más despitados, la tenéis aquí ;-). En esta entrega vamos a ver cómo abrir ejecutar una aplicación gráfica desde crontab y usar este mecanismo para poner unas alarmas muy molonas.

Como sabéis -y si no os lo digo yo-, cron es un administrador de procesos que nos permite lanzar, a una hora determinada, un proceso. En otras palabras, es lo que usamos cuando queremos que, por ejemplo, un script que hace copias de seguridad se lance a las 02:00 AM todos los viernes. Es algo como las «tareas programadas» de windows (salvando las distancias, claro).

Para programar tareas debemos usar el comando crontab -e. Esto abrirá el fichero correspondiente (*) donde debemos introducir los minutos, la hora, día de la semana, etc. y el comando a ejecutar (más info aquí, donde lo explican perfectamente).

Como véis, podéis ejecutar cualquier script o programa pero, si habéis intentado ejecutar una aplicación gráfica, como audacious -por ejemplo-, esto no os funcionará. Para que lo haga hay que poner env DISPLAY=:0.0 justo antes del comando a ejecutar.

Centrándonos en el ejemplo que os comentaba antes (poner alarmas con cron) podríamos poner algo así:

 

10 18 * * * env DISPLAY=:0.0 /usr/bin/audacious /mnt/disco_multimedia/mp3/alarmas

Esto reproduciría, a las 18:10 de la tarde (todos los días), las canciones que se encuentren en el directorio /mnt/disco_multimedia/mp3/alarmas.

Por tanto, lo que haríamos para poner una alarma es editar el cron con el comando crontab -e indicando la hora a la que queremos que suene y ya está. Las canciones a reproducir, en lugar de tener que irlas copiando a dicho directorio, podéis hacer enlaces simbólicos al mismo, de forma que no tendréis que realizar ningún tipo de copia y podréis tener, de una forma sencilla, una lista de canciones a reproducir a una hora determinada, esto es, a la hora de la alarma 😉

Para finalizar comentar que, por supuesto, podéis configurar tantas alarmas como queráis.

 

(*) Lo abrirá con el editor de texto que esté indicado en la variable de entorno EDITOR. Si queremos poner emacs como nuestro editor por defecto (no se me ocurre ningún motivo para no hacerlo), simplemente ponemos export EDITOR=emacs en el .bashrc de nuestro usuario. Si queréis poner vi tendréis que googlear un para saber cómo… es broma, simplemente export EDITOR=vi, pero tened en cuenta que, como dice RMSvi-vi-vi es el editor del demonio, y con eso lo digo todo.

Un poco de… consola (I): backups en CD/DVD

Con este título inicio una sección que hablará sobre la consola de Linux (utilidades varias, trucos, curiosidades…). Así que, cuando tenga alguna cosita interesante que contaros al respecto, lo haré bajo un título similar (cambiará el número romano, eso sí).

Yo uso la consola a diario y, para las cosas más cotidianas, las que uso con mayor asiduidad, intento siempre crear un script y/o un alias para poder llevarlas a cabo de la forma más fácil y rápida posible.

Como habrá más artículos al respecto, no seré muy extenso intentando que sean cosas concisas y rápidas de probar (mejor aprender bien un truco ó dos que no ver un montón y no enterarte de nada). La idea es, por un lado, satisfacer vuestra curiosidad y, por otro, si lo encontráis interesante, que ampliéis vuestros recursos a la hora de trabajar con la consola.

Una vez hecha esta pequeña introducción a la nueva sección (el evento lo merecía ;-)), vamos ya al grano.

Hoy voy a hablaros de cómo grabar CDs/DVDs desde la consola. Imaginad que queréis meter unos archivos en un DVD. Yo, en mi caso, hago esto:

$ du DIR
$ ndvd DIR

donde DIR es el directorio donde tengo los archivos que quiero grabar. El primero me dice cuanto ocupa el directorio en MB/GB y el script ndvd graba ese contenido en un CD/DVD. Os detallo un poco más:

El comando du, en mi equipo, es un alias a ‘du -h –max-depth=1’, y ndvd es un script que creé y que contiene lo siguiente:

$ mkisofs -r -v -o imagen.iso $1
$ sudo cdrecord -v -speed=4 dev=/dev/sr0 imagen.iso

Este script, como véis, lo que hace es, primero generar una imagen iso del directorio (que luego podéis usar para grabar tantos DVDs como queráis usando cdrecord) y luego se graba al DVD.

Esto es todo por hoy. Probadlo y me contáis. Se admiten sugerencias.

Virtualización fácil con VirtualBox

No voy a entrar aquí en detalles sobre qué es la virtualización, tipos de virtualización, etc., (de esto lo mismo escribo un artículo en el futuro), sino que me voy a centrar en comentaros brevemente mi experiencia con software para virtualizar en GNU/Linux.

Hace tiempo comencé a usar qemu para «emular» distintas plataformas (incluso con otras arquitecturas distintas a la x86). Al tiempo apareció una solución de virtualización seria para Linux: KVM. La interfaz para interactuar con KVM es mediante qemu, por lo que lo prácticado con anterioridad me valía perfectamente.

Básicamente, lo que tenía que hacer es crear el disco duro con qemu-img create… y luego arrancar la máquina virtual con kvm -boot d -cdrom  /dev/sr0 … En línea de comandos especificaba los parámetros de la máquina virtual.

Esto es práctico y es rápido, sobre todo si usas mucho la línea de comandos, como es mi caso. Para usar la red en modo bridge (i.e., para poder conectar la máquina virtual a la misma red que la del equipo anfitrión) tenía que crear un bridge en Linux, configurarlo y añadir las distintas interfaces.

Todo me iba bien hasta que lo usé en mi portátil con la red inalámbrica, y es que para hacer un bridge con wifi es algo más complicado de esta forma. Tengo por ahí algún enlace donde alguien se curró un método (no es sencillo) para poder hacerlo -por si a alguno de mis millones de seguidores les interesa-.

Así las cosas, me instalé VirtualBox. Ya lo había probado antes pero no a fondo. Pues ahora sí que lo he probado bastante y puedo decir que lo llevo usando bastante tiempo y me va genial. Con VirtualBox se crea el puente instantáneamente simplemente seleccionando que quieres usar la tarjeta inalámbrica del equipo anfitrión. Va perfecto.

Además, tienes las expansiones que permiten optimizar el funcionamiento de las máquinas virtuales cuando son, sobre todo, máquinas windows (es un paquete de drivers actualizados para los dispositivos virtuales).

Por tanto, y aunque existen soluciones tipo frontend para kvm muy completas (como virt-manager, por ejemplo), para un uso personal de este tipo de software (probar nuevos sistemas, programas, etc., en entornos cerrados virtualizados), recomiendo que uséis VirtualBox. Al menos probadlo (si no lo habéis hecho ya) y me comentáis.

Por cierto, si queréis probar imágenes de sistemas ya instalados y preconfigurados, echad un vistazo aquí.

Ubuntu no termina de apagar el equipo

Existe un bug en Ubuntu 12.04 por el cuál, si usas «halt» para detener el equipo, el sistema operativo se «cierra» (es decir, detiene los procesos ordenadamente, cierra los ficheros abiertos, sockets, etc.) pero no se apaga el equipo (tienes que darle al botoncito 4 segundos para que se apague completamente).

La solución es fácil: usa «shutdown -h -y now» en lugar de «halt». Ya está ;-).

Montar imagen qcow para explorar su contenido

Tenemos una imagen creada con qemu-img, con formato qcow ó qcow2 (que hemos usado en qemu/kvm). Queremos sacar archivos de la misma sin tener que arrancar la máquina virtual.

Una solución sencilla es ésta.

1.- Convertimos la imagen qcow a formato raw (así se puede luego montar más fácilmente luego):

qemu-img convert -o raw IMAGEN_A_CONVERTIR.qcow IMAGEN_CONVERTIDA.img

2.- Tenemos la imagen en formato raw. Con la utilidad disktype podemos ver qué particiones tiene y dónde están (lo que hace es mirar la tabla de particiones de dicha imagen).

 

[20:21:53 root user]# disktype vm1.img
--- vm1.img
Regular file, size 8 GiB (8589934592 bytes)
DOS/MBR partition map
Partition 1: 7.608 GiB (8169455616 bytes, 15955968 sectors from 2048, bootable)
 Type 0x83 (Linux)
 Ext3 file system
 UUID 2A6FB4D5-F393-4F9F-94FC-8D8A46F23D57 (DCE, v4)
 Last mounted at "/"
 Volume size 7.608 GiB (8169455616 bytes, 1994496 blocks of 4 KiB)
Partition 2: 398.0 MiB (417334272 bytes, 815106 sectors from 15960062)
 Type 0x05 (Extended)
 Partition 5: 398 MiB (417333248 bytes, 815104 sectors from 15960062+2)
 Type 0x82 (Linux swap / Solaris)
 Linux swap, version 2, subversion 1, 4 KiB pages, little-endian
 Swap size 398.0 MiB (417325056 bytes, 101886 pages of 4 KiB)

3.-  usamos kpartx para crear un mapeo de las distintas particiones a ficheros de dispositivo de nuestro GNU/Linux. De esta forma podemos montar cada una de ellas manualmente.

[20:08:44 root amms]# kpartx -v -a vm1.img 
add map loop0p1 (252:0): 0 15955968 linear /dev/loop0 2048
add map loop0p2 (252:1): 0 815106 linear /dev/loop0 15960062
add map loop0p5 : 0 815104 linear 252:1 2

4.- Ahora ya podemos montar la imagen en un directorio de esta forma:

mount -t ext3 /dev/mapper/loop0p1 /mnt/temp

Ahora ya podéis acceder a los archivos que tenéis en dicha partición para leerlos, copiarlos, etc.

Para que esto os funcione, necesitáis tener instaladas las utilidades qemu-utils, disktype y kpartx (con aptitude, apt-get, yaourt, yum… dependiendo de la distro que uséis).

Programas que uso en Openbox

Hola, aquí estoy de nuevo.

En el último post os comenté que la distro que yo usaba era una Ubuntu Server + Openbox. Como sabéis, Openbox es un gestor de ventanas que viene peladito de opciones, todo lo contrario a Gnome o KDE.

Entonces, una vez instalado Openbox, y ya sea con el uso de scripts como los que os comenté en dicho post o bien manualmente instalando los programas uno a uno, debéis instalar aquellas utilidades que harán más usable vuestro equipo.

Aquí os voy a comentar brevemente algunas utilidades y programas uso yo en Openbox (me refiero a las relacionadas con el entorno gráfico). Allá van:

  • fbpanel: barra de tareas (dispone de menú de aplicaciones, bandeja del sistema, pager -para ver los escritorios disponibles-, reloj del sistema, aplicaciones abiertas…). Probé varios (pypanel o tint2, por ejemplo) pero me gustó más fbpanel porque es sencillo, completo (incluye menus, lanzadores, bandeja del sistema, pager…) y se puede aplicar transparencia.
  • thunar: explorador de archivos. Sencillo y rápido.
  • fehpara personalizar el fondo de escritorio.
  • xcompmgr: para dar un poco de sombra a las ventanitas (para que la cosa no quede tan sosa).
  • conky: monitor del sistema que se integra en vuestro escritorio y que podéis usar para saber de un vistazo cómo va vuestro equipo en cuanto a carga de CPU, memoria, disco, procesos… e incluso otras cositas como qué canción se está reproduciendo.
Tenéis mucha y muy buena información de cómo dejar al pelo Openbox en la Wiki de Archlinux y también en el blog de urukrama.
Hay varias cosas de Openbox que me gustan mucho y que, para mí, lo erigen como uno de los mejores gestores de ventanas disponibles para GNU/Linux:
  • Es muy ligero y muy rápido. Notaréis que arranca en un plís y no consume prácticamente nada de recursos.
  • Fácil y «limpio» de configurar. Cuando digo «limpio» me refiero a que con sólo unos pocos ficheros en texto plano se configura prácticamente todo en openbox (autostart.sh, menu.xml y rc.xml).
  • Muy sencillo configurar atajos de teclado (en rc.xml).
  • Permite ligar una aplicación a un escritorio, de forma que siempre que abras, por ejemplo, el navegador, se habra en el mismo escritorio (lo que ayuda a que, si tienes varios escritorios, poder organizar mejor tu espacio de trabajo).
  • Menú dinámico. Puedes ejecutar scripts al abrir opciones del menú de forma que, por ejemplo, puedes ver el listado de un directorio, los mails pendientes de leer, la temperatura en tu ciudad…
Si os animáis a usarlo o si ya lo usáis, cualquier comentario o sugerencia son bienvenidos.
Hasta la próxima!

Mi distro: Ubuntu Server + Openbox

En los artículos anteriores «En busca de la distro perfecta» partes I y II, os comentaba cómo pasé por las distintas distros hasta acabar en la que uso ahora mismo, que no es otra que Ubuntu Server con el gestor de ventanas Openbox.

Os voy a explicar a continuación cómo dejar dicha distro operativa para trabajar.

LA BASE: GNU/Linux

Queremos instalar un gestor de ventanas (Openbox en este caso), pero ¿sobre qué distro? Bien, podríamos usar cualquiera, ya que cuando instalamos un nuevo gestor de ventanas, normalmente, el gestor de login gráfico (xdm, kdm, lightdm…) reconoce esto y en el siguiente reinicio se puede seleccionar desde la ventana de entrada y usar dicho gestor de ventanas/escritorio. Sin embargo, una vez que tenemos claro qué gestor de ventanas queremos, ¿para qué instalar una distro con su propio gestor de ventanas para luego desinstalarlo o directamente no usarlo?

Mi opción, como os indicaba antes, es instalar una distro de tipo Server, es decir, en modo texto, sin entorno gráfico y, a partir de ahí, comenzar con la instalación de todo. Yo uso Ubuntu Server desde hace tiempo. Actualmente tengo la 12.04 de 64 bits y me va bastante bien (quiero probar archlinux a fondo, pero no encuentro el momento, así que sigo con Ubuntu Server).

Lo que haríamos, por tanto, es una instalación de un Ubuntu Server 12.04 64 bits (*). No voy a entrar en detalles de esta instalación ya que hay muchos sitios donde encontraréis esto (googlead un poco y hallaréis respuesta).

Instalación del gestor de ventanas

En el título pongo gestor de ventanas y no Openbox en particular porque estos pasos los podéis usar para instalar cualquier gestor de ventanas que os interese probar: icewm, fluxbox, window manager, etc.

Voy directamente a los comandos a introducir. No me gusta sudo (aunque reconozco que para muchos usuarios puede ser interesante), así que directamente os pongo los comandos de root (**), de ahí el símbolo «#» en lugar de «$». Al grano:

# aptitude install x-window-system (***)
# aptitude install openbox

Con esto ya podemos arrancar nuestro openbox con «startx». Si reinicias el equipo seguirá pidiendoos el login en modo texto. ¿Esperábais algún login tipo gráfico? Esto no es parte de openbox ni de ningún gestor de ventanas. Si queréis un login gráfico tenéis que instalar algo como xdm, kdm… Si queréis algo sencillo:

# aptitude install slim

Yo a veces trabajo en modo texto, así que por éste y otros motivos (****) prefiero login en modo texto. Si lo queréis logaros en modo gráfico -como en cualquier distro actual-, con el comando anterior ya lo tenéis (tras la instalación de «slim» reiniciáis el equipo y ya está). Hay por ahí mucha info sobre slim (es muy fácil de configurar). Si queréis otro gestor de entrada (o gestor de sesiones, o gestor de acceso, que también se le conoce así), tenéis gdm, kdm, … también lightdm (que se ha usado mucho en Ubuntu) e incluso el del entorno enlightenment: entrance.

Bueno, con esto ya tenemos un ubuntu server pero ya con gestor de ventanas, y no uno cualquiera, si no, como diría el gran Chiquito de la Calzada: ¡»echepeacho» de openbox!

Instalando el resto de cositas

Ahora hay que instalar aplicaciones para darle vida al entorno de escritorio, no? Hombre, es que si no… poco vamos a poder hacer con el sistema ;-). A estas alturas quizás ya alguno comience a preguntarse: «pero, ¿cada vez que quiera probar una nueva distro de ubuntu server tengo que instalar el gestor de ventanas, configurarlo y luego instalar de nuevo todas las cosas?»

La respuesta es simple: sí. No obstante, esto no quiere decir que tengáis que hacelo «a mano». Una de las razones por las que me gusta mucho GNU/Linux es por la potencia de sus scripts. De hecho, yo programé hace tiempo un script (en realidad varios) de forma que cuando instalo ubuntu server simplemente lo ejecuto y todo se instala y se configura automáticamente.

Este script (se llama «inst_todo.sh») llama a otros scripts que van haciendo las distintas cosas que necesito en mi GNU/Linux. Así pues, tengo estos scripts:

  • inst_actualiza_fstab.sh
  • inst_actualiza_hosts.sh
  • inst_actualiza_red.sh
  • inst_actualiza_repos_distro.sh
  • inst_crea_dirs.sh
  • inst_fuentes_ttf.sh
  • inst_juegos.sh
  • inst_mediatomb.sh
  • inst_paquetes.sh
  • inst_post.sh
  • inst_prepara_home_root.sh
  • inst_prepara_home.sh
  • inst_qemu.sh
  • inst_reemplaza_rc.local.sh
  • inst_scripts.sh
  • inst_soluciona_bugs.sh
  • inst_todo.sh
  • set_variables.conf

El nombre indica más o menos para qué sirve dicho script. En realidad, inst_todo.sh no es más que una llamada a todos los que queremos ejecutar, por lo que ejecutando ése ya se irían ejecutando todos, uno tras otro.

Los scritps inst_prepara_home.sh e inst_prepara_home_root.sh, además de -como su propio nombre indica- preparar el directorio home de el usuario normal y de root respectivamente, ejecuta otras posibles acciones que haya que realizar desde ese usuario. Así pues, seguramente en el futuro los renombre, porque cada vez van siendo más genéricos, pero de momento ése es su nombre actual.

Todos los scripts aceptan un parámetro, que puede ser «casa» o «laptop» (podéis añadir más fácilmente), según el ordenata de que se trate (sí, uso el mismo sistema en los 2). La idea es que en cada equipo (el cuál tiene una ubicación y un objetivo distinto) tiene unas necesidades particulares diferentes. Así pues, si acabo de instalar ubuntu server en mi PC de casa, ejecuto como root el script inst_todo.sh pasándole el parámetro casa. Si es en el portátil, tras la instalación de ubuntu server ejecuto dicho script pero pasándole como argumento laptop.

Existe un archivo llamado set_variables.conf, que es un fichero que define varias variables de entorno, las cuáles hacen referencia a los distintos directorios y archivos necesarios para la configuración del sistema. Esto lo uso porque no quiero referencias concretas en los scripts a ficheros y rutas de archivos, ya que si éstas cambian se me fastidia el invento cada 2×3.

Si queréis usarlo tendréis que cambiar este archivo para adaptarlo a vuestra jerarquía de directorios. También tendréis que adaptar posiblemente, los scripts inst_prepara_home.sh e inst_prepara_home_root.sh, ya que dependerá de los programas que uséis. De hecho, algunos de los que ahí aparecen ya no los uso, pero tengo su parte correspondiente en el script por si en el futuro vuelvo a usarlo.

Puesto que son muchas las aplicaciones que tengo instaladas, y dado que los scripts son bastante autoexplicativos, me limito a poneros el enlace para la descarga: Scripts para autoconfiguración del sistema.

Lo que conseguiréis con esto es que tras la instalación de inst_todo.sh y reiniciar el equipo tendréis el sistema como lo teníais la última vez conservando todo: configuración de los programas que usáis, atajos de teclas, fondo de pantalla, etc.

Lo ideal es que si usáis estos scripts, que cada vez que añadáis un programa nuevo a vuestro sistema, que lo tengáis en cuenta en dichos scripts. Básicamente, implicará añadirlo en el archivo «paquetes_XXX.txt» (donde XXX puede ser «generic» -si se va a instalar en todos los equipos, «casa» si se va a instalar en el pc de casa o «laptop» si se va a instalar en el portátil). También, si el programa tiene una configuración particular (normalmente en vuestro /home) lo suyo es hacer como en el script inst_prepara_home.sh y crear enlaces simbólicos a dichos archivos (que previamente habréis movido a vuestra partición de datos). Así siempre que los modifiquéis los cambios se guardarán incluso aunque formateéis de nuevo 😉

Si tenéis dudas me preguntáis. Si tenéis sugerencias también se agradecen.

En otro artículo os comentaré cómo tengo configurado el entorno. Por hoy ya no más.

(*) Si no tenéis procesadores de 64 bits -aunque muy antiguo tiene que ser: P IV, etc.-, si no tenéis más de 4 GB de RAM o directamente si preferís la de 32 bits, pues cogéis ésa, da igual.

(**) Cuando instalas una ubuntu o derivada, no tienes password de root. Para conseguirlo, nada más fácil:

$ sudo passwd

Metemos nuestro password y nos pedirá dos veces el de root. Ya está.

(***) Siempre uso aptitude, no apt-get. En las últimas versiones de ubuntu no viene instalado. Si es el caso:

# apt-get install aptitude

(****) Un día os pondré varios ejemplos de tareas que, aunque estamos acostumbrados a llevarlas a cabo desde un entorno gráfico, se pueden llevar perfectamente a cabo en modo texto (reproducción de música, grabación cds… entre otras).