sábado, 22 de diciembre de 2012

Instalación de OSX en un PC con Windows 7 SP1 y Linux (Triple boot)

Buenas a todos!

En este tutorial explicaré como instalar el Lion OS X (10.7.5) en un PC (Sí, habéis leído bien :P) donde previamente teníamos un dual boot de Windows y Linux, o en una instalación desde zero. La motivación de este tutorial, es tener instalado el sistema operativo de Mac, que nos permite poder desarrollar más fácilmente aplicaciones para OS X y iOS (el sistema operativo de iphone) y sobre todo, poder simularlas en un entorno más parecido al entorno real. 

No obstante, como observaréis, existen ciertas limitaciones a la hora de instalar este sistema operativo (de ahora en adelante SO), además de que podéis perder toda la información que tenéis actualmente en el ordenador. Así que, si no os atrevéis, ¡este no es vuestro post! 

Para aquellos aguerridos lectores que quieran continuar, ¡empecemos de una vez!

Comprobar si tenemos un software compatible

Lo primero y más importante que debemos hacer es comprobar si nuestro ordenador es compatible con la versión de OS X que vamos a instalar. Hay diversas páginas dónde se recogen los equipos y modelos compatibles, aunque no están todos. Por ejemplo, esta guía se realizará desde un laptop de HP, concretamente: 

Modelo: HP Pavillion dv5-1090 es
Procesador: Intel Core 2 duo (2.26 Ghz) 32-bit
RAM: 4096 MB DDR2 
HDD: SATA 320 GB 
Tarjeta Gráfica: Nvidia GeForce 9600M GT (512MB dedicados)

Para mirar la compatibilidad del hardware, podéis entrar a la siguiente página: 

Y buscar en el apartado:  OS X 10.7.5 Hardware compatibility

Notad que por regla general, nuestro PC tendrá que tener un procesador Intel (los AMD dan muchos problemas de compatibilidad), a poder ser de 64 bits (fijaos que el portátil de ejemplo es de 32-bit), y que como mínimo sea un Intel Core 2 Duo, que pueda leer instrucciones del tipo SSE, SSE 2 y SSE 3. Esto se puedo comprobar directamente mirando la información del procesador o mediante la utilidad CPU-Z para Windows.


Además, deberá tener un mínimo de 2048 MB DDR2 de RAM, tener un disco duro SATA de 150 GB que trabaje con AHCI y una tarjeta gráfica compatible de 128 MB.

Las particiones del disco

Si no tenéis un hardware compatible, mejor no continuéis con el tutorial, ya que en el mejor de los casos el SO no os funcionará y en el peor de los casos... bueno... ¡hora de comprar otro PC! 

Antes de empezar a particionar el disco, os daré un poco de teoría sobre las particiones. Si ya vais sobrados de conocimientos sobre este tema, saltaos el siguiente párrafo, pero si no es caso, mejor que atendáis. 

Existen tres tipos de particiones: las primarias, las extendidas y las lógicas. Cada disco duro puede tener 4 particiones primarias o 3 tres particiones primarias y una partición extendida con un número (casi ilimitado) de particiones lógicas. Las únicas particiones que son bootables, son las particiones primarias de manera que, por seguridad, siempre instalaremos cada sistema operativo en una partición primaria y por si acaso, siempre elegiremos la opción de hacer tres particiones primarias y una extendida, para no limitar el número de particiones a 4. 

Dicho esto, tenemos dos escenarios posibles: 
  • Trabajamos en una instalación des de cero
  • Trabajamos en una instalación con una o más particiones con datos
¡Importante! Lo primero que haremos es una copia de seguridad de todos los datos importantes.

Trabajando en una instalación des de cero

En el caso de que ya tengáis una instalación hecha, seguramente ya tendréis particionado el disco al 100%. Además, si no tenías muchos conocimientos, probablemente habréis creado todas las particiones primarias o no podréis reparticionar el disco sin borrar parte de los datos. En estos casos, lo mejor es aprovechar la copia de seguridad de los datos para empezar desde cero, borrando toda la tabla de particiones del disco. 

Para hacerlo, utilizaremos el Live CD de Ubuntu, que dispone de una aplicación bastante potente para la gestión de particiones. Desde la aplicación GParted, crearemos: 
  • Una partición primaria FAT32 (que posteriormente reformatearemos a HFS+) para la instalación del Mac OS X.
  • Una partición primaria FAT32 (que posteriormente reformatearemos a NTFS) para Windows 7.
  • Una partición primaria Ext 4 para la instalación de Ubuntu.
  • Una partición extendida con el espacio sobrante donde crearemos 1 o 2 particiones lógicas: 
    • Una de 4096 MB del tipo SWAP (área de intercambio) de Linux.
    • (Opcional) Una partición FAT32 o exFAT para todos datos.

Por ejemplo:


Trabajando en una instalación con una o más particiones de datos

En caso de tener una instalación hecha, el escenario final tendrá que ser el mismo o parecido al que hemos llegado anteriormente, salvo que en este caso tendremos que reducir una o más particiones para hacer espacio a las demás.

Esta operación, en algunos casos, se puede hacer sin formatear el disco y, por lo tanto, sin perder los datos, y el procedimiento a seguir será el mismo (utilizando la aplicación GParted).

El único problema será que en caso de tener un dual boot con Windows y Linux, seguramente tendremos instalado GRUB en el MBR. La idea de este tutorial es tener tres particiones independientes,  y Chamaleon 2.1 como boot loader, así pues, deberemos tener el boot loader instalado en la partición primaria de Linux y no en el MBR.

Instalación de los tres Sistemas Operativos

Windows 7

Siempre que tengáis que instalar más de un sistema operativo en una máquina, la primera instalación debe ser la de Windows. ¿Por qué? Muy fácil, porque al hacer una instalación de Windows, éste reescribe el MBR.

Para el que no sepa lo que es el MBR (Master Boot Record), básicamente son los primeros sectores del disco duro, donde se guarda la tabla de particiones y también el bootstrap para el arranque del sistema operativo. Además, si quisierais instalar dos sistemas windows en la misma máquina, siempre deberíais instalar primero el más antiguo.

La instalación no tiene más secreto que introducir el disco de Windows 7 e instalarlo en la partición que hemos creado a tal efecto. En el caso de que al iniciar no se ejecute el instalador del disco, tendremos que cambiar el orden de arranque de la Bios, para que primero se lea el CD / DVD / BR y posteriormente el HDD.



¡Importante! Antes de continuar, si el CD de Windows 7 que tenéis no contiene el Service Pack 1, mejor que hagáis ahora la actualización. El problema es que si lo queremos actualizar posteriormente, nos dará el error 0x800F0A12.

