martes, 19 de agosto de 2008

* NUEVA TECNOLOGIA PRETENDE AHORRAR ANCHO DE BANDA A PAISES EN VIAS DE DESARROLLO

Noticia extraída de FayerWayer :

- Científicos y expertos en computación en Pakistán han desarrollado un concepto tecnológico que pretende aumentar la velocidad de transmisión de datos, sin tener que invertir en costoso equipos. Básicamente es crear un Súper Cache distribuido entre miles de computadoras y redes alrededor del mundo.

Continuar leyendo el resto de la noticia: FayerWayer

* UNA IMAGEN DE FONDO PARA MI GRUB

Artículo extraído desde inforux.wordpress.com

- En estos dias tuve la oportunidad de visitar a unos amigos y vi como tenian fotos de fondo en su GRUB. Asi q datendo en la inet, encontre varios cositas, y aqui les paso el resumen. La idea es tener una imagen *xmp, luego comprimirla a *gz, y finalmente decirle al GRUB donde esta la imagen.

Continuar leyendo el resto del artículo: inforux.wordpress.com

martes, 12 de agosto de 2008

* «NO HAY LIBERTAD SIN «SOFTWARE» LIBRE»

Richard Stallman en una reciente entrevista señaló entre otras cosas lo sgte. :

"El término propiedad sugiere otro marco conceptual que es incorrecto,
ya que alza los intereses del autor sobre los intereses del público, y el interés público
es lo más importante en todos lo relativo a los derechos de autor"

Fuente y más detalles de la entrevista en: http://www.abc.es/abcd/noticia.asp?id=9744&num=861&sec=39

jueves, 10 de julio de 2008

* RADIO ONLINE A MP3

- El presente video tutorial muestra como capturar una señal de radio online, mientras es escuchada usando el reproductor de audio Amarok. La señal es capturada y grabada en formato mp3 usando un script de Amarok llamado 'RecordRadio' , y luego editada extrayendo un tema (u otro contenido de audio) que nos interese y se genera un archivo .mp3 para el tema extraído.

- Antes que nada instalamos los paquetes necesarios en nuestro debian.

#apt-get install amarok streamripper audacity

- Amarok es un reproductor de audio, streamripper permite grabar streaming de audio al disco duro y audacity es un editor de audio.

- Si grabamos el streaming usando streamripper, en modo consola, no podremos escuchar lo que estamos grabando, debido a esto decidimos bajar un script de Amarok llamado 'RecordRadio' (tal como se muestra en el video tutorial) el cual nos permitirá integrar Streamripper con Amarok y así podremos, comodamente, escuchar lo que estamos grabando.

- En el caso nuestro, luego de que el streaming de audio ha sido grabado al disco duro, en forma de un archivo .mp3 que contiene más de una tema, procedemos a editarlo con Audacity para extraer uno o mas temas y a su vez guardarlos como nuevos archivos .mp3. En algunos casos este paso no es necesario, pues cada tema queda automáticamente grabado en un archivo .mp3 separado.

- Nota: Grabé el video con una resolución de 800x600 pues utilicé un PC cuyo procesador es un intel celeron de 566Mz solamente.

- Bueno, si una imagen vale más que mil palabras, pues entonces un video debería valer 'Total de frames del video' multiplicado por mil palabras, je je. Así es que vamos con el video:

VIDEO TUTORIAL
GRABACION RADIO ON LINE A ARCHIVO .MP3
(haga clic en esta imagen para ver video)

lunes, 28 de abril de 2008

* MOVIENDO SERVIDOR MYSQL A OTRA MAQUINA

El procedimiento que describo en el presente artículo, lo puse en práctica hace algún tiempo y ahora procedo a documentarlo a modo de compartir esta simple solución aplicada para aumentar el rendimiento de un servidor LAMP.

"Problema: Se tiene un servidor LAMP (Linux Apache Mysql Php) el cual se ha notado un poco lento y se desea liberarlo un poco de trabajo"

La solución adoptada consiste en simplemente instalar un servidor mysql en otra máquina la cual se dedicará única y exclusivamente a dar servicio de base de datos MYSQL, y detener el que estaba corriendo en la máquina en donde está instalado el apache liberando así más recursos de memoria y procesador.

Hasta aquí todo se ve simple, pero la idea es hacer el cambio de forma transparente para los clientes que tienen su servicio de web hosting, es decir, que estos no tengan que hacer ningun cambio en sus páginas php, perl u otro. Ellos deben seguir viendo un servidor MYSQL corriendo en el localhost y o en 127.0.0.1 pero el servidor en verdad estará corriendo en otra máquina sin que ellos se den cuenta.

Bueno, como ya se captó la idea, lo que haremos es engañar a los clientes los cuales harán sus conexiones mysql desde php a un servidor local que en realidad no es tal, pues en verdad es remoto, y para lograr esto haremos un tunel desde un puerto tcp local (3306) al puerto tcp remoto (3306) de manera que todas las peticiones mysql que lleguen a la ip 127.0.0.1 se vayan directo a la ip del servidor remoto. Para lograr nuestro cometido de forma muy simple usaremos un software llamado 'socat' el cual pese a su simplicidad de uso es muy poderoso, flexible, con muchas opciones, y se le puede dar muchísimas aplicaciones.

