Archive for the 'linux' Category

h1

Defragmentar y hacer shrink a los vmdk’s

11/04/08

Actualizado 15/04/2008: Ahora el script también hace shrink a los vmdk’s.

Sé que me estoy poniendo un tanto pesado con el VMware pero es que llevo tres semanas nada mas que currando con ello y tuneando un poco las máquinas.

Lo que os pongo hoy es un pequeño shell script para automatizar la defragmentación de los ficheros *.vmdk. En principio tenía también que hacerles shrink pero la versión actual estable del VMware Server para Linux, la 1.0.5, no incluye esa opción. Creo que la beta 2.0 si que lo trae así que puede que lo incluya más adelante.

Para que el script también haga shrink hay que bajarse la versión beta 2 del Vmware Server, y copiar los binarios (la carpeta bin que hay dentro del tar) a una carpeta que definiremos en el script. No hace falta instalar esta versión del Vmware Server.

Hay que ejecutarlo en el host. Yo, por ejemplo, lo he metido en el crontab para que se ejecute cada viernes a las 22:00.


#!/bin/bash
#
# defvmdk.sh
# Fecha de creacion: 09-04-2008
#
# Script para defragmentar y hacer shrink a los
# ficheros vmdk de las vm's.
#
# Necesita el fichero defvmdk.cfg desde el que lee
# sobre que vm's debe actuar.
#
# Para poder hacer el shrink necesita tambien los
# binarios de la vesion 2 del Vmware Server (no
# importa que este otra version instalada).
#
###################################################

VMS=/root/bin/defvmdk.cfg
LOG=/root/bin/defvmdk-$(date '+%y-%m-%d').log
FTMP=/root/bin/defvmdk.tmp
VLOG=/tmp/vmware-root/vdiskmanager.log

#Binarios del Vmware Server:
VDIR=/root/bin/vmware/

export PATH=$VDIR:$PATH

echo  >> $LOG
echo "##################################" >> $LOG
echo "####### INICIO DEL PROCESO #######" >> $LOG
echo "##################################" >> $LOG

# Comprobamos que maquinas estan corriendo:
vmrun list > $FTMP

for VDIR in $(grep -v "#" $VMS)
do
  echo >> $LOG
  echo "#######" >> $LOG
  echo "####### Maquina: $VDIR" >> $LOG
  echo "####### Fecha:   $(date)" >> $LOG

  cd $VDIR
  if [ $(ls *.vmx | wc -l) -ne 1 ]; then
    echo >> $LOG
    echo "####### ERROR: No se encuentra el fichero vmx o hay mas de uno." >> $LOG
    continue
  fi
  VM=$(ls *vmx)

  # Paramos la VM si esta corriendo
  if [ $(grep "$VDIR" $FTMP) ]; then
    vmrun stop ./$VM nogui
  fi

  # Defragmentamos y hacemos shrink a los vmdk
  for VMDK in $(ls *.vmdk)
    do
      # Reiniciamos el log de vmware
      cp -p $VLOG "$VLOG.bk"
      > $VLOG

      # Defragmentamos el vmdk
      vmware-vdiskmanager -d $VMDK

      # Hacemos shrink
      vmware-vdiskmanager -k $VMDK

      # copiamos el VLOG
      echo "#######" >> $LOG
      echo "####### VMDK: $VMDK" >> $LOG
      echo "#######" >> $LOG
      echo >> $LOG
      cat $VLOG >> $LOG
    done

    # Dejamos la VM como estaba
    if [ $(grep "$VDIR" $FTMP) ]; then
      vmrun start ./$VM nogui
    fi
done

rm -f $FTMP

echo  >> $LOG
echo "###############################" >> $LOG
echo "####### FIN DEL PROCESO #######" >> $LOG
echo "###############################" >> $LOG

### FIN ###