Este error se puede solucionar fácilmente si hemos instalado Windows en una partición primaria, pero de esto hablaremos al final del Post.

Ubuntu 12.10

En el caso de que queráis establecer un triple boot con Ubuntu, éste será el siguiente sistema operativo a instalar. Si no es vuestra primera instalación de Ubuntu, solo deberéis tener cuidado con la instalación de GRUB, que es imprescindible que se haga en la partición primaria de Linux y no en el MBR.

Los pasos a seguir para la instalación serán los siguientes:
  1. Introduciremos el Live CD de Ubuntu y reiniciaremos el ordenador (recordad que ya tenemos el CD / DVD / Blue Ray como dispositivo de arranque).
  2. Cúando arranque el Live CD, preguntará el idioma y si queremos probar o instalar Ubuntu, seleccionaremos instalar Ubuntu.
  3. Posteriormente, Ubuntu comprobará que cumplimos los requisitos mínimos. En este apartado seleccionaremos: Desacargar actualizaciones e instalar software de terceros.
  4. A continuación viene la parte importante: En tipo de instalación deberemos seleccionar la última opción: Más opciones.
  5. En las opciones de la siguiente pantalla, seleccionaremos la partición primaria Ext4 y informaremos la raíz "/" como punto de montaje.
  6. Finalmente, como "Dispositivo para instalar el cargador de arranque", deberemos seleccionar la partición anterior (donde hemos montado la raíz). Tened en cuenta que por defecto estará marcado /dev/sda que sobreescribiría el MBR.
  7. Para terminar con la instalación de Ubuntu, maracaremos todas las otras opciones por defecto y esperaremos a que termine la instalación.
Notad que al reiniciar el ordenador no podremos acceder a Linux. Eso es porque no hemos cargado GRUB en el MBR y, actualmente, sigue apuntando a Windows. Igualmente, el último punto (no opcional) de este tutorial tratará de recuperar Ubuntu al acabar la instalación, debido a que al reparticionar el disco para la partición del OS X, nos cargaremos el GRUB.

Lion OS X (iAtkos L2)

¿Qué es iAtkos L2?

iAtkos L2
es una distribución del OS X 10.7.2 Lion, que viene preparada con algunas herramientas como el bootloader chamaleon y algunas kexts (parecido a los drivers) necesarios para su instalación en un PC.

¿De dónde descargo el CD?

Se puede descargar la distribución iAtkos L2 de diferentes sitios, pero recomiendo descargarla desde la web oficial: http://iatkos.me/forum/viewtopic.php?f=73&t=18827.

¿Cómo lo instalo?

Lo primero que deberemos hacer es grabar el CD de iAtkos. Notad que la extensión del archivo una vez descomprimido es .DMG.

Esta es parecida a la extensión ISO que ya debéis conocer, pero para MAC. Para grabar esta ISO des de Windows, utilizaremos la versión de prueba de TRANSMAC, que podéis descargar des de este link: http://www.asy.com/sharetm.htm

Una vez tenemos el CD grabado, deberemos asegurarnos de que la BIOS está configurada correctamente para hacer funcionar este Sistema Operativo (SO).

Primeramente, deberemos configurar el orden de los dispositivos de arranque para que el CD / DVD / BR vuelva a ser la primera opción de arranque. Aquellos que hagáis la instalación des de un USB preparado, aparte de configurar el USB como primera opción de arranque, es posible que también debáis seleccionar la opción USB3 Wake up .

Otros parámetros que pueden estar como configurables y que también deberemos revisar, serán los siguientes:
  • AHCI Mode: Enabled
  • Execute Disable Bit (XD): Enabled
  • Limit CPUID Max: Disabled
  • HPET: Enabled
Nota: Si tenemos la opción de AHCI como configurable, es muy importante que tenga el valor correcto. El modo AHCI es una mejora de los discos SATA que modifica el modo de acceso tanto de lectura como de escritura de los HDD y que mejora bastante el rendimiento de la operaciones E/S.

Una vez configurada la BIOS guardaremos los cambios, pondremos el CD / USB de iAtkos L2 y reiniciaremos el PC para iniciar el instalador de iAtkos L2.

El instalador de iAtkos L2 tiene un procedimiento parecido al Live CD de Linux, es decir, primero se cargará una versión del SO en memoria (proceso que tardará de 5 a 30 minutos dependiendo del ordenador), y que nos dejará acceder a la aplicaciones de gestión del disco como la utilidad de particiones, además de lanzar el instalador del SO donde nos saldrá una lista de los idiomas a escoger.


Antes de continuar con la instalación, deberemos reformatear la partición donde instalaremos el OS X a HFS+. Para hacerlo, seguiremos los siguientes pasos:
  1. Accederemos a la utilidad de discos (en el menú superior). 
  2. Seleccionaremos la partición primaria FAT 32 donde queremos instalar iAtkos de la lista de la izquierda.
  3. Seleccionaremos la pestaña Borrar
  4. Seleccionaremos el formato de partición como Mac OS Extended (HFS Plus)
  5. Le daremos un nombre al volumen como Lion OS X.
  6. Pulsaremos el botón Borrar.

Una vez formateado el disco, seguiremos los pasos del instalador hasta la pantalla de selección del disco. ¡¡¡SOBRETODO!!! NO LE DEIS AL BOTÓN "INSTALAR",  o perderéis todo el progreso que hemos ido realizando. En vez de pulsar el botón install, PULSAREMOS EL BOTÓN "PERSONALIZAR".



Al pulsar el botón personalizar, nos aparecerá una ventana flotante donde podremos seleccionar diversas opciones de arranque del sistema operativo que resuelven los errores más típicos de inicio, así como diversas kext (drivers) para hacer funcionar los diferentes dispositivos.

El problema de esta configuración es que depende de cada ordenador. Yo os voy a guiar sobre qué seleccionar o qué no para que el ordenador os arranque y el SO funcione correctamente en la mayoría de casos. Si al iniciar no os arranca el sistema operativo, intentaremos resolverlo entrando como "single user", y si aún así no lo conseguís, habrá que volver a reinstalar el SO marcando otras opciones.