Pero no olvidemos que los sitios que se conectan a una base mysql desde php normalmente tienen configurado como servidor 'localhost', y en este caso las conexiones no son realizadas via tcp sino via socket unix, de manera que debemos buscar la forma de que este tipo de peticiones también sean reenviadas al servidor remoto. ¡ Ha pero no hay problema ! Con socat también podemos manejar las conexiones a sockets unix y transformarlas en conexiones tcp.

¡ Que maravilloso es socat !

Entonces manos a la obra:

1) Lo primero que debemos hacer es instalar el nuevo servidor MYSQL, ya saben
#apt-get install mysql-server
No olviden comentar o modificar la línea que dice "bind-address = 127.0.0.1" en el archivo /etc/mysql/my.cnf de lo contrario el servidor mysql sólo escuchará las peticiones provenientes del host local.
#/etc/init.d/mysql stop
#/etc/init.d/mysql start

2) Una vez que esté listo mysql-server, podemos traernos las bases de datos desde el servidor original usando mysqldump. Hay que tener en cuenta que si tenemos el servidor web arriba puede que se esté escribiendo en algunas de las bases de datos, por tanto debemos bajarlo, y también bajar cualquier script o programa que pudiese escribir en el servidor mysql, mientras realizamos todo el proceso que dejará funcionando el tunel.

#/etc/init.d/apache2 stop
#read -p "Ingresar Clave: " -s clave;mysqldump -A --add-drop-table --password=$clave > dump.sql;chmod go-r dump.sql

Movemos el archivo al host remoto usando scp u otro medio.
#scp dump.sql root@10.0.0.209:/root/dump.sql

Luego volcamos toda la información de la base de datos original en el nuevo servidor mysql:
#mysql -p < /root/dump.sql
Si después de esto hacemos un stop y luego un start del servidor, éste no partirá y arrojará un error como este:
ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)
Para corregir esto se deben copiar la o las password que están en el archivo /etc/mysql/debian.cnf desde el servidor orginal al mismo archivo que esta en el nuevo servidor.Y luego:
#/etc/init.d/mysql stop #/etc/init.d/mysql start

3) Recordemos que la mayoría de los permisos de los usuarios mysql hacen referencia al localhost, ya que las consultas se hacían desde el equipo local, pero ahora las consultas que hagan nuestros usuarios serán redireccionadas desde el host original al host nuevo. Esto quiere decir que debemos agregar los mismos permisos que los usuarios tienen desde el localhost pero considerando que ahora viene desde la ip del host original. Podríamos hacer esta tarea manualmente ingresando los permisos uno por uno, pero en el caso que tengamos varias bases de datos podría ser un poco lento y tedioso, asi es que recomiendo hacer lo sgte.:
En el nuevo servidor:
#echo "select * from user;" | mysql -p mysql | grep "^localhost" | grep -v "debian-sys-maint" | sed "s/^localhost/10.0.0.126/" > /root/user.sql
(reemplace la ip 10.0.0.126 por la ip de su servidor original)

#echo "LOAD DATA INFILE '/root/user.sql' INTO TABLE user;" | mysql -p mysql

Luego haga algo similar en la tabla 'db', así:
#echo "select * from db;" | mysql -p mysql | grep "^localhost" | sed "s/^localhost/10.0.0.126/" > /root/db.sql
#echo "LOAD DATA INFILE '/root/db.sql' INTO TABLE db;" | mysql -p mysql
#echo "flush privileges;" | mysql -p

Ahora, hay que hacer pruebas de conexiones a las bases de datos desde el host original al nuevo. Ej.:
#echo "show tables;" | mysql -u usuario1 -h 10.0.0.209 -p base1
Aquí debe reemplazar usuario1 por el usuario de conexion a la base1 (donde base1 es el nombre de la base que está probando). Al probar todas las bases de la misma forma debería arrojar el listado de tablas que tiene cada base.

4) Bueno, y finalmente en el servidor original crearemos los tuneles mysql hacia el nuevo sevidor de base de datos mysql. Para mayor comodidad yo me hice un script con el cual puedo, comodamente, levantar y bajar los tuneles. El contenido del script es el sgte.:

#!/bin/sh
NAME="tunel-mysql"
REMOTE_HOST="10.0.0.209"
REMOTE_PORT="3306"
LOCAL_PORT="3306"

case "$1" in
start)
echo -n "Iniciando 'tunel-mysql' ..."
socat -d -lf/var/log/socat.log UNIX-LISTEN:/var/run/mysqld/mysqld.sock,reuseaddr,fork,unlink-early,mode=777,su=nobody,user=mysql,group=mysql TCP4:$REMOTE_HOST:$REMOTE_PORT &
socat -d -lf/var/log/socat.log TCP4-LISTEN:$LOCAL_PORT,setuid=nobody,fork,reuseaddr TCP4:$REMOTE_HOST:$REMOTE_PORT &
echo " HECHO"
;;

stop)
echo -n "Deteniendo 'tunel-mysql' ..."
killall socat
echo " HECHO"
;;

restart)
echo -n "Deteniendo 'tunel-mysql' ..."
killall socat
echo " HECHO"
echo -n "Iniciando 'tunel-mysql' ..."
sleep 3
socat -d -lf/var/log/socat.log UNIX-LISTEN:/var/run/mysqld/mysqld.sock,reuseaddr,fork,unlink-early,mode=777,su=nobody,user=mysql,group=mysql TCP4:$REMOTE_HOST:$REMOTE_PORT &
socat -d -lf/var/log/socat.log TCP4-LISTEN:$LOCAL_PORT TCP4:$REMOTE_HOST:$REMOTE_PORT &
echo " HECHO"
;;