Como habréis visto en los comentarios necesita un fichero de configuración muy simple en el que pondremos los directorios donde están ubicadas las máquinas virtuales sobre las que queremos actuar. El mío queda más o menos así:

# defvmdk.cfg
# Fecha de creacion: 09-04-2008
#
# Fichero de configuracion del script defvmdk.sh
# El proceso defragmentara los vmdk de las vm's
# no comentadas.
#
#################################################

/VMLocal/lab/1
/VMLocal/lab/2
#/maquina/que/no/se/defragmentara

Para los picas: no os riáis de mi código. Cada uno hace lo que puede XD

h1

Soy un usuario paquete

10/04/08

Hasta ahora yo me consideraba un usuario avanzado de Windows.

Llevo toda la mañana intentando montar una máquina virtual con Windows XP y ciertas aplicaciones. La idea es guardar el fichero vmdk en un repositorio accesible desde la red para que los desarrolladores monten una máquina con ese sistema operativo en un periquete cada vez que quieran. Esto lo he hecho con distintos sabores de Linux en las ultimas semanas y nunca he tardado más de dos horas. Lo cual me está haciendo descubrir que, en realidad, soy un usuario paquete de Windows.

Es cierto que en casa tengo ambos sistemas operativos pero también es cierto que sólo arranco con windows para viciarme al juego de turno (WoW en estos momentos). Y parece que esto lleva siendo así durante demasiado tiempo.

Ejemplo práctico:

Quiero cambiar el nombre del equipo: Mi PC, Propiedades, Nombre de equipo, cambiar. Realizo los cambios necesarios y Aceptar¡ERROR! No tienes permisos. Y yo me cago en tu unidad aritmético lógica. ¿Cómo que no tengo permisos? Soy el puto He-man. Soy administrador local y de red. ¡¡Soy root!! ¡¡Arrodillate ante mi!! ¡¡Uy!! Que se me va la olla. Cuando se me pasó el cabreo descubrí que era el ZoneAlarm aunque sigo sin saber por qué.

Hacer esto en Linux es tan facil como escribir hostname loquetesalgadelpito.

¿Soy yo el que se ha quedado atrás en Windows? ¿O realmente es más sencillo Linux?

h1

Problemas con el reloj utilizando VMWare en Linux

8/04/08

Tal y como advertí en la entrada anterior aquí va el primero…

Si has intalado VMware en Linux te habrás dado cuenta que el reloj de las máquinas virtuales va más perdido que Adán en el día de la madre. Se atrasa o se adelanta que da gusto y por lo visto esto a los desarrolladores no les gusta por no se qué de los unos logs… XD

Tienes una posible solución por aquí. No voy a entrar a comentarla porque creo que está bastante claro y, sobre todo, porque a mi no me funcionó.

Pero lo que si me funcionó es esto otro. Resulta que las máquinas que tenemos utilizan la tecnología Intel SpeedStep (AMD tiene algo parecido llamado PowerNow o Cool’n'Quiet). Estas tecnologías lo que hacen es modificar la frecuencia del procesador según la carga de trabajo. ¿Y cómo sé yo si mi procesador gasta de esto? Pues yo lo averigüé cotilleando el fichero /proc/cpuinfo con la máquina host “en reposo”:

[root@localhost ~]# head /proc/cpuinfo
processor: 0
vendor_id: GenuineIntel
cpu family: 6
model: 15
model name: Intel(R) Core(TM)2 Quad CPU Q6600 @ 2.40GHz
stepping: 11
cpu MHz: 1596.000
cache size: 4096 KB
physical id: 0
siblings: 4
[root@localhost ~]#

Si te fijas un poco el nombre del procesador dice que es a 2,4 GHz pero la velocidad real es de 1,6. Sospechoso, sospechoso, …

Para solucionarlo sólo tenemos que editar el /etc/vmware/config del host y añadir las siguientes líneas:

host.cpukHz = XXXXXXX
host.noTSC = TRUE
ptsc.noTSC = TRUE

Sustituyendo las equis por la velocidad máxima de tu procesador en kilohercios (2400000 en mi caso).

Reiniciamos el servicio de vmware y listo.

Por último asegúrate de tener desactivado en las máquinas virtuales cualquier software de sincronización horaria tipo ntpd.

Actualizado: También existe una solución si la máquina host es un Windows. Ahora mismo la estoy probando. Si funciona os contaré.

Más actualizado: Probado y me funciona en Windows.

h1

Buscando alternativas

3/02/08

Como habréis visto, ultimamente actualizo con cierta frecuencia. Esto se debe al nuevo curro que tenía y en el que duré exactamente 8 días. ¿Por qué hay gente que contrata un modesto administrador de UNIX para tenerlo de secretario? En fin, mañana lunes empiezo en un nuevo curro y tiene muy buena pinta. Veremos si tengo conexión a Internet :)