Pues vamos allá, la lista de parámetros que yo recomiendo es la siguiente: 
  • Bootloader
    • Chamaleon 2.1
  • Bootloader options
    • Graphics Enabler
    • Built-in Ethernet
    • 32-bit (Solo si el PC es de 32-bit)
    • Original Apple Boot Logo
  • Patches
    • FakeSMC
    • Disabler
    • RTC 
      • RTC (Solo si el PC es de 64-bit)           
      • RTC 32-bit (Solo si el PC es de 32-bit)
    • EvOreBoot
    • IOPCIFamily
  • Drivers
    • Main Hardware
      • SATA / IDE
        • AHCI SATA 
        • Non-AHCI SATA
        • JMicron IDE
        • SSD Trim Support (Solo si tenemos discos de estado sólido SSD)
      • Sound
        • VoodooHDA
          • v2.7.3
      • USB
        • USB
        • USB 3.0 (Solo si tenemos un ordenador con USB 3.0)
      • PS/2 (Muy importante si queréis que os funcione el teclado)
        • Hardware Sensors
          • CPU
          • Motherboard
          • nVidia VGA Cards (Si tenemos una tarjeta NVidia)
          • ATI VGA Cards (Si tenemos una tarjeta ATI)
      •  Network
        • Wired
          • Realtek RTL 8111/8168

    En mi instalación, también tuve que seleccionar la opción PCI Root -1. Esto soluciona el error PCI Configuration Begin de algunas placas madre, como la de los portátiles HP dv5. No obstante, no lo marco en la lista anterior porque es mas fácil habilitarlo que deshabilitarlo. Entraremos en más detalle a continuación.

    Una vez seleccionadas todas las opciones, continuaremos con la instalación. Ahora sí, PULSAREMOS EL BOTÓN INSTALAR. El proceso tardará más o menos entre (15 minutos - 1 hora). Finalmente nos avisará de que el equipo se reiniciará.

    Primer Boot entrando como single user

    Al reiniciar, todavía no sacaremos el CD de iAtkos de la unidad CD / DVD / BR,  de modo que nos volverá a aparecer la pantalla del bootloader del CD, con una barra de tiempo indicando que si pulsamos cualquier botón iniciaremos des del CD.


    No pulsaremos ningún botón, con lo que nos saldrá la pantalla de selección del sistema operativo, del bootloader que hemos instalado, chamaleon:


    Con la flecha en LION OSX y antes pulsar el intro, deberemos escribir los parámetros de arranque siguientes:
    •   -s -v
    Estos parámetros se escriben directamente, no busquéis ninguna caja de texto. Para los que no hayáis trabajado antes con chamaleon, os resultará raro lo de añadir parámetros de arranque. Con estos parámetros, le decimos al SO como debe arrancar. Luego entraremos en más detalle, solo comentar que los parámetros anteriores sirven para entrar en modo single user y con la opción verbose.

    El modo single user es una especie de modo consola con permisos de súperusuario (root) que nos permitirá hacer modificaciones en el disco antes de cargar el sistema operativo con la GUI, ...

    Esperaremos a que cargue el kernel del sistema operativo y una vez finalizado, aparecerá la palabra *root*. A partir de aquí ejecutaremos los siguientes comandos:

    /sbin/fsck –fy
    /sbin/mount –uw /

    sudo mv /System/Library/Extensions/AppleIntelSNBGraphicsFB.kext \
            /System/Library/Extensions/BACKUP
    sudo mv /System/Library/Extensions/AppleIntelSNBVA.bundle \ 
            /System/Library/Extensions/BACKUP

    exit

    Donde los dos primeros comandos son para cargar el disco en modo lectura /escritura, los dos últimos borran la librerías gráficas de Apple que dan bastantes problemas y el último creo que no hace falta explicarlo ;)

    Al salir del modo consola, se cargará el sistema operativo con todas las kext instaladas. Notad que no he comentado nada de NVEnabler, dado que da bastantes problemas después de la actualización a la versión 10.7.5, así que por ahora utilizaremos el Graphic Enabler de Chamaleon.

    (Opcional) Corregir errores de inicio del OS X

    ¿Qué hacer si no se inicia el Lion OS X o nos aparece un kernel panic? 

    En caso de que al seleccionar el sistema operativo Mac OS X (en nuestro caso el Lion) y se nos quede el logo de la manzanita cargando eternamente o nos salga la pantalla de kernel panic, el modo verbose será nuestro amigo... Recordad que para entrar en modo verbose, tendremos que poner la opción de arranque:
    • -v
    Esto hará que en vez del logo de la manzanita, nos salga todos los pasos que realiza el sistema operativo para iniciarse, de modo que podamos detectar el error.



    Error 1: PCI Configuration Begin

    Para solucionar el error PCI Configuration Begin, tendremos que utilizar uno de los siguientes flags de inicio (opciones de arranque):
    • npci=0x2000
    • npci=0x3000
    Otra opción para este error, es que necesites el flag PCIRoot=1 que no hemos seleccionado durante la instalación. Para modificar el valor, solo tenemos que añadir el flag:
    • PCIRootUID=1
    Nota: Deberemos probar cualquier combinación de los flags npci y PCIRootUID.

    Posteriormente, para no tener que entrar manualmente estos flags a cada inicio, este se puede configurar des de las opciones de chamaleon en el apartdo de configuración del equipo.

    Error 2:NVEnabler

    Si no me habéis hecho caso y habéis decidido instalar de primeras el NVEnabler, tenéis que considerar dos cosas.
    • No podéis poner la kext NVEnabler y seleccionar también la opción Graphic Enbler. Ya que si no lanza un kernel panic.
              Para deshabilitar el Graphic Enabler, solo tienes que añadir la opción de arranque: 
              GraphicsEnabler=No
    • En mi caso, tengo una tarjeta Nvidia GeForce 9600M GT que, al actualizar a la versión 10.7.5 (paso que daremos a continuación), provocaba un kernel panic (aún deshabitando el graphic enabler y volviendo a eliminar las dos kexts AppleIntelSNB... que instala por defecto).
              Para eliminar las kexts de Nvidia y probar si se soluciona el problema, ejecutaremos los
              siguientes comandos cuando cargue el modo single user.

         /sbin/fsck –fy
         /sbin/mount –uw /

         sudo mv /System/Library/Extensions/NV* \
                 /System/Library/Extensions/BACKUP

         exit

    Error 3: El kernel se carga pero da un kernel panic al cargar las kexts
    • Si cualquier otra kext da algún error al cargarla, intentad hacer el mismo proceso que el indicado para las kexts de NVidia, pero en este caso os deberéis fijar en cual es la que se intenta cargar antes de aparecer el kernel panic.

    Error 4: Otros errores antes de cargar las kext
    • Si el error se produce antes de cargar las kexts, solo quedará probar los otros flags de inicio y combinarlos hasta dar con la clave. La lista completa de los flags que podéis utilizar la podéis encontrar en esta web: 
             http://www.macbreaker.com/2012/01/list-of-common-hackintosh-boot-flags_29.html

    Finalizar instalación y Actualizar la versión de OS X a la 10.7.5 

    Muy bien, si habéis podido iniciar el sistema operativo (a mi casi se me saltan las lágrimas) os merecéis un premio a la paciencia y la dedicación :D Pero ahora ¡estaréis deseando acabar de una vez por todas con la instalación! :D ¡Ya queda poco!
    • Configuración básica: La configuración básica consta de un wizzard que te hace seleccionar el idioma del teclado, la franja horaria, tu cuenta de Apple... Simplemente seguiremos todos los pasos e introduciremos la información que nos pidan. Solo un par de consideraciones:
      • En primer lugar, en mi caso tengo el teclado español, con la variante catalana, y en lugar de seleccionar el teclado español reducido del laptop, me configuró el teclado de desktop. Esto simplemente lo solucioné con la actualización a la versión 10.7.5.
      • En segundo lugar, como mi ordenador tiene bluetooth, en cada inicio el gestor de periféricos se quedaba colgado buscando un teclado bluetooth. Esta opción se puede desmarcar des del menú  Preferencias de sistema > Bluetooth > Avanzado...  
      • Por último, si no sabéis como introducir la arroba xD, probad una de las siguientes combinaciones: 
        • Símbolo de Windows + 2  (mi caso)
        • Alt + 2
        • Alt + g
        • Alt + ç
    • Kext Utility: Como ya hemos comentado anteriormente, las kext son algo parecido a los drivers para Mac. Esta utilidad repara los permisos de las kexts y resuelve la mayoría de problemas que puedan surgir; así que iremos a:  Finder -> Aplicaciones -> Utilidades -> Tools y ejecutaremos la utilidad "Kext Utility".

      Esta aplicación la ejecutaremos después de la instalación de cada kext. Notad que podemos buscar las últimas kexts mediante la utilidad "Kext Helper", descargable desde:
      http://www.osx86.net/downloads.php?do=file&id=2994
    • Actualizar las opciones de arranque de Chamaleon: Antes de actualizar el sistema operativo, lo que nos obligará a reiniciar, modificaremos las opciones de arranque desde la utilidad de sistema de chamaleon que se encuentra en: Preferencias de sistema > Complementos > Boot loader
              Para poder realizar modificaciones, deberéis pulsar primeramente el candado y proporcionar la   
              contraseña de administración.


              Posteriormente, entre las pestañas banderas de inicio (opciones de arranque), BIOS y avanzada, 
              podréis modificar todas las opciones que se ajusten a vuestra configuración. 

    • Actualizar a la última versión de OS X: Ahora que ya tenemos la instalación hecha y hemos reparado los permisos de las kexts, solo queda actualizar el sistema. Tened en cuenta que si tenéis una Wifi Intel, deberéis conectaros a la red mediante el cable ethernet, debido a que no existen apenas kexts para estas tarjetas y exceptuando las del proyecto iWidarwin que no está recomendado por la guía de instalación de iAtkos, ya que suele dejar el sistema inestable
              Al volver a reiniciar, es posible que tengáis que volver a eliminar las kexts AppleIntelSNB... 
              entrando en el modo single user.

      Restaurar el boot de Ubuntu

      Pero... ¿todavia no hemos terminado? No, pero ya queda poco. Ahora ya podemos acceder tanto a Windows como a Lion OS X, pero al haber modificado la partición de OS X, probablemente nos hayamos cargado el boot loader de Linux (GRUB).

      Al iniciar, nos aparecerá un texto con el maravilloso: GRUB RESCUE>.

      Pues muy bien, para solucionarlo, primeramente escribiremos el comando:
      GRUB RESCUE> ls

      Este nos listará las particiones que tenemos:
      (hd0) (hd0,msdos1) (hd0,msdos2) ... (hd0,msdos5)

      En mi caso la partición de Linux es la  (hd0,msdos4), pero si no estáis seguros de cual es la partición de Linux, solo tenéis que ejecutar el siguiente comando para las diferentes particiones listadas:

      GRUB RESCUE> ls (hd0,msdos4)/boot/

      Cuando alguna muestre un resultado parecido a:
      ./ ../ System.map-3.2.0-23-generic-pae ...

      Éste será la partición de Linux.

      Una vez detectada, ejecutaremos los siguientes comandos:

      GRUB RESCUE> set root=(hd0,msdos4)
      GRUB RESCUE> set prefix=(hd0,msdos4)/boot/grub
      GRUB RESCUE> insmod normal
      GRUB RESCUE> normal

      Con esto seremos capaces de entrar a Linux.

      Una vez dentro, aprovecharemos para modificar GRUB de manera que no nos aparezcan los otros sistemas operativos, ya que para eso ya tenemos a chamaleon.

      Para hacerlo ejecutaremos sobre el terminal:

      > sudo gedit /etc/default/grub

      Y añadiremos dos lineas al final:

      # Evitar que GRUB reconozca otros sistemas operativos
      GRUB_DISABLE_OS_PROBER=true

      Finalmente, volvermos a instalar GRUB en el disco de Linux, mediante los siguientes comandos:

      > sudo fdisk -l
      (apuntar el disco Ext4)
      > sudo grub-install --force /dev/sdaX 
      (donde X es el numero de la partición de Linux)
      > sudo update-grub2

      Con esto ¡daremos por terminada la instalación! Buenas noches y buena suerte.

      (Opcional) Solucionar el error 0x800F0A12 actualizar Windows 7 SP1

      Como hemos comentado antes, si una vez realizado el tutorial intentamos actualizar Windows 7 al SP1, nos aparecerá el error: 0x800F0A12.

      Este problema ocurre debido a que Windows comprueba que la partición primaria activa (donde se busca el bootstrap del ordenador) sea la partición donde está Windows instalado y sino da error.

      Los pasos a seguir serán:
      1. Marcar la partición de windows como activa
      2. Actualizar Windows al SP1
        • Tranquiiloooooos, como windows está en una partición primaria, se entrará en windows directamente y la instalación no sobreescribe el MBR, así que no romperemos el Chamaleon.
      3. Marcar la partición de OS X como activa.
      Solo nos queda saber cómo marcar una partición como activa des de Windows 7, cosa que es bastante fácil. Para hacerlo, deberemos entrar en windows 7 y posteriormente:
      1. Abrir un CMD con permisos de administrador
      2. Dentro del CMD poner el comando

        C:\> diskpart
        C:\> select disk 0
        C:\> list partition

        (Buscaremos el número de partición de Windows / OS X)
        C:\> select partition X
        (donde X es el número de partición)
        C:\> active
        C:\> exit

      Notad que para actualizar marcaremos como activa la partición de Windows y una vez actualizado, restableceremos el boot loader Chamaleon 2.1 marcando la partición de OS X como activa.

        domingo, 11 de noviembre de 2012

        Cambio de Host Name en Oracle 10g

        En algún momento, la red corporativa puede decir (como en mi caso), cambiar los nombres de Host para adaptar las IPs de la filiales a la red internacional, o en menor escala, un usuario individual puede querer el nombre de Host por varias razones.

        No obstante, este cambio puede suponer un problema si teníamos un SGBD (sistema gestor de base de datos) como Oracle instalada.

        Pues bien, en este post os mostraré que pasos dar para que vuestra base de datos Oracle 10G o Oracle 10G XE vuelvan a funcionar después de un cambio de Host, sin tener que volver a reinstalarlo todo ¡Con las horas que eso representa!

        Notad que aunque en este post solo hablaremos de Oracle 10G, esta solución seguramente es extensible a otras versiones de Oracle, de forma que empecemos con el tutorial!

        Oracle 10G XE

        En el caso de la versión express de Oracle, estamos de suerte, ya que los cambios a realizar serán mínimos. Concretamente, solo tendremos que parar todos los servicios de Oracle, cambiar los ficheros TNSNames.ora y Listener.ora (modificando todas las ocurrencias del antiguo host por el nuevo host) e iniciando de nuevo los procesos que habíamos parado en el primer paso. 

        1. Parar todos los procesos de Oracle

        Para asegurarnos de que todos los servicios de Oracle están apagados, entraremos al gestor de servicios de Windows. Para hacerlo, solo debemos ejecutar la utilidad services.msc desde:
        Inicio > Ejecutar.

        Una vez dentro, pararemos todos los servicios que empiecen por Oracle.



        2. Modificar el host name de los ficheros TNSNames.ora y Listener.ora.

        A continuación, cambiaremos el nombre de host antiguo de los ficheros TNSNames.ora y Listener.ora, por el nuevo nombre de host.

        Estos ficheros de configuración se encuentran en:
        • %ORACLE_HOME%\NETWORK\ADMIN\tnsnames.ora
        • %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
        3. Volver a iniciar los procesos de Oracle

        Una vez hecho esto, volveremos a ejecutar la utilidad services.msc para iniciar los servicios de Oracle que hemos detenido en el paso 1.

        A partir de este momento, ya podremos volver a utilizar nuestra base de datos normalmente. No obstante, no utilizamos la versión XE de Oracle, estos pasos no serán suficientes para volver a hacer funcionar nuestra base de datos.

        Oracle 10G

        En el caso de que tengamos una instalación con la versión completa de Oracle 10G, con los cambios anteriores podremos conectarnos e iniciar la base de datos, pero no funcionará la consola de administración.

        Para solucionar este problema, deberemos seguir una serie de pasos que listo a continuación:

        1. Añadir al fichero hosts la IP de la máquina antigua

        El primer paso será añadir el nombre y la IP de la máquina antigua en el fichero de hosts de Windows. Este fichero se encuentra en el siguiente path:

        %WINDIR%\system32\drivers\etc\hosts


        ####################################################
        # HOSTS file 
        ####################################################
        
        old_host  192.168.1.48
        
        

        Siguiendo el formato de ejemplo incluido en el mismo fichero, con la interfaz de loopback (127.0.0.1).

        Nota: En el caso de que no tengamos la IP antigua, pondremos el nombre de Host antiguo con una IP valida como localhost. El script de desinstalación requerirá que el Host exista para realizar la desinstalación.

        2. Desinstalar la consola de administración

        A continuación, deberemos desinstalar la consola de administración para volverla a reinstalar posteriormente. Para hacerlo, primeramente nos aseguraremos de que tenemos el directorio (%ORACLE_HOME%\bin) en la variable PATH de Windows.

        Una vez nos hemos asegurado del punto anterior, ejecutaremos el siguiente comando en el PROMPT (símbolo de sistema) de Windows.

        C:\> emca -deconfig dbcontrol db -repos drop

        Este script nos pedirá la siguiente información:
        • SID
        • Port (de la BD)
        • Password del usuario SYS
        • Password del usuario SYSMAN
        • Confirmación

        Una vez cumplimentada la información y confirmado el mensaje, se desinstalará la consola de administración.

        3. Comprobar el LOG de la desinstalación

        Una vez ejecutado el script de desinstalación, deberemos comprobar el LOG de desinstalación para ver que todo ha finalizado correctamente. Este LOG se encuentra típicamente en:

        %ORACLE_HOME%\cfgtoollogs\emca\<sid>\ emca_repos_drop_YYYY_MM_DD_HH_MM .log

        Donde <sid> es el SID de la base de datos.

        En el fichero deberemos ver que todos los pasos estén marcados como successfully.

        4. Parar todos los servicios de Oracle (opcional)

        Para asegurarnos de que todos los servicios de Oracle están apagados, entraremos al gestor de servicios de Windows. Para hacerlo, solo debemos ejecutar la utilidad services.msc desde:
        Inicio > Ejecutar.

        Una vez dentro, pararemos todos los servicios que empiecen por Oracle.



        5. Modificar el host name de los ficheros TNSNames.ora y Listener.ora.

        A continuación, cambiaremos el nombre de host antiguo de los ficheros TNSNames.ora y Listener.ora, por el nuevo nombre de host.

        Estos ficheros de configuración se encuentran en:
        • %ORACLE_HOME%\NETWORK\ADMIN\tnsnames.ora
        • %ORACLE_HOME%\NETWORK\ADMIN\listener.ora
        6. Eliminar el servicio de Windows (opcional)

        En algunos casos, aunque la desinstalación haya funcionado correctamente, la desinstalación del servicio de Windows de la consola de administración no se habrá borrado correctamente.

        Para hacer un borrado manual del servicio, deberemos ejecutar el siguiente comando desde el PROMPT de Windows:

        C:\> sc delete OracleDBConsole<sid>

        Donde substituiremos <sid> por el SID de la base de datos.

        7. Reinstalar la consola de administración

        Finalmente, solo quedará reinstalar la consola de administración y reiniciar los servicios que hemos parado.

        Para reinstalar la consola de administración, ejecutaremos el siguiente script en el PROMPT de Windows:

        C:\> emca -config dbcontrol db -repos create

        Este script nos pedirá la siguiente información:
        • SID
        • Port (de la BD)
        • Password del usuario SYS 
        • Password del usuario DBSNMP
        • Password del usuario SYSMAN
        • Dirección de correo electrónico del administrador (opcional)
        • Servidor SMTP para el envío de correos (opcional)
        • Confirmación

        Una vez cumplimentada la información y confirmado el mensaje, se instalará la consola de administración de Oracle de nuestra base de datos.

        8. En caso de fallo al instalar la consola (Opcional)

        En caso de que la instalación de la consola falle por algún error en la introducción de los passwords de DBA, ... Envés de borrar, parar los servicios y volver a instalarla, utilizaremos el comando:


        C:\> emca -config dbcontrol db -repos recreate

        9. Volver a iniciar los procesos de Oracle 

        Una vez hecho esto, volveremos a ejecutar la utilidad services.msc para iniciar los servicios de Oracle que hemos detenido en el paso 4.

        10. Comprobar que funciona la consola de administración

        Finalmente comprobaremos que la consola de administración se ha instalado correctamente, accediendo a la URL de la consola de administración.

        IMPORTANTE! La reinstalación de la consola de administración RESETEA EL PUERTO DE LA CONSOLA AL PUERTO: 5500.

        http://[NEW_HOST]:5500/em

        Donde substituiremos [NEW_HOST] por el nuevo nombre de host.

        11. Cambiar el puerto de la consola de administración

        Para volver a setear el puerto de la consola, por ejemplo al puerto 1158 de la instalación por defecto, deberemos ejecutar el siguiente comando:

        C:\>emca -reconfig ports -DBCONTROL_HTTP_PORT 1158


        Pues con esto acabamos el tutorial. ¡Espero que os sirva!

        sábado, 6 de octubre de 2012

        Tutorial para instalar Android y AndEngine en Windows

        Empezaré mi primera entrada con un tutorial para la instalación del Android SDK conjuntamente con la versión GLES2 de una de las librerias mas utilizadas en el desarrollo de aplicaciones para Android, la libreria AndEngine, en Windows 7.

        Esta libreria nos provee las herramientas necesarias para la creación de juegos para esta plataforma, así como la posibilidad de añadir física 2D, tratamiento multijugador,... a nuestros juegos, de forma fácil e intuitiva.

        Empezemos con los prerequisitos para la instalación de Android:
        • Java 6 JDK: Primero de todo, es necesario tener instalada como mínimo la versión 6 del Java SDK. Podéis descargar la última versión clickando sobre el link anterior(también os podéis descargar la versión 7, aunque os traerá algún que otro problema que luego solucionaremos :D ).
          Una vez hecha la instalación, tenéis que definir la variable JAVA_HOME. Podéis seguir el siguiente tutorial para la definición de variables en Windows, clickando sobre esta dirección: http://amalaka.wordpress.com/2010/02/25/134/.
        • Eclipse: Para este tutorial utilizaremos la IDE Eclipse, probablemente la IDE más utilizada (conjuntamente con NetBeans) para el desarrollo de aplicaciones Java. Podéis descargar la última versión desde el link anterior.
          Os recomiendo que si no váis a programar aplicaciones Java EE, os descarguéis la versión Eclipse IDE for Java developers.
          La instalación de Eclipse no tiene mas secreto que descomprir el archivo en el la carpeta que queramos, añadir la dirección de la carpeta principal a la variable PATH (de forma similar a la instalación de JAVA) y elegir el JAVA_HOME la primera vez que se ejecute eclipse.
        • Apache Ant: Finalmente, para la instalación y compilación de las librerias de AndEngine, deberemos instalar la herramienta Apache Ant. Esta herramienta nos permite definir como compilar y generar nuestros proyectos JAVA, así como descargar automáticamente las librerias necesarias de los repositorios que definamos. Podéis encontrar Apache Ant desde el link anterior. Los pasos para instalar Apache Ant los podéis encontrar aquí.

          Además, tendremos que asegurarnos de que la libreria ant-contribs está instalada en el repositorio de librerias de Ant. Podemos descagar el .jar i el .pom desde el repositorio ibiblio.

          Una vez descargado, solo tenemos que copiar esos dos archivos en: %ANT_HOME%/lib donde ANT_HOME es el directorio de instalación de Apache Ant.
        Una vez nos hemos asegurado de que cumplimos todos los requisitos, porfin podremos empezar con la instalación de Android!

        Instalar el Android SDK

        Para empezar, tenemos que instalar el Android Starter Package. Este instalador, que actualmente va por la revisión 20.0.3, contiene tanto el Android SDK, como el AVD Manager, y solo debermos instalarlo la primera vez (debido a que las siguientes actualizaciones se haran a través del AVD Manager).

        Podemos descargar el starter package desde la página:
        http://developer.android.com/sdk/index.html

        En esa página, deberemos elegir el archivo android-sdk_rXX-windows.exe (por defecto) o clicando en other revisions, podreis descargar el android-sdk_rXX-windows.zip en caso de que el ejecutable no detecte las librerias JAVA.



        En caso de descargar el .exe, solo deberemos ejecutar-lo i seguir el wizzard seleccionado las opciones por defecto. En cas de haber descargado el .zip, descomprimiremos el archivo en una carpeta qualquiera (mejor que no tenga espacios, como en "Porgram Files", debido a un error que luego explicaremos como solucionar) y ejecutaremos el AVD Manager, ejecutando el fichero SDK Manager.exe.

        En ambas opciones de instalación, una vez entremos en el SDK Manager, tendréis que ir a la pestaña Available packages i seleccionar los packages que queráis instalar. Mínimo:
        • Android SDK tools, revison XX (se instalan por defecto con el SDK)
        • Android SDK Platform-tools, revison X (actualmente la versión 14)
        • SDK Platform Android 4.0.3 (API 15)

        Notad que realmente deberemos instarl·lar las versiones del SDK Platform Android para las que queramos desarrollar. No obstante, el branch GLES2 de AndEngine coge por defecto con la versión 4.0.3, aunque se puede vincular a todas las versiones de Android a partir de la 2.2.

        Tambien és interesante que si quereis crear aplicaciones de pago o con anuncios, os bajéis el contenido de la carpeta extras referentes a estos puntos. 

        Una vez seleccionadas las optiones, pulsad el botón install N packages y esperad a que se descarguen todas las actualizaciones.

        Instalar el plugin ADT para Eclipse


        Una vez acabe de instalar todas las actualizaciones, aprovecharemos para instal·lar el plugin ADT para Eclipse. Este plugin nos permite trabajar de manera integrada con el Android SDK desde Eclipse. Para hacerlo, deberemos entrar en Eclipse e ir al menú Help -> Install New Software....

        Una vez dentro, en el campo work with, informar la siguiente dirección:
        https://dl-ssl.google.com/android/eclipse/

        I seleccionar Developer Tools y aceptar. Una vez descargado el plugin se instalará automaticamente i reiniciarà Eclipse. Una vez hecho esto, ya podemos empezar a trabajar con Android!! No obstante, primero vamos a instalar las librerias de AndEngine ^^.

        Instalar las librerias AndEngine


        Para instalar las librerias de AndEngine, primero deberemos integrar git con Eclipse, dirigiendonos nuevamente al menú Help -> Install New Software... y una vez dentro, en el campo work with, informar la siguiente dirección:
        http://download.eclipse.org/egit/updates

        Finalmente seleccionaremos  Eclipse GIT Team Provider e instalaremos el plugin.



        Ahora sí, por fin, clonaremos el repositorio de AndEngine. Explicaremos el proceso para las librerias de AndEngine, y luego solo tendreis que realizar los mismos pasos para las extensiones (de las cuales daré la dirección del repositorio).

        Para clonar el repositorio, tendremos que entrar nuevamente a Eclipse. Una vez dentro, entraremos en el menú: File -> Import...-> Projects from Git -> URI y informaremos la dirección del repositorio de github:
        https://github.com/nicolasgramlich/AndEngine

        En el apartado Authentication, tendremos que poner nuestro User i Password de la cuenta de Github (si no tenemos podemos crear una cuenta gratuita aquí, con el botón create a free account), y en el apartado Initial Branch seleccionaremos GLES2. Finalmente dejaremos las otras opciones por defecto y pulsaremos el boton Finish.

        ¡Importante! La primera versión del AndEngine se puede seleccionar marcando la revisión Master, pero esta ha dejado de estar mantenida por el creador, así que recomendamos empezar utilizando la resivión GLES2.

        Una vez creado el nuevo proyecto, tendremos que modificar algunas opciones para la compilación:
        • Modificar las opciones del proyecto: Esto es para los que hayáis elegido descargaros la versión 7 del JDK. Dado que el código de AndEngine está preparado para compilarse con la versión 6 del JDK, tendremos que modificar la versión con la que compilaremos. Para hacerlo entraremos en Project -> Properties -> Java Compiler, seleccionaremos Enable project especific settings y finalmente seleccionaremos como Compiler compliance level la versión 1.6
        • Crear directotios vacíos: Dado que las carpetas vacias no se sincronizan, es posible que aparezcan errores del Build Path pidiendo estas carpetas. Solo tendremos que crearlas manualmente en la raíz del proyecto.
        • Cambiar la versión de Android: Las librerias del AndEngine se deberan compilar con la versión del Android SDK para la que querais programar. Por eso, primero debereis seleccionar la versión de Android con la que trabajar para el proyecto AndEngine. Para hacerlo, debereis ir a la vista package explorer (abierta por defecto pero accesible desde: Window > Show View > Package Explorer) y posteriormente, hacer click con el botón derecho en el proyecto AndEngine y seleccionar Properties. En el apartado Android, tendremos que seleccionar la versión de entre las instaladas en el apartado Project Build Target.  


        Una vez hecho esto, ya podremos compilar el proyecto AndEngine mediante las teclas CTRL + B o dirigiendonos al menú: Project > Build All

        Con esto habremos instalado tanto el Android SDK, como el entorno de trabajo en Eclipse y las librerias base del AndEngine. No obstante, quedan muchas librerias que extienden las librerias de AndEngine como por ejemplo la libreria: AndEnginePhysicsBox2DExtension, que es la encargada de proveer recursos de física 2D a nuestros juegos.

        El proceso a seguir para su instalación es el mismo, a diferencia de la dirección del repositorio de GitHub en el que se encuentran. Las direcciones de los repositorios de las extensiones de AndEngine son los siguientes.

        Libería Repositorio
        AndEngineAugmentedRealityExtension https://github.com/nicolasgramlich/AndEngineAugmentedRealityExtension
        AndEngineLiveWallpaperExtension https://github.com/nicolasgramlich/AndEngineLiveWallpaperExtension
        AndEngineMODPlayerExtension https://github.com/nicolasgramlich/AndEngineMODPlayerExtension
        AndEngineMultiplayerExtension https://github.com/nicolasgramlich/AndEngineMultiplayerExtension
        AndEnginePhysicsBox2DExtension https://github.com/nicolasgramlich/AndEnginePhysicsBox2DExtension
        AndEngineRobotiumExtension https://github.com/nicolasgramlich/AndEngineRobotiumExtension
        AndEngineScriptingExtension https://github.com/nicolasgramlich/AndEngineScriptingExtension
        AndEngineScriptingExtensionGenerator https://github.com/nicolasgramlich/AndEngineScriptingExtensionGenerator
        AndEngineSVGTextureRegionExtension https://github.com/nicolasgramlich/AndEngineSVGTextureRegionExtension
        AndEngineTexturePackerExtension https://github.com/nicolasgramlich/AndEngineTexturePackerExtension
        AndEngineTMXTiledMapExtension https://github.com/nicolasgramlich/AndEngineTMXTiledMapExtension

        Además, tambien disponemos de dos proyectos con ejemplos prácticos de cada una de las librerias tanto de las extensiones como del core. Estas estan disponibles en dos nuevos repositorios que también podemos descargar mediante el plugi EGIT de eclipse como los proyectos anteriores, cambiando la dirección por:

        Archivos de ejemplo Repositorio
        AndEngineExamples https://github.com/nicolasgramlich/AndEngineExamples
        AndEngineRobotiumExtensionExample https://github.com/nicolasgramlich/AndEngineRobotiumExtensionExample

        ¿Cómo utilizar AndEngine?


        Perfecto, si has seguido los pasos indicados hasta aquí, ya tienes todo lo necesario para crear el primer APK utilizando las librerias de AndEngine. No obstante, si ya habías utilizado la versión GLES1 del AndEngine, notarás que al compilar no se genera un .jar. Entonces... ¿Cómo utilizar AndEngine?

        El creador de AndEngine ha definido la versión GLES2 de AndEngine y sus extensiones, como un conjunto de proyectos de librerías de Android. Para asegurarnos de que estan así definidos, tendremos que ir a las propiedades del proyecto (botón derecho sobre el proyecto AndEngine y pulsar Properties), ir al apartado Android y comprobar que está marcado el checkbox Is Library.


        Entonces, solo quedará crear nuestro código de ejemplo y referenciar el proyecto AndEngine como liberia. Empecemos por crear un nuevo proyecto Android.

        Para crear un nuevo proyecto Android, deberemos entrar en eclipse y ir al menú:
        File > New > Project... y seleccionar Android Application Project.


        A continuación, rellenaremos el nombre de la applicación, el nombre del proyecto y el nombre del package. Además, elejiremos la versión del Android SDK con la que compilaremos y la versión mínima para ejecutar nuestra applicación. Opcionalmente, podemos marcar / desmarcar la opcióm de crear un icono personalizado, para en una pantalla posterior elegir entre varios cliparts, texto o imagenes. Nosotros desmarcaremos la opción de crear el icono personalizado y una vez rellenados todos los otros parámetros, pulsaremos Next.  

        En la siguiente pantalla se nos preguntará si queremos crear una actividad por defecto, a lo que diremos que no queremos crear ninguna (desmarcando el checkbox Create Activity) y acabaremos pulsando el botón Finish.


        Una vez creado el proyecto, deberemos referenciar las librerias de AndEngine. Para hacerlo, deberemos entrar en las propiedades del proyecto y en el apartado Library añadir el proyecto AndEngine (y todos los otros proyectos de librerias Android que necesitemos), tal y como vereis en la siguiente captura de pantalla.


        A continuación, solo tenemos que substituir el código de la clase HelloWorld por el código adjunto a continuación:

        package test.andengine.helloworld;
        
        import org.andengine.engine.camera.Camera;
        import org.andengine.engine.options.EngineOptions;
        import org.andengine.engine.options.ScreenOrientation;
        import org.andengine.engine.options.resolutionpolicy.FillResolutionPolicy;
        import org.andengine.entity.scene.Scene;
        import org.andengine.entity.scene.background.Background;
        import org.andengine.entity.text.Text;
        import org.andengine.opengl.font.Font;
        import org.andengine.opengl.font.FontFactory;
        import org.andengine.opengl.texture.TextureOptions;
        import org.andengine.ui.activity.SimpleBaseGameActivity;
        import org.andengine.util.color.Color;
        
        import android.app.ActivityManager;
        import android.content.Context;
        import android.content.pm.ConfigurationInfo;
        import android.graphics.Typeface;
        import android.util.Log;
         
        public class HelloWorld extends SimpleBaseGameActivity {
            
         private Scene mCurrentScene;
         private Camera mCamera;
         private Font   mFont;
         private static final int CAMERA_WIDTH = 854;
            private static final int CAMERA_HEIGHT = 480;
        
            //A reference to the current scene
            
            @Override
            public EngineOptions onCreateEngineOptions()
            {
             //Debug
             boolean GLES2Suport = detectOpenGLES20();
             Log.d("test.andengine.helloworld.HelloWorld", "Android GLES2.0 Support: " + (GLES2Suport?"true":"false"));
             System.out.print(GLES2Suport);
             
             mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
                EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED, 
                new FillResolutionPolicy(), mCamera);
                return engineOptions;
            }
        
            @Override
            protected void onCreateResources() {
             this.mFont = FontFactory.create(this.getFontManager(), 
                     this.getTextureManager(), 256, 256, TextureOptions.BILINEAR, 
                     Typeface.create(Typeface.DEFAULT, Typeface.BOLD), 32);
             this.mFont.load();
            }
        
            @Override
            protected Scene onCreateScene()
            {
                  Scene mCurrentScene = new Scene();
                  Text helloWorldText;
                  String hwText = "Hello World!";
                  
                  mCurrentScene.setBackgroundEnabled(true);
                  mCurrentScene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));
                           
               helloWorldText = new Text(100, 160, this.mFont, hwText, this.getVertexBufferObjectManager()); 
               helloWorldText.setPosition( (CAMERA_WIDTH - helloWorldText.getWidth()) / 2, 
                                        (CAMERA_HEIGHT - helloWorldText.getHeight()) / 2);
               helloWorldText.setColor(Color.BLACK);
               
               mCurrentScene.attachChild(helloWorldText);
                
               return mCurrentScene;
            }
            
            public final boolean detectOpenGLES20() 
            {
             ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
             ConfigurationInfo info = am.getDeviceConfigurationInfo();
             return (info.reqGlEsVersion >= 0x20000);
            }
            
            public final Scene getCurrentScene(){
             return mCurrentScene;
            }
            
            public final Camera getCurrentCamera(){
             return mCamera;
            }
            
            public final Font getDefaultFont(){
             return mFont;
            }
                       
        }
        
        

        I una vez hemoscreado la clase principal, tendremos que modificar el AndoridManifest.xml, añadiendo el siguiente código:

        <?xml version="1.0" encoding="utf-8"?>
        <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                  package="test.andengine.helloworld"
                  android:versionCode="1"
                  android:versionName="1.0">
        
            <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="15" />
            <uses-feature android:glEsVersion="0x00020000" android:required="true" />
        
            <!-- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> -->  
            <!-- <uses-permission android:name="android.permission.BLUETOOTH" />  -->
            <!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  -->
            <!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  -->
            <!-- <uses-permission android:name="android.permission.CAMERA"/>  -->
            <!-- <uses-permission android:name="android.permission.INTERNET"/>  -->
            <!-- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>  -->
            <!-- <uses-permission android:name="android.permission.VIBRATE"/>  -->
            <!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  -->
            <uses-permission android:name="android.permission.WAKE_LOCK"/>
            
            <application android:label="@string/app_name"
                         android:icon="@drawable/ic_launcher"
                         android:theme="@style/AppTheme">
          <activity android:name=".HelloWorld"
                          android:label="@string/app_name"
                          android:configChanges="orientation" 
                          android:theme="@style/AppTheme">
                    <intent-filter>
                        <action android:name="android.intent.action.MAIN" />
                        <category android:name="android.intent.category.LAUNCHER" />
                    </intent-filter>
                </activity>
            </application>
        
        </manifest>
        

        Para acabar, antes de poder provar nuestro proyecto deberemos crear un dispositivo virtual de pruebas con el AVD Manager (Android Virtual Device). Este plugin que se instala con el ADT plugin de Eclipse, nos permite crear un dispositivo virtual para probar los APK sin necesidad de subirlos a nuestro movil.

        Para crear un nuevo dispositivo de pruebas, nos dirigiremos al menú: Window > AVD Manager y pulsaremos el botón New. Con lo que nos aparecerá la siguiente ventana:



        En esta pantalla tendremos que informar los datos del dispositivo virtual que utilizaremos para probar nuestros juegos y aplicaciones. Para poder probar las aplicaciones construidas con AndEngine GLES2, es muy importante seleccionar como mínimo la versión 4.0.3 de Andorid, el processador Intel Atom x86 i añadir en el hardware la entrada GPU emulation a yes. Si no configuramos estos parámetros NO PODREMOS PROBAR LAS APLICACIONES CON EL EMULADOR. No obstante, si podremos descargar las aplicacines a nuestro teléfono y probarlas directamente.

        Ahora sí y ya para finalizar este tutorial, solo quedará lanzar el emulador y ejecutar el programa de prueba. Para lanzar el emulador, volveremos al AVD Manager (Window > AVD Manager) pero esta vez seleccionaremos el dispositivo que habíamos creado y pulsaremos el botón Start:


        Esto abrirá una nueva ventana con el simulador del dispositivo. Una vez salga la pantalla de bloqueo, desbloquearemos el dispositivo virtual y ejecutaremos nuestro proyecto. Para hacerlo iremos a la vista package explorer, pulsaremos botón derecho sobre el proyecto HelloWorld (o el nombre que le hayamos dado) y seleccioanaremos: Run As > Android Application, seleccioanando el dispositivo virtual que acabamos de encender.


        Con esto acabamos el tutorial de instalación de Android con el AndEngine GLES2. Espero que os haya servido! Y no dudéis en comentar.