Cambiar orden de arranque en GRUB2

miércoles, noviembre 26, 2008

GRUB (GRand Unified Bootloader) es un gestor de arranque múltiple que se usa para iniciar dos o más sistemas operativos instalados en un mismo equipo. Es el gestor de arranque usado por la mayoría de las distribuciones GNU/Linux, sin embargo su desarrollo ya no esta activo; solamente se corrigen errores mientras GRUB2 se estabiliza.

GRUB2 es un gestor de arranque derivado de PUPA y constituye la evolución del famoso GRUB. Ha sido reescrito desde cero con la finalidad de corregir todos los errores de GRUB e implementar nuevos esquemas de modularidad y portabilidad.

Los que venimos de GRUB estamos acostumbrados a cambiar todas las opciones de arranque desde el archivo /boot/grub/menu.lst, sin embargo en GRUB2 este archivo no se utiliza. Para cambiar las opciones de arranque (especificamente el orden de arranque) en GRUB2 debemos editar el archivo /etc/default/grub. En la línea:

GRUB_DEFAULT=0
Colocaremos la opción que queremos por defecto al momento de arrancar (0 para la primera opción, 1 para la segunda y así sucesivamente).

Luego ejecutamos (como super usuario):

# update-grub
Ese último comando regenera todos los archivos de configuración del GRUB2 para que los cambios surtan efecto.

Solo queda reiniciar y verificar que todo está en el orden que deseamos :)

Clonar un CD/DVD desde la consola

martes, noviembre 25, 2008

Si tenemos una sola unidad óptica (CD-RW o DVD-RW) y queremos duplicar un disco desde la consola entonces la siguiente receta nos será de mucha utilidad.

Primero colocamos el CD/DVD original (el que se desea duplicar) en la unidad para crear la réplica exacta en nuestro disco duro (es decir una imagen). Para ello necesitamos saber en que dispositivo se encuentra el CD-RW/DVD-RW, eso lo obtenemos con el comando ls:

$ ls /dev/cd*
/dev/cdrom /dev/cdrw

En nuestro caso se encuentra bajo el dispositivo /dev/cdrw.

Ahora con el comando dd realizamos la imagen:

$ dd if=/dev/cdrw of=nombre_imagen.iso
El argumento if nos indica el archivo (o dispositivo) de entrada, mientras que el of se refiere al archivo de salida, en nuestro caso el archivo de imagen .iso.

Luego de unos minutos tendremos un archivo idéntico al CD/DVD (con los mismos pelos y señales) en nuestro disco duro. Ahora para grabarlo en otro disco usaremos el comando wodim. Si no lo tenemos instalado lo hacemos con aptitude:

# aptitude install wodim

Para usar el wodim debemos especificar el nombre del dispositivo grabador. Por alguna extraña razón wodim no emplea la misma terminología para los dispositivos que dd, así que es necesario ejecutar el comando wodim para saber en que dispositivo grabaremos.

$ wodim --devices
wodim: Overview of accessible drives (1 found) :
-------------------------------------------------------------------------
0 dev='/dev/hdb' rwrw-- : 'TSSTcorp' 'CD/DVDW SH-S182F'
-------------------------------------------------------------------------

Como podemos observar wodim nos arroja que el dispositivo es el /dev/hdb. Con esa información procedemos a grabar. Insertamos entonces un disco en blanco en la unidad y ejecutamos la siguiente orden:

$ wodim -v -fs=128M -eject -dev=/dev/hdb nombre_imagen.iso

Al finalizar podremos disfrutar de una copia exacta de nuestro CD/DVD

Desordenar arreglos en Python

lunes, noviembre 24, 2008

Hace algún tiempo publiqué un pequeño algoritmo para desordenar arreglos en C++. Esta vez escribiré el mismo algoritmo pero en Python; veamos:

import random

arreglo = []

for i in range(44):
arreglo.append(i)

# Esta línea realiza todo el trabajo sucio de desordenar el arreglo y lo
# guarda en la misma variable :D
random.shuffle(arreglo)

Con eso ya tenemos nuestro arreglo desordenado... A lo Python! xD

Ejecutar comandos del shell en Python y capturar su salida

miércoles, noviembre 19, 2008

A veces cuando escribimos un programa necesitamos ejecutar algún comando en la consola y tomar su salida para realizar una acción o tomar una decisión.

La mayoría de los lenguajes de programación incorporan funciones que nos permiten ejecutar órdenes en la consola del sistema operativo y Python no es la excepción. Además lo hace realmente fácil ;)

Para ello haremos uso del módulo subprocess, que a diferencia del os.system() o del os.popen() es mucho más intuitivo y sencillo de usar.

El módulo define una función conveniente llamada call que ejecuta un comando y espera hasta que termine su ejecución. Recibe una gran cantidad de parámetros, pero solo nos interesan el comando a ejecutar, el descriptor de archivo de la salida estándar (stdout) y el descriptor de archivo de la salida de errores (stderr). Estos descriptores son importantes porque allí es donde se almacenará la salida del programa (lo que normalmente imprime en la consola) y los mensajes de error (que también se imprimen en la consola).

El comando debe ser una lista de cádenas de caracteres, el primer elemento a ejecutar es el comando y los elementos siguientes son cada uno de los argumentos que recibe dicho comando. Los descriptores de archivos son eso... vulgares descriptores de archivos :D

Pero es suficiente de preámbulos... Show me the code!