Mientras tanto seguiré esperando a que a los señores de ya.com (no pienso enlazarles) les apetezca darme unos poquitos megas de conexión. Para amenizar la espera he estado cotilleando un poco por la red y me he encontrado esto:

Hax-Puppy Desktop

Basada en Puppy Linux, aparte de una buena colección de drivers para tarjetas wi-fi, trae un montón de extras:

  • Suite Aircrack - versión 2.41 traducida por Uxio
  • WepAttack-0.1.3
  • Wlan_Decrypter 0.3
  • Macchanger - 1.5.0
  • Ethereal - 0.10.0a
  • Ettercap NG - 0.7.3
  • Kismet - 2005.08.R1
  • Tcpdump - 3.9.4
  • Nmap - 4.01
  • CCW 7 (modificado para adaptarlo a la distro)

Con todos ellos espero encontrar algún vecino “generoso” (poned voz de malo de la peli para leer las siguientes palabras) ¡juas, juas, juas!

Sí, lo sé. Eso no esta bien… pero el vicio es el vicio. Y yo soy yonki de Internet.

h1

Firefox en Ubuntu 7.10 para amd64

9/12/07

Quiero recuperar y actualizar este post del antiguo blog porque hoy he instalado Ubuntu 7.10 y me he encontrado con el mismo problema: si tienes un procesador amd64 hay que hacer malabares para que funcione Flash y Java en Firefox. La documentación que he encontrado es bastante difusa así que quiero contar como lo he hecho yo. Esto no es la solución definitiva ni yo soy un gurú de Linux. Si tienes problemas pregunta e intentaré ayudarte.

Firefox

Lo que hacemos es instalar el Firefox de 32 bits con sus respectivos soportes para dicha arquitectura. Esta versión del navegador la llamaremos firefox32. Recuerda apuntar tus lanzadores a este comando cuando termines.

Lo primero es asegurarnos de que tenemos instalado el soporte para aplicaciones de 32 bits:

sudo aptitude install ia32-libs ia32-libs-gtk linux32

Importante: Si el comando anterior te devuelve algo como esto cancélalo:

Eliminar los paquetes siguientes:
ubuntu-minimal
util-linux
util-linux-locales

Bajamos la versión de 32 bits de Firefox y la descomprimimos en un directorio temporal.

Creamos el directorio para firefox32:

sudo mkdir /usr/local/firefox32

Y copiamos ahí los archivos antes descomprimidos:

sudo cp -r -p /directorio_temporal /usr/local/firefox32/

Ahora tenemos que crear dos ficheros de ejecución de firefox32 (que cada uno use su editor favorito):

sudo gedit /etc/pango32/pangorc

Es posible que tengas que crear el directorio /etc/pango32. Contendrá lo siguiente:

[Pango]
ModuleFiles=/etc/pango32/pango.modules
[PangoX]
AliasFiles=/etc/pango/pangox.aliases

y

sudo gedit /usr/local/bin/firefox32

Que contendrá:

#!/bin/sh
export GTK_PATH=/usr/lib32/gtk-2.0
export PANGO_RC_FILE=/etc/pango32/pangorc
linux32 /usr/local/firefox32/firefox $@

Damos permiso de ejecución y listo:

sudo chmod +x /usr/local/bin/firefox32

Ya podemos probar a ver si funciona ejecutando:

firefox32 &

(no pasa nada si aparecen errores)


Soporte para Flash
Descargamos el Flash para Linux y lo descomprimimos en un directorio temporal. Luego ejecutamos:sudo su
aptitude install gsfonts gsfonts-x11
cd /Directorio_Temporal/
linux32 ./flashplayer-installer
(Cuando el instalador pregunte por “navigator path”, escribe: “/usr/local/firefox32/”).Reiniciamos y comprobamos si funciona pinchando aquí.

Soporte para Java
Bajamos el archivo autodescomprimible para Linux 32 de aquí y ejecutamos:sudo chmod 777 ./jre-****-linux-i586.bin(el nombre del .bin depende de la versión que te hayas bajado)sudo ./jre-****-linux-i586.binLo anterior creará un directorio jrel.**** donde lo hayas ejecutado. Ahora creamos el directorio definitivo para Java y copiamos ahí los archivos:sudo mkdir /usr/local/java32
sudo cp -r -p ./jre1.5.0_06/* /usr/local/java32
Ahora creamos un link desde el directorio de firefox32:cd /usr/local/firefox32/plugins/
ln -s /usr/local/java32/plugin/i386/ns7/libjavaplugin_oji.so ./
Reiniciamos y comprobamos si funciona pinchando aquí.

h1

Linus Torvalds facts

19/11/07
  • Linus Torvalds no aprendió de la Universidad de Helsinki, la Universidad de Helsinki aprendió de Linus Torvalds.
  • Linus Torvalds no necesita backups. El sólo sube sus archivos y deja que el resto del mundo les haga un Mirror.
  • No existe la teoría de probabilidad, sólo una lista de acontecimientos que Linus Torvalds permite que ocurran.
  • Linus Torvalds echa un vistazo a tu escritorio y sabe las páginas porno que visitaste en los últimos 10 años.
  • Linus Torvalds puede jugar a juegos 3D en su cabeza interpretando el código fuente en tiempo real.
  • Linus Torvalds encontró una vez un error de segmentación (segmentation fault) en el universo.
  • Linus Torvalds navega usando netcat.
  • Linus Torvalds no tira el agua del inodoro. El simplemente dice “make clean”.
  • Linus Torvalds no depura. Sus programas son siempre perfectos.
  • Linus Torvalds no tiene dependencias.
  • Si lees la mente de Linus Torvalds, verás su flujo mental completamente en binario.
  • Linus Torvalds es real. A menos que sea declarado como entero.
  • Linus Torvalds no hizo Linux compatible con los equipos 386, sino que hizo los 386 compatibles con Linux.
  • Linus Torvalds puede ejecutar kill -9 y matar a Chuck Norris.
  • Linus Torvalds sólo tiene dos teclas en su teclado: 1 y 0.
  • Linus Torvalds es más poderoso que root
  • Linus Torvalds no se preocupa por la basura que Microsoft dice sobre las patentes, solo hace un “mv /tmp/ms /dev/null”
  • Linus Torvalds no muere, simplemente devuelve cero.
  • Linus Torvalds puede hacer un ciclo infinito en cinco segundos… dentro de su cabeza.
  • Linus Torvalds hace correr Linux en su reloj de pulsera y en su tostadora.
  • La gente reza a Jesús. Jesús reza a Linus Torvalds.
  • Linus Torvalds ya no usa lentes, porque tiene prefectamente configurado Xorg en su cabeza.
  • Linus Torvalds no duerme, hackea.
  • Linus puede dividir por cero.
  • Vía Debianita.