Archive for the ‘vmware’ Category

h1

HOWTO: Virtualizar Mac OS X

27/10/10

Esta semana, gracias a una amiga que necesitaba hacer unas prácticas, me vi en el fregao de virtualizar el Mac OS X. Hasta ahora, toda mi experiencia en cacharritos de Mac había sido cuando hace unos años consulté el correo en la Mac Book de un colega. Sin embargo, pensé que debía ser como virtualizar cualquier otro SO… ¡qué iluso!

Voy a saltarme toda la parte en que realizo pruebas que no funcionan, blasfemo, realizo más pruebas y vuelvo a blasfemar. Contaré directamente lo que sí me funcionó.

Para virtualizar yo utilicé el VMware Workstation 7 sobre Windows 7 (64bits). No he probado esto con otros softwares de virtualización pero es muy posible que funcione también. Si alguno lo hace estaría muy agradecido de que me informara del resultado.

Para llevar a cabo nuestro propósito debemos utilizar el mismo hack que circula hace tiempo por Internet para poder instalar Mac OS X en un PC: usar un cargador de arranque llamado Darwin/x86. En la web podéis ampliar información si os interesa el tema.

Bueno, al turrón:

Paso 1: Descargar ISO y VM pre-hecha.

Este zip también ha rulado bastante por Internet: Snowy VMWare. Contiene el Darwin/x86 y una VM ya hecha para nuestro futuro Mac OS X virtualizado.

Paso 2: Ejecutar la VM y arrancarla desde el Darwin/x86.

Desde el VMware abrimos el “Mac OS X Server 10.6 (experimental).vmx” y ajustamos las características de la VM a nuestro gusto.

Como CD le metemos el “darwin_snow.iso” y arrancamos la VM desde el CD. Al iniciarse debemos pulsar la tecla “F8” y si todo ha ido bien debemos tener delante un menú similar a este:

Paso 3: Instalar el Mac OS X

Ahora sustituimos la imagen del CD del Darwin/x86 por la imagen ISO de nuestro Mac OS X en la unidad de nuestra VM (pinchando en el icono del CD debajo de la consola) y arrancamos desde el CD eligiendo la opción “c” del menú. ¡Ale! A instalar se ha dicho:

Paso 4: Arrancar el Mac OS X.

Cuando termina el proceso de instalación del Mac OS X el sistema nos pedirá reiniciar. Es el momento para quitar la ISO del Mac OS y volver a poner la “darwin_snow.iso”.

En las indicaciones del post original se especificaba que cada vez que reiniciemos debemos volver a arrancar desde el Darwin/x86 pero esta vez arrancando desde el disco duro (opción h). En mi experiencia personal, nunca he tenido que hacerlo. Siempre ha arrancado la vm directamente del disco duro.

Paso 5: Tuneos

Una vez terminemos de instalar el Mac OS X es aconsejable:

  • Hacer un snapshot en cuanto tengamos la máquina funcionando. Toda esta historia es muy experimental y no sabemos en qué momento dejará de funcionar (ten por seguro que lo hará).
  • Instala cuanto menos cosas mejor: si no te hace falta sonido pues fuera tarjeta de sonido, etc.

Bueno, pues con ésto ya deberíamos tener nuestro supercool Mac OS X virtualizado. Ahora ya sabes lo que dicen: si te gusta págale al tito Steve la licencia :)

Bibliografía: Redmon Pie

Anuncios
h1

Nota mental

22/05/08

No usar la utilidad vmware-mount.pl del VMware Server en máquinas de producción.

Acabo de dejar una máquina de producción completamente frita con el puto perl ese y todo por montar un fichero vmdk de un Linux para ver si tenía el idioma configurado a español o a inglés.

Por cierto, ha petado un CentOS 4.5 con el VMware-server-1.0.5

Es lo que tiene jugar con producción XD

h1

¿Cómo ejecutar Vmware Player desde Samba?

29/04/08

Cuando intentamos ejecutar con el Vmware Player una vm que está compartida por Samba puede que nos encontremos con el siguiente error:

Click para verlo en grande

Si después de revisar los permisos en el servidor Linux (a nivel de ficheros y a nivel de Samba) el problema persiste tenemos que añadir las siguientes líneas al fichero “nombre_maquina_virtual.vmx”:

extendedConfigFile = “nombre_maquina_virtual.vmxf”

virtualHW.productCompatibility = “hosted”

tools.upgrade.policy = “manual”

El fichero “nombre_maquina_virtual.vmxf (ojo a la “f”) lo creamos con el contenido como sigue:

<?xml version="1.0"?>
<Foundry>
<VM>
<VMId type="string">56 4d 0f 02 a7 5d 1b 9b-7e 70 35 ed 95 17 6e 95</VMId>
<ClientMetaData>
<clientMetaDataAttributes/>
<HistoryEventList/></ClientMetaData>
<vmxPathName type="string">nombre_maquina_virtual.vmx</vmxPathName>
</VM>
</Foundry>

El VMid lo sustituimos por el valor del campo uuid.location que hay en el “nombre_maquina_virtual.vmx”.

Después de realizar estos cambios puede que nos encontremos con este otro error:

Si no estás ejecutando ningún sistema de archivos obsoleto tipo FAT16 puede solucionarse incluyendo la siguiente línea en el vmx:

diskLib.sparseMaxFileSizeCheck = “FALSE”

Después de todo esto y si las estrellas se alinean puede que consigamos correr la maldita vm compartida por Samba en local con nuestro Vmware Player.

Viendo que la cosa va para largo doy por inaugurada la categoría VMware.

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

Más relojes

9/04/08

Sigo con los relojes de las máquinas virtuales pero hoy me enrollo menos.

Si vuetra máquina host es un Windows y utiliza la tecnología SpeedStep o similar, los relojes de las máquinas virtuales desfasarán de lo lindo. Una posible solución es realizar las mismas modificaciones que se explican en el post anterior para máquinas Linux pero en el fichero:

C:\Documents and Settings\All Users\Application Data\VMware\VMware Server\config.ini

Fuente.

Suerte y recuerda hacer copias de todos los datos importante antes de tocar nada XD

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.