# importamos el módulo
import subprocess

# Creamos los descriptores de archivos como dos vulgares archivos
# con permisos de escritura llamados 'archivo_out' y 'archivo_err'
outfd = open('archivo_out', 'w+')
errfd = open('archivo_err', 'w+')

# Supongamos que queremos ejecutamos el comando: ls -l -a
subprocess.call(['ls', '-l', '-a'], stdout=outfd, stderr=errfd)

# Cerramos los archivos para que se escriban los cambios y se liberen
# los buffers de I/O
outfd.close()
errfd.close()

# Ahora leemos todo lo que tengan los archivos y guardamos en la variable
# output la salida estándar y en err la salida de error.
fd = open('archivo_out', 'r')
output = fd.read()
fd.close()

fd = open('archivo_err', 'r')
err = fd.read()
fd.close()

# Por último mostramos lo que tienen las variables
print 'stdout: %s\n' % output
print 'stderr: %s' % err

Con eso ya podemos ejecutar cualquier comando en la shell usando Python, esperar su salida y además guardarla en una variable para procesarla más adelante

Instalar Enlightenment E17 en Debian Lenny

domingo, noviembre 09, 2008


Para aquellos que no lo conocen, Enlightenment o simplemente E es un gestor de ventanas para Unix y GNU/Linux muy atractivo y con efectos visuales alucinantes.

La DR17 es la versión en desarrollo de Enlightenment pero ofrece una gran estabilidad y una buena integración con el entorno, todo con una arquitectura gráficamente espectacular y flexible. Para más detalles de Enlightenment visita la página oficial

Bueno, ahora a lo que vinimos; en este post explicaré como instalar la versión DR17 (E17) en Debian Lenny.

Primero agregamos los repositorios de desarrollo de Enlightenment a nuestro /etc/apt/sources.list:
deb http://debian.alphagemini.org/ unstable main
deb-src http://debian.alphagemini.org/ unstable main


Luego agregamos la clave gpg ejecutando estas instrucciones en la consola:
# gpg --keyserver pgp.rediris.es --recv-keys 7E5D69A103CA4243
# gpg --armor --export 7E5D69A103CA4243 | apt-key add -


Hacemos una actualización de la lista de paquetes:
# aptitude update

Y por último instalamos el gestor de ventanas:
# aptitude install e17

El resultado está a la vista, las imágenes corresponden a los distintos temas que probé en mi escritorio.









Seguiré jugando con el E17 y postearé cualquier otra novedad que consiga

Instalar impresora HP3745 en Debian Lenny

martes, noviembre 04, 2008

El procedimiento descrito a continuación se realizó para el modelo de impresora HP Deskjet 3745, sin embargo es idéntico para otra gama amplia de modelos HP.

Lo primero que debemos hacer es asegurarnos que nuestro sistema esté al día:
# aptitude update
# aptitude safe-upgrade


Posteriormente instalamos los paquetes necesarios para la puesta a punto de la impresora.
# aptitude install hplip hpijs foomatic-db-hpijs

Ahora basta con abrir una nueva ventana/pestaña del navegador y cargar la URL http://localhost:631. Inmediatamente le aparecerá la página de bienvenida del sistema CUPS


Hacemos click en Añadir impresora y veremos algo como:


Llenamos los campos con la información requerida y hacemos click en Siguiente. Ahora nos sale una pantalla donde es necesario seleccionar el tipo de conexión con la impresora.


En este caso la impresora está conectada por cable USB, así que tomaremos la opción que dice USB y que además contiene la palabra HPLIP y el serial de la misma.

Por último el CUPS nos pregunta sobre el modelo de la impresora


Seleccionamos el modelo de nuestra impresora y hacemos click en Añadir impresora y con eso tenemos la impresora instalada y funcionando a la perfección.



Luego de eso solo queda probar la impresión con nuestro programa favorito o llamar desde la consola al toolbox de HP con el comando:
$ hp-toolbox

Instalar driver NVIDIA a la Debian-Way

miércoles, octubre 29, 2008

El procedimiento descrito a continuación fue probado en Debian Lenny pero debería funcionar para la mayoría de las distribuciones derivadas de Debian sin mucho problema. Usaremos el paquete module-assistant para llevar a cabo la tarea

Lo primero es instalar el module-assistant:
# aptitude install module-assistant
Posteriormente instalarmos los headers del kernel que estamos usando:
# aptitude install linux-headers-$(uname -r)
Después de esto ejecutamos los siguientes pasos:
# module-assistant update
# module-assistant prepare
# module-assistant auto-install nvidia

O lo que es lo mismo:
# m-a update
# m-a prepare
# m-a a-i nvidia

Con eso le decimos al module assistant que se encargue de descargar, compilar, empaquetar e instalar el driver NVIDIA correspondiente a nuestra tarjeta de video.

Pero ahora nos falta configurar el servidor X.Org para que haga uso del driver. Para ello instalamos el paquete nvidia-xconfig:
# aptitude install nvidia-xconfig
Y luego lo ejecutamos:
# nvidia-xconfig
Con eso tendremos el archivo /etc/X11/xorg.conf configurado y listo para la acción.

Finalmente, reiniciamos las X's presionando Ctrl + Alt + Backspace o ejecutando el siguiente comando:
# /etc/init.d/gdm restart
Si todo ha salido bien deberíamos ver el logo de NVIDIA en nuestra pantalla y un driver completamente funcional