*)
echo "Usage: /etc/init.d/$NAME {start|stop|restart}"
exit 1
;;

esac
#Fin del script

Reemplace el valor de la variable REMOTE_HOST por la dirección ip de su nuevo servidor mysql.
Este script debe quedar en /etc/init.d/tunel-mysql. Seteamos los permisos de ejecución correspondientes:
#chmod ugo+x /etc/init.d/tunel-mysql
No olvide que antes de subir el tunel se debe bajar el servidor mysql y desactivarlo para que no vuelva a subir automáticamente al reiniciar el servidor.
#/etc/init.d/mysql stop

Para desactivar el inicio automático puedes usar la utilidad rcconf y desmarcar mysql (usando tecla espaciadora)
o bien hacer: # rm /etc/rc*.d/S*mysql

Pero, antes que se nos olvide lo principal:
#apt-get install socat

Y listo, ahora subimos el tunel:
#/etc/init.d/tunel-mysql start

Haga algunas pruebas finales de conexión a algunas bases de datos de la stge. forma:

#echo "show tables;" | mysql -u usuario1 -h localhost -p base1

y también haga pruebas de la forma: #echo "show tables;" | mysql -u usuario1 -h 10.0.0.126 -p base1

El resultado de estas pruebas debería ser el listado de tablas de las bases correspondientes.
Si el tunel funciona correctamente vuelva a subir el servidor web:
#/etc/init.d/apache2 start

5) Nos queda un detalle, activar el inicio automático del tunel de manera que al reiniciar el servidor no tengamos que levantar nada manualmente.
#cd /etc/rc2.d
#ln -s ../init.d/tunel-mysql S19tunel-mysql
#cd /etc/rc3.d
#ln -s ../init.d/tunel-mysql S19tunel-mysql
#cd /etc/rc4.d
#ln -s ../init.d/tunel-mysql S19tunel-mysql
#cd /etc/rc5.d
#ln -s ../init.d/tunel-mysql S19tunel-mysql

Como prueba final, se podría reiniciar el servidor y probar si todo funciona correctamente. Acceder a las páginas con php o perl que escriban en las bases de datos y observar que no arrojen errores.

Puede que deseemos hacer una prueba preliminar usando un servidor LAMP que no esté en producción, de manera de saber como optimizar y acelerar todo el proceso cuando se haga en el servidor en producción.

Nota: Por seguridad, no olvide borrar todos los archivos .sql generados durante el proceso movimiento de datos de un servidor al otro.

Chaolin ...

miércoles, 26 de marzo de 2008

* LANZADOR DE APLICACIONES EN GNOME

En el artículo anterior instalamos la Beta 4 de Firefox 3 la cual muestra una mejora sustancial en el rendimiento de este navegador lo que se traduce en más comodidad y rapidez trabajar en la red de redes.
En el presente mini artículo mostraremos una forma muy fácil de crear un lanzador de aplicaciones y para ellos tomaremos como ejemplo la 'Creación de un lanzador para nuestro Firefox 3 Beta 4' recién instalado.
Una imagen vale más que mil palabras y un video creo que más que un millón, asi es que ¿ Qué mejor que un video de demostración ? Ahí va ...
VIDEO
CREANDO UN LANZADOR DE APLICACIONES EN GNOME
(haga clic en esta imagen para ver video)

Se puede ver el video en distintas resoluciones ( volver a cualquier punto del video haciendo clic sobre la barra de desplazamiento)
Espero que les sirva ...

* FIREFOX 3 A DIETA

Me instalé la beta 4 del Firefox 3 y veo que está haciendo su buena dieta, come mucho menos memoria, por tanto se siente que trabaja bastante más rápido.

Algunas de las más relevantes y nuevas mejoras son:

- Mejora sustancial en el uso de la memoria, se libera la memoria de una forma mucho más eficiente cuando no se la necesita.

- Mejoras en motor de Javascript, lo que hace que páginas Google Mail y otros sitios trabajen mucho más rápido.

- Nuevo gestor de descargas con la posibilidad de hacer busquedas de archivos bajados.

- El nuevo Zoom desde el menú ver y a través de atajos de teclado, permite no sólo aumentar y disminuir el tamaño del texto, también se tiene la posibildad de cambiar el tamaño del diseño completo de la página como si fuera el zoom de una imagen completa. Está característica es muy novedosa, la encuentro muy buena.

- Barra de direcciones mejorada con autocompletado más eficiente el cual nos va mostrando alternativas más ordenadas, a medida que escribimos una dirección, incluyendo primero aquellas que están en 'Marcadores' , 'Las que han sido más visitadas', etc ...

Bueno, yo llevo sólo solo un par de días probándolo en mi Debian y hasta el momento todo va de maravillas, se ve estable y más rápido, pero que mejor que probarlo tú mismo aquí adjunto los pasos de instalación:

1) Bajar desde http://www.mozilla.com/en-US/firefox/all-beta.html ( ya que aún no tenemos paquetes oficiales para debian)

2) Desde un terminal descomprimimos con: tar -xjvf firefox-3.0b4.tar.bz2

3) Si aún no estamos como root, hacemos: su

4) Moviendo a /opt : mv firefox /opt (pero antes, si tiene una versión anterior de firefox en esa carpeta, renómbrela o bórrela si lo desea)

5) El adminitrador debe ser el dueño de esta carpeta: chown -Rf root:root /opt/firefox

6) Creando enlace simbólico, para que sea más simple ejecutarlo: ln -s /opt/firefox/firefox /usr/bin/firefox ( pero antes, si tiene un enlace existente en /usr/bin/firefox que apunta hacia otra direccón debe borrarlo o moverlo, rm -f /usr/bin/firefox, o bien, mv /usr/bin/firefox /usr/bin/firefox-bak )

7) Ya esta listo, ahora vaya a una terminal y como usuario normal (el que siempre usa) ejecute : firefox y vuele feliz por la web, je je ...

Para ejecutarlo más comodamente podemos crear un lanzador en un panel de gnome con lo cual sólo tendremos que hacer un clic en el ícono correspondiente para ejecutar nuestro nuevo Firefox.

En el próximo artículo que publicaré en este blog explicaré la forma más fácil que he encontrado para crear un lanzador de aplicaciones en el panel de gnome usando cómo ejemplo el lanzador para el Firefox que hemos instalado aquí ...

PANTALLAZO

viernes, 7 de marzo de 2008

* CLONANDO DEBIAN GNU/LINUX A MI MANERA

En mi trabajo de Administrador de Servidores, en varias ocasiones me he visto en la necesidad de instalar un Servidor ( de Correo, Web, Dns, etc ...) sin disponer de mucho tiempo para ello.

En los servidores tengo bastantes paquetes de software instalados, y con un gran número de configuraciones que he tenido que ir ajustando para obtener las funcionalidades necesarias, una buena estabilidad, disponibildad, seguridad, y un rendimiento adecuado. Por mencionar algunos de los software a instalar y configurar en ellos tenemos: postfix+tls+sasl+mysql+pcre,maildropfilter, amavis-new, spamassassin+pyzor+razor+dcc+spf, clamav+clam-daemon+freshclam, courier+pop+pop-ssl+imap+imap-ssl+authdaemon+authmysql, mysql-server, heartbeat, iptables, etc ...

Estas máquinas están dentro de una estructura de cluster, es decir, son nodos activos que se respaldan entre ellos de manera que si uno sufre una falla y deja de funcionar otro toma su lugar automáticamente en cuestión de segundos. Este tipo de estructura me permite tener un a buena disponibildad de servicio y me deja un buen tiempo para reparar o reemplazar la máquina que presentó fallas, sin embargo mientras más rápido la reinstale menos sobrecarga de trabajo tendré sobre el servidor que asimiló la carga propia más la del nodo caído.

En fin para levantar un nuevo servidor rápidamente, en caso de emergencia, sin perder mucho tiempo en realizar instalaciones de paquetes y evitarse un sin número de configuraciones requeridas para dejarlo funcionando igual que el resto de los nodos, yo he optado varias veces por hacer una clonación del S.O. completo.

El procedimiento que describo a continuación yo lo he probado para clonar máquinas de distinto hardware con Debian Sarge y Etch tanto en servidores como PCs de escritorio con entorno gráfico icewm, gnome, kde, xfce4, etc ...

Las herraminetas necesarias para poder realizar la clonación son:

- CD de instalación de debian (preferible de tipo net-install)
- Live CD ( yo use knoppix 5.1.1)

Aquí va el procedimiento que he usado para clonar debian:

1) Bajar Debian, para este cometido yo he usado cd's instaladores de tipo net-install de los cuales he bajado su imagen iso desde la página oficial de debian aquí ( hay que bajar el que termina en netinst.iso ) . Es conveniente que el sistema debian a instalar en la máquina destino (host2) sea de la misma rama (sarge, etch, lenny, ...) que el que está instalado en la máquina a clonar (host1), aunque esto no es obligatorio pero por simplicidad se asumirán de la misma rama .

2) Quemar la iso de debian usando k3b u otro software de grabación de cd.

3) Hacer que el host2 inicie desde el cd de instalación ( aquí usé un cd de Etch Net Install )

4) Dar enter e iniciar la instalación.

5) En los pasos de instalación sgtes. seteará el Idioma (Spanish), País (Chile), mapa de teclado
(Latinoamericano) según donde Ud. viva.

6) Configurar la red via dhcp si es que existe un servidor de este tipo dentro de su red, en caso contrario configure manualmente la dirección ip estática y el resto de datos requeridos (network, máscara, broadcast, gateway, servidores dns, dominio y nombre del host ). Es importante que la red quede bien configurada de manera que cuando se tenga que instalar un kernel más actualizado pueda bajarlo sin problemas.

7) Hacer el particionado manual si es que desea dejar las particiones similares a como están definidas en el host1. Fijarse que el tamaño de las particiones del host2 sean de un tamaño mayor que el espacio ocupado en el host1 en su directorio análogo o se puede quedar sin espacio al hacer la clonación. No es obligatorio hacer el particionado manual también podría ser automático si es que no le importa que las particiones queden similares en ambos hosts. Es importante que tenga cuidado si tiene una partición con datos u otro S.O. instalado, ya que de proceder en forma incorrecta podría ocurrir que ésta se formateara accidentalmente y perder toda la información contenida.

8) Fijar Zona Horaria (Santiago de Chile) según corresponda.

9) Ingresar la clave de superusuario que Ud. desee.

10) No es necesario crear una cuenta de usuario normal.

11) Configurar uno o más repositorios según Ud. estime conveniente para asegurar que más adelante pueda bajar el paquete de kernel que se requiera.

12) En la etapa de instalación en que corresponde indicar el software a instalar, no hay que indicar nada y si ya viene algo seleccionado, quítelo de manera que no pierda tiempo instalando paquetes que no va a ocupar nunca, ya que cuando el proceso de clonación haya terminado el host2 quedará con los mismos paquetes que el host1.

13) Cuando le pregunte si desea instalar grub en el registro principal de arranque (Master Boot Record ) diga que si. Si tiene otro S.O. operativo instalado en este equipo el instalador le informará si lo a detectado y lo agregará a la lista en el gestor de booteo (grub), de manera que Ud. pueda seleccionar con cual de los sistemas desea iniciar su PC. Si Ud. tiene otro S.O. instalado y el instalador no se lo informa, es probable que sólo pueda bootear con el debian que acaba de instalar, pero esto se puede arreglar fácilmente editando el archivo menu.lst del paquete grub.

14) Aquí se termina la instalación mínima y se reinicia el host2.

15) Luego de reiniciarse el host2 ingrese root y la password fijada en la instalación.

16) Si deseamos hacer una clonación via red, nos podemos instalar el paquete ssh (openssh-server, openssh-client) el cual trae consigo el comando scp que permite transportar archivos de forma muy simple entre dos host remotos: apt-get install ssh

17) Ingrese (via ssh o localmente) al host1 desde una terminal, como superusuario.

18) Ejecute: df -h y luego du -sh /* y con la información entregada por estos dos comandos vea el espacio ocupado en cada partición y en cada una de los carpetas de la raiz del sistema. Si puede eliminar algunas cosas que tenga demás en su host1 hágalo, y piense si hay subdirectorios ( de respaldos de archivos u otra información) o archivos que de desee excluir de la clonación y anótelos.

19) Ejecute apt-get clean si lo desea, esto borrará paquetes instaladores que quedaron almacenados en /var/cache/apt/archives cuando se instalaron todos los software que están en su debian en el host1. Esto disminuirá la cantidad de información a clonar y por tanto hará un tanto más rápido este proceso, además ocupará menos espacio en le host2.

20) En este paso construirá una imagen comprimida del host1. Dentro de ésta debe incluir los directorios que están en la raíz (puede listarlos haciendo ls / ), pero excluirá aquellos que no nos sirven de nada y solo ocuparían espacio en la imagen. Los directorios que yo excluyo siempre son: /dev /proc /lost+found /sys /srv /tmp y el directorio donde estoy creando la imagen. Además de estos directorios puede excluir otros más que no desee incluir en la imagen, por ejemplo, alguna carpeta en la que Ud. guarde respaldos de archivos muy grandes, u otra carpeta ( ej: /mnt/hdc5, /mnt/respaldos-mp3s,/home/../respaldos-peliculas ) en la que tenga montada una partición que no le interesa llevarse al host2, o alguna carpeta o archivo que contenga información privada o confidencial . Se debe tener mucho cuidado en excluir algún subdirectorio donde se encuentren guardados archivos binarios, librerias, o configuraciones importantes para el buen funcionamiento de su sistema.

Si Ud. piensa compartir esta imagen con otras personas no debe olvidar que dentro de ella puede haber datos privados como la password del root y del resto de usuarios de su equipo, las claves públicas y privadas del ssh, las password de algunos software instalados en su máquina. Si es el caso, asegúrese de cambiar la clave del root y de los usuarios del sistema por otras provisorias. Ej:
Para cambiar la clave del root ejecute : #passwd
Para cambiar la clave de un usuario juanito: #passwd juanito

También, asegúrese de excluir los directorios /etc/ssh /root/.ssh /home/juanito/.ssh, /home/pedrito/.ssh (igual para todos los usuarios que están en el /home). Si está clonando un PC de escritorio con entorno gráfico asegúrese de cambiar las claves de su software de correo electrónico ( si es que las guarda) por otras provisorias. Lo mismo para otros tipos de software de entorno gráfico que guarden claves. Si tiene algún servidor ftp, web, de base de datos o de otro tipo que almacene claves en algún archivo o tabla, debe cambiarlas o excluir el archivo o directorio en donde se encuentran. Insisto, en caso de compartir la imagen que creará de su host1 debe saber muy bien lo que está haciendo con el tema de las claves e información privada.

Entonces, para crear la imagen ejecute algo como esto:
(suponemos que la imagen se guardará en el dir. '/var/clon-debian' (Ud. puede usar otro dir.), asegúrese de que este dir. esté en una partición que tenga el espacio libre suficiente para albergar el archivo de imagen)

#mkdir /var/clon-debian
#tar -cvzf /var/clon-debian/clon-debian$(cat /etc/debian_version)-$(uname -s)$(uname -r).tar.gz / --exclude='/dev' --exclude='/lost+found' --exclude='/proc' --exclude='/srv' --exclude='/sys' --exclude=='/tmp' --exclude='/etc/ssh' --exclude='/root/.ssh' --exclude='/home/juanito/.ssh' --exclude='/mnt/respaldos-peliculas' --exclude='/var/clon-debian' > /var/clon-debian/clon-debian.log &


Al ejecutar este comando arrojará en pantalla mensajes como:

tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets

O algunos similares a este: tar: /var/log/syslog: el fichero cambio mientras se estaba leyendo
Ignore este tipo de mensajes.
Una vez que ya ha creado la imagen y en el caso de que haya puesto algunas password provisorias, puede modificarlas nuevamente y dejar las originales para que le host1 quede tal como estaba.

21) Ahora, debe llevar el archivo de imagen al host2, puede hacerlo de distintas formas:

a) via el comando scp. ej: #scp clon-debian-4.0-Linux2.6.18-5-686.tar.gz root@host2:/root

b) via cd/dvd, si dispone de un copiador de dvd/cd en el host1 y lector en el host2. Si la imagén es más grande que un cd (700MB) puedes usar split para dividirla en trozos de 700MB(=734003200 bytes) cada uno. ej: split -b 734003200 clon-debian-4.0-Linux2.6.18-5-686.tar.gz clon-debian-4.0-Linux2.6.18-5-686-

Hay muchos tutoriales en internet que explican como crear una .iso de datos en el disco duro y luego pasarla a un cd/dvd via consola. Si tiene entorno gráfico instalado en el host1 puede usar k3b u otro software quemador de cd/dvd.

Y luego, una vez en el host2, se puede unir los trozos usando cat. ej:
cat clon-debian-4.0-Linux2.6.18-5-686-aa clon-debian-4.0-Linux2.6.18-5-686-ab clon-debian-4.0-Linux2.6.18-5-686-ac > clon-debian-4.0-Linux2.6.18-5-686.tar.gz

c) Via pendrive, si Ud. dispone de este tipo de dispositivo de una capacidad de almacenamiento lo suficientemente grande para contener el archivo de imagen creado.

d) Etc ...

22) El archivo de imagen ya está en el host2, ahora vaya a la raíz del sistema (siempre en el host2), cree una carpeta 'raiz-nueva' , mueva el archivo de imagen dentro de ella y proceda a descomprimirlo. Ej:
#cd /
#mkdir raiz-nueva
#mv /root/clon-debian-4.0-Linux2.6.18-5-686.tar.gz /raiz-nueva/clon-debian-4.0-Linux2.6.18-5-686.tar.gz

#cd /raiz-nueva
#tar -xzvf clon-debian-4.0-Linux2.6.18-5-686.tar.gz > untar.log

23) Crear directorios que faltan

#mkdir proc sys srv tmp lost+found
#chmod -Rf ugo+rwx tmp
#chmod -Rf o+t tmp
#chmod go-rwx lost+found
#cp -a /dev /raiz-nueva/dev


24) Instalar la version del kernel más nueva que hay en la rama de debian que está usando (etch) y que vaya de acuerdo con la nueva arquitectura del host2:

Ej:

#apt-get update
#apt-get install linux-image | more ( le mostrará un listado de los kernel que puede instalar)
#apt-get install linux-image-2.6.18-5-k7 ( supuse que el host2 era un amd k7, Ud. use el que le correponda a su procesador )
(nota: en sarge y anteriores los paquetes de kernel linux se llaman kernel-image....)
Reiniciamos para verificar que el nuevo kernel-quedo bien instalado.
25) Hacer lo mismo pero dentro del sistema que tiene en /raiz-nueva:

#chroot /raiz-nueva
#apt-get update
#apt-get install linux-image-2.6.18-5-k7 ( como es de la misma rama y usará el mismo hardware se instala el mismo kernel)
#exit


26) Como ya se sabe desde el paso 24 que el booteo del debian mínimo instalado con el nuevo kernel funciona correctamente y el sistema inicia sin problemas, se puede ir a la segura reemplazando la carpeta /raiz-nueva/boot por la /boot :
Ej:


#cd /raiz-nueva
#mv boot boot-bak
#cp -a /boot /raiz-nueva/boot


27) Inserte un live cd en el host2 (knoppix) y luego reinicie (shutdown -r now)

28) Cuando el equipo inicie con knoppix y aparezca boot: escriba knoppix 2 (y luego dele enter)

29) Cuando termine de iniciar ingrese a la consola como root y haga lo sgte.:


#su
#cd /mnt
#mount hda5 (suponiendo que esta será la partición raíz de su sistema)
#cd hda5
#mkdir raiz-old
#mv * raiz-old ( arrojará un mensaje de que no puede mover raiz-old a raiz-old, no lo tome en cuenta )
#mv /mnt/hda5/raiz-old/raiz-nueva/* /mnt/hda5


30) Actualizar el archivo /mnt/hda5/etc/fstab acuerdo a su nueva estructura de particiones:

#cd /mnt/hda5/etc
#mv ftsab fstab-bak
#cp -a /mnt/hda5/raiz-old/etc/fstab /mnt/hda5/fstab

Si en fstab aparece una o más particiones de disco duro (además de la raíz) montada en un directorio que no es la raíz / , por ejemplo algo como esto:
"/dev/hdc6 /home ext3 .... "
"/dev/hdc7 /var ext3 .... "
En este caso Ud. debe montar las particiones y mover todos los datos de los directorios que aparecen en la línea correspondiente de fstab a estas particiones. Ej:
(según ej. anterior)
#cd /mnt
#mount hdc6
#mv /mnt/hdc5/home/* /mnt/hdc6
#mount hdc7
#mv /mnt/hdc5/var/* /mnt/hdc7


31) Setear la nueva configuración de red del sistema si es necesario. Este paso no será necesario en el caso de que Ud. este clonado para reemplazar la maquina host1 por hots2, es decir, si va a usar la misma dirección ip que tení­a el host original en la red en que se encuentra. Obviamente, este paso tampoco será necesario si la nueva máquina host2 no está dentro de ninguna red. Para configurar la red debe editar o crear si es que no existe el archivo /mnt/hda5/etc/network/interfaces

auto lo iface lo inet loopback
# This entry was created during the Debian installation
# (network, broadcast and gateway are optional)
auto eth0
iface eth0 inet static
address 10.0.0.5
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
gateway 10.0.0.1

Debe cambiar estos datos por los de su red. Si la red usa dhcp se cambia la palabra static por dhcp y se borra el resto de las lineas (address,netmask,network,broadcast y gateway se borran). También debemos agregar los servidores DNS si fuese necesario, en el archivo /mnt/hda5/etc/resolv.conf. Debería quedar como sigue:

search midominio.com
nameserver 10.0.0.2 (aqui ponga el dns primario que corresponda a su red)
nameserver 10.0.0.3 (aqui ponga el dns secundario que corresponda a su red)

Puede que Ud. desee cambiar el nombre de host en el archivo /mnt/hda5/etc/hostname
También deberá cambiar los datos de su nuevo (nombre e ip) host en el archivo /mnt/hda5/etc/hosts


32) Apague su equipo desde knoppix y retire el cd cuando este mueva la bandeja del cdrom hacia fuera, y finalmente encienda el PC para que inicie con el nuevo sistema clonado, prácticamente idéntico al original.

33) En debian Etch o superior, es probable que, la red no quede funcionando bien, pero esto se puede arreglar editando el archivo /etc/udev/rules.d/z25_persistent-net-rules. Fíjese, en el archivo, lo que hizo udev fue mantener el nombre eth0 asociado a la mac de la tarjeta antigua y a la nueva le puso eth1, esto es en el caso de que el equipo origen(host1) tenía una sola tarjeta. Lo que Ud. debe hacer es borrar las líneas en donde aparezcan las mac de las tarjetas de red del host original y dejar solamente las lineas correspondientes a la o las mac de las tarjetas actuales, y en esas lineas modificar el valor de NAME de acuerdo al nombre (eth0, eth1, eth2, etc) que desee para cada tarjeta. ¿ Cómo averiguar cuales son las mac de sus tarjetas actuales? Ejecute algo parecido a esto, ej:
#echo -e "eth0\neth1\neth2\neth3\neth4" | sed "s/^/ifconfig /" | sh 2>/dev/null | grep "^eth"
En el comando anterior las eth0 van de 0 hasta 4 donde cuatro corresponde a la suma del número de tarjetas del host original más las del nuevo menos 1. Aquí se supuso que el host original tenía tres tarjetas de red y el nuevo 2 tarjetas ( 4=3+2-1).
En resumen, si su nuevo host tuviese dos tarjetas de red el archivo debería quedar parecido a esto:

# This file was automatically generated by the /lib/udev/write_net_rules
# program, probably run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single line.
# MAC addresses must be written in lowercase.

# PCI device 0x1106:0x3106 (via-rhine)
#SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:1b:11:0b:8a:5f", NAME="eth0"

# PCI device 0x10ec:0x8139 (8139too)
#SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:50:ba:8c:11:00", NAME="eth1"

Finalmente debe reiniciar, y su nuevo Debian, clon del original, debería quedar funcionando sin problemas.

34) Detalles: si Ud. tenía ssh instalado en el host original y al crear la imagen excluyó el directorio /etc/ssh, haga lo sgte para que el cliente y servidor de ssh queden funcionado bien:

#apt-get install --reinstall openssh-client openssh-server ssh (no cambie el orden de los tres paquetes)

No olvide que puede borrar los directorios que quedaron demás en la raíz junto con el archivo de imagen si es que lo desea.

#rm -Rf /boot-bak
#rm -Rf /raiz-old
#rm -f /clon-debian-4.0-Linux2.6.18-5-686.tar.gz (o el que corresponda a su version de debian y a su kernel)


35) En el caso de que Ud. haya clonado un PC de escritorio es probable que no pueda iniciar la sesión gráfica debido a que el servidor X no reconoce la tarjeta de video de la nueva máquina, en este caso debe iniciar su equipo en modo recovery, ingresar la password del root y ejecutar:
#dpkg-reconfigure xserver-xorg
Con este comando podrá reconfigurar el servidor gráfico.

Espero que este procedimiento les funciones, lo que es a mi me ha dado muy buenos resultados, me he ahorrado bastante tiempo y trabajo.
En caso de cualquier consulta, comentario, o corrección escribir a cmunox@gmail.com .

Suerte ...

martes, 4 de marzo de 2008

* APT-IMAGEN

¿ Quieres instalar algún paquete Debian en un PC sin conexión a internet ?
¿ Quieres actualizar tu Debian y tu conexión es muy lenta ?

En Chile, aún hay mucha gente que no tiene una conexión a internet lo cual hace que la instalación de paquetes o la actualización de su distribución sea mucho más complicada.

Podríamos pensar en bajar el paquete desde otro PC con una buena conexión a internet usando opciones de apt tales como 'apt-get --download-only --reinstall install paquete' lo cual bajará el paquete y las dependencias de éste que aún no estén instaladas en el sistema. Sin embargo, al llevar los paquetes al equipo sin red ( copiándolos desde '/var/cache/apt/archives' a un pendrive, cdrom, etc) podemos encontrarnos con que el estado de los paquetes de nuestro PC no es el mismo que el del equipo remoto, las versiones de los paquetes instalados puede que no sean las mismas. Podría suceder, además que no se hayan bajado todas las dependencias necesarias, ya que en el equipo remoto puede que ya hayan sido instaladas con anterioridad pero en el PC sin red no.
En resumen, podemos encontrarnos con problemas de versiones y dependencias que no nos resultarán muy agradables. Además, podría suceder que el S.O. del PC sin red fuese un Debian GNU/Linux rama ETCH y el remoto fuese de la rama LENNY o SID.

En fin, la instalación offline se hace un tanto complicada, por lo cual desarrollé mi propio script para salir del paso, y facilitar un poco esta tarea.

El script se puede bajar desde aquí .

Requerimientos :
- S. O. Debian/GNU Linux u otro derivado de éste que posea el mismo sistema de paquetes APT.
- Bash 2.0 o superior.

¿ Cómo se usa apt-imagen ?

Supongamos que deseamos instalar los paquetes postfix, lshw y heartbeat en el PC de casa, pero no tenemos internet.
Recuerde que para usar apt-imagen debe hacerlo como superusuario:

Paso 1) Primero creamos el directorio imagen que contendrá toda la información del estado del sistema de paquetes de nuestro debian de casa sin conexión a internet (host1). Esta imagen se creaerá usando la acción 'imagen' de apt-imagen:
(Supongamos que tenemos nuestro script en la carpeta /root )
#cd /root
#sh apt-imagen imagen "/root/apt.img-host-cristian"
Esto creará un directorio imagen '/root/apt.img-host-cristian' conteniendo toda la información de estado del sistema de paquetes de host local.

Paso 2) Debemos copiar el script 'apt-imagen' y el directorio imagen a un pendrive, un cdrom, u otro medio ...

Paso 3) Llevamos esta información a otro equipo (host2) con debian y la copiamos a alguna carpeta, por ejemplo, la carpeta '/root' del equipo remoto.

Paso 4) A continuación, en el host2, actualizamos la lista de paquetes desde los repositorios al directorio imagen del host1:
#cd /root
#sh apt-imagen update "/root/apt.img-host-cristian"

Paso 5) Luego, bajamos desde el host2 los paquetes que luego podremos instalar en el host1, los cuales quedarán guardados en el directorio imagen:
#sh apt-imagen bajar "/root/apt.img-host-cristian" postfix lshw heartbeat

Paso 6) Nos llevamos el nuevo directorio imagen al host1 usando nuestro pendrive u otro medio.

Paso 7) Instalamos los paquetes en nuestro host1 local:

#cd /root
#sh apt-imagen install "/root/apt.img-host-cristian-new" postfix lshw heartbeat

Donde "/root/apt.img-host-cristian-new" es la nueva carpeta imagen con los paquetes incluido que en el Paso 6) transportamos desde el host2 al host1.

Y con esto los paquetes quedarían instalados correctamente.
En el Paso 7) también podríamos haber ejecutado apt-imagen sin indicar ningún paquete, y en este caso el script asumiría que se desea instalar todos los paquetes que estań en el directorio imagen.

Si quisieramos actualizar todos los paquetes del host1 local tendríamos que hacer lo mismo, pero en el Paso 5) no deberíamos indicar ningún paquete, en este caso, el script 'apt-image' asumirá que se quiere actualizar todos los paquetes del sistema ( analogo apt-get upgrade ) de manera que procederá a bajar las versiones actualizadas de todos los paquetes del host1 en el directorio imagen: #sh apt-imagen bajar "/root/apt.img-host-cristian". Bueno, y en el paso siete no deberíamos indicar ningún paquete para actualizarlos todos y así realizar un correcto upgrade del sistema en el host1.

Finalmente, recomiendo, después de haber realizado todos los pasos anteriores borrar o mover los directorios imagen inicial y final y crear uno nuevo como en el Paso 1), y copiarlo a un pendrive para poder llevarlo a todas partes. De esta forma, si estas en un PC con conexión internet y te encuentras con algún paquete interesante y lo quieres instalar en casa, te lo llevas usando 'apt-imagen' sin preocuparte por el tema de las versiones y las dependencias de éste.

Espero que a más de alguno le pueda servir este script, y si tienen algún comentario o reporte de falla favor de escribirme a : cmunox@gmail.com

Saludos, y no olviden debianizarse y mineralizarse ...

lunes, 3 de marzo de 2008

* BIENVENIDOX

Mi Nombre: Cristian Muñoz Martínez.
Nacionalidad : Chileno
Actividad: Administrador de Servidores ( Correo, Web, Dns, Radius ) en Linux of course ...
Distribución Linux Favorita: Debian GNU/Linux
Email: cmunox@gmail.com




Este blog tiene como finalidad devolver la mano al mundo del software libre el cual ha sido de gran ayuda para mí, tanto en la parte laboral como personal.
La idea es poder compartir información, experiencias y conocimientos a través de noticias, artículos, tutoriales, scripts, recetas, datos, etc ...
Bueno, como a mi me gusta ir rápidamente al grano no los aburriré con extensas introducciones.
Entonces, se da por inaugurado este blog, espero que les guste y que les sirva ...

Saludos

cmunox