Migrar de VMware Workstation a Hyper-V con discos RAID-1

Después de de aplicar la última actualización VMware Workstation en mi laboratorio casero y darme cuenta que fué retirado el soporte a las máquinas compartidas decidí migrar a un hypervisor tipo-1 (baremetal).

Una característica indispensable que estaba buscando es mantener la capacidad de RAID-1 por software para mi arreglo de 2 discos Seagate de 2 TB.

VMware ESXi es un hypervisor con el que he trabajado profesionalmente desde hace mas de 10 años, y en realidad me agrada mucho, pero tenía dos problemas:

  • No soporta software RAID-1
  • No soporta la tarjeta Realtek de mi motherboard (ASUS Prime B365M-A) de manera nativa*

Después de investigar un poco, decidí probar Microsoft Hyper-V Server 2019, el cual tiene estas ventajas:

  • Soporta software RAID-1
  • Soporta la tarjeta Realtek sin tener que instalar parches adicionales
  • Es gratuito
  • No requiere instalar Windows Server 2019

Es importante recalcar que estoy hablando de la versión Hyper-V Server 2019, no de Windows Server 2019 con el rol de Hyper-V, que son cosas diferentes.

Ambiente antes de migración

El ambiente actual esta formado de una máquina armada:

  • Motherboard ASUS Prime B365M-A
  • Procesador Intel i5-9400
  • 2 módulos  de 16 GB – Kingston HyperX Fury PC4-21300 CL16 (HX426C16FB3/16)
  • 1 modulo NVMe – Kingston A400 SSD 960 GB (SA400S37/960G)
  • 2 discos Western Digital SSD WD Green – 120GB, SATA III, 2.5″ (WDS120G2G0A)

La máquina corre Debian Linux 10.3, y funciona como nuestro servidor de archivos (con Samba). Además es un host de dos máquinas virtuales con VMware Workstation 15.

El sistema operativo arranca desde el disco NVMe, y todos los archivos y las VMs viven en un volumen espejeado en dos discos:

Ambiente al final

Al final de la migración debe quedar de la siguiete manera:

La máquina ahora correrá Microsoft Hyper-V Server 2019, y lo que teníamos en el servidor de archivos server ahora será otra máquina virtual con Debian Linux 10.

Migración de datos

El primer problema es migrar los datos, que actualmente están en un volúmen RAID-1 formateado con ext4. El plan es el siguiente:

  1. Romper el arreglo RAID-1 para formatear uno de los discos en NTFS y dejar ahi los discos virtuales
  2. Transformar los VMDK a VHDX y copiarlos el NTFS
  3. Una vez que estemos corriendo Hyper-V volver a crear el arreglo RAID-1

Esto lo hacemos de la siguiente manera:

  • Desde el host actual con Linux, romper el arreglo RAID-1 y remover el disco /dev/sda del arreglo:
mdadm --fail /dev/mda /dev/sda
mdadm --remove /dev/md0 /dev/sda
  • Instalar Hyper-V en el disco NVMe
  • En Hyper-V los discos se ven asi:
    • Disk 0: Disco Seagete #1 — Este disco se va a formatear con NTFS
    • Disk 1: Disco Seagate #2 — Este disco se deja con ext4 (tiene los datos)
    • Disk 2: Disco NVMe
  • Preparar disco 1 para uso de Hyper-V
DISKPART
SELECT DISK 0
CLEAN
CONVERT DYNAMIC
CREATE VOLUME SIMPLE
ASSIGN LETTER=E
FORMAT FS=NTFS QUICK
  • Compartir disco para tener acceso desde la estacion de trabajo:
NET SHARE DATASTORE=E:\ /GRANT:Administrator,CHANGE
  • En el servidor Hyper-V preparar el disco 1 para montarse directamente en la VM “server”
SELECT DISK 1
OFFLINE DISK
  • Crear nueva VM con Debian llamada “server” y asignarle dos discos:
    • Disco 1: Archivo VHDX que vive en el disco NVMe
    • Disco 2: Acceso físico al disco #1 (que será montado en /mnt)
  • Desde la nueva VM se copian los datos del disco#2 al disco #1
cp -r /mnt/home/public /home/public
  • En la VM “server” se habilita una carpeta compartida “vmware” con Samba donde se comparten los VMDKs del VMware Workstation.
  • Los discos de VMware estan en formato ESXi (tipo 4) que no es soportado por Microsoft Virtual Machine Converter, de manera que hay que convertirlos de formato con vmware-vdiskmanager y dejarlos en C:\TEMP en la estación de trabajo:
vmware-vdiskmanager -r "\\server\vmware\nvr\nvr-0.vmdk" -t 6 c:\temp\nvr-0.vmdk"
vmware-vdiskmanager -r "\\server\vmware\unifi\unifi-0.vmdk" -t 6 c:\temp\nvr-0.vmdk"
  • Ahora falta copiar y convertir los discos virtuales de las VM “nvr” y “unifi”. Vamos a utilizar la herramienta Microsoft Virtual Machine Converter:
Import-Module "C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1"
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "C:\temp\nvr-0.vmkd" -DestinationLiteralPath "\\hyperv\datastore\VirtualDisks\nvr-0.vhdx" -VhdType DynamicHardDisk -VhdFormat vhdx -Verbose
ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath "C:\temp\unifi-0.vmkd" -DestinationLiteralPath "\\hyperv\datastore\VirtualDisks\unifi-0.vhdx" -VhdType DynamicHardDisk -VhdFormat vhdx -Verbose

Activación de RAID-1 en Hyper-V

Una vez migrados todos los datos y convertidos los archivos VMDK a VHDX, podemos desmontar el disco 0 de la VM “server” y quitarlo de la configuración.

Finalmente se agrega el disco al volumen dinámico en Hyper-V:

DISKPART
SELECT VOLUME E:
ADD DISK=0

Validamos la configuración del volumen:

Conclusiones

Hemos logrado los objetivos:

  • El hypervisor paso de ser un tipo 2 a un tipo 1.
  • El Linux (que era mi hypervisor tipo 2) quedó virtualizado
  • Las otras dos máquinas fueron transformadas de VMware a Hyper-V
  • Los discos trabajan en un arreglo RAID-1 controlado a nivel hypervisor.

Habilitar Linux como Access Point

Tengo un servidor MintBox cuyas antenas wireless no estoy usando… así que decidí incrementar la cobertura de mi red inalámbrica habilitándolo como un Access Point. El servidor está corriendo Linux Mint 16 Petra, pero este procedimiento debe funcionar con cualquier variante de Debian.

Nótese que es un Access Point, no un router. Es decir, el server no ofrece servicios DHCP, DNS o de ruteo, para eso tengo un ruter. Simplemente conecta la red inalámbrica al resto de mi LAN.

Arquitectura

El servidor cuenta con tarjetas Ethernet (eth0 y eth1) y una tarjeta Wi-Fi (wlan0).

Vamos a crear un bridge (br0) entre la tarjeta wlan0 y la eth0. La tarjeta eth1 no está en uso.

Requisitos

Instalar los paquetes bridge-utils y hostapd.

# apt-get install hostpad
# apt-get install bridge-utils

Configuración de hostapd

Editar el archivo /etc/default/hostapd. Descomentar y ajustar el valor de DAEMON_CONF para que apunte al archivo de configuración:

DAEMON_CONF="/etc/hostapd/hostapd.conf"

Crear el arhivo /etc/hostapd/hostapd.conf con los siguientes valores. Esto configura una red WPA2-PSK con autenticación TKIP y cifrado AES/CCMP.

#
# See https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf for reference
#
interface=wlan0
bridge=br0
driver=nl80211
hw_mode=g
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][HT20][SHORT-GI-20]
country_code=MX
ieee80211d=1
channel=3
ignore_broadcast_ssid=0
ssid=mi-nombre-de-red
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_pairwise=TKIP
rsn_pairwise=CCMP
wpa_passphrase=mi-contraseña
auth_algs=1
macaddr_acl=0

Configurar las interfaces de red

Editar el archivo /etc/network/interfaces para crear el bridge y eliminar la configuración de la tarjeta eth0:

auto lo br0

iface lo inet loopback

iface wlan0 inet manual

iface eth0 inet manual

iface br0 inet static
        bridge_ports wlan0 eth0
        address 192.168.1.10
        netmask 255.255.255.0
        gateway 192.168.1.254
        dns-nameserver 192.168.1.254

Reiniciar

Tu nueva SSID debe estar visible al reiniciar.

Instalar drivers del SheevaPlug JTAG

Al utilizar un “plug computer” como el SheevaPlug o el DreamPlug, tenemos que utilizar el adaptador JTAG para conectarnos a la consola del equipo. Este JTAG tiene incorporado un convertidor de USB a Serial que requiere un controlador. Si descargamos los controladores de este dispositivo desde la página del fabricante no se pueden utilizar directamente, es necesario ajustarlos un poco.

DreamPlug con JTAG

DreamPlug con JTAG

1. Descargar los controladores de puerto virtual FTDI desde la pagina oficial: http://www.ftdichip.com/Drivers/VCP.htm

2. Ejecutar el instalador sólo hasta el punto donde extrae los archivos. Cuando inicia el asistente de instalación, damos Cancel.

3. Abrimos el Command Prompt y nos cambiamos al directorio temporal donde el instalador extrajo los archivos y los copiamos a otra ubicación:

C:\Users\username>cd %TEMP%\FTDI-Driver
C:\Users\username\AppData\Local\Temp\FTDI-Driver>mkdir C:\Drivers\F2232D
C:\Users\username\AppData\Local\Temp\FTDI-Driver>xcopy /s . C:\Drivers\F2232D

4. Ahora tenemos que editar los archivos INF y agregar las siguientes líneas en las secciones indicadas:

ftdibus.inf

[FtdiHw.NTamd64]
%USB\VID_9E88&PID_9E8F.DeviceDesc%=FtdiBus.NT,USB\VID_9E88&PID_9E8F
%USB\VID_9E88&PID_9E8F&MI_00.DeviceDesc%=FtdiBus.NT,USB\VID_9E88&PID_9E8F&MI_00
%USB\VID_9E88&PID_9E8F&MI_01.DeviceDesc%=FtdiBus.NT,USB\VID_9E88&PID_9E8F&MI_01

[Strings]
USB\VID_9E88&PID_9E8F.DeviceDesc="USB Serial Converter"
USB\VID_9E88&PID_9E8F&MI_00.DeviceDesc="USB Serial Converter A"
USB\VID_9E88&PID_9E8F&MI_01.DeviceDesc="USB Serial Converter B"

ftdiport.inf

[FtdiHw.NTamd64]
%VID_9E88&PID_9E8F.DeviceDesc%=FtdiPort2232.NT,FTDIBUS\COMPORT&VID_9E88&PID_9E8F

[Strings]
VID_9E88&PID_9E8F.DeviceDesc="USB Serial Port"

5. Eliminar cualquier controlador anterior (ver artículo relacionado)

6. Conectar el adaptador JTAG a un puerto USB. Aparecen los siguientes dispositivos en el Device Manager:

Image

 

7. Seleccionar el primero y dar clic derecho en Update Driver Software…

Image

8. Dar la ubicación que creamos en el paso #3

Image

9. Aparece una advertencia. Instalar el software de todas maneras.

Image

10. La instalación termina exitosamente.

Image

11. Ahora el segundo dispositivo aparece así:

Image

11. Repetir el mismo proceso con el “USB Serial Port”. Al finalizar, nos indicará que no se instaló correctamente (es normal) y aparecerá un puerto COM que no funciona.

12. Seleccionar el puerto y darle Update Driver Software…

13. Seleccionar Browse my computer for driver software.
14. Ahora seleccionar Let me pick from a list of device drivers in my computer.
15. Dejar seleccionado Show All Devices y dar clic en Next.
16. Dehabilitar la opcion Show compatible hardware
17. Seleccionar del fabricante FTDI el modelo USB Serial Port:

Image

18. Aparecerá una advertencia. Dar clic en Yes:

Image

19. El dispositivo ahora se instala correctamente:

Image

20. Ya tenemos nuestro convertidor puertos del JTAG configurado correctamente.

Eliminar drivers de puertos COM

Con la desaparición de los puertos RS-232 en la mayoría de las computadoras actuales nos vemos en la necesidad de utilizar convertidores de USB a puertos serie. A veces los drivers no funcionan bien o colisionan nos con otros, haciendo necesario la desinstalación completa de los mismos.

Este procedimiento nos ayuda a limpiar por completo cualquier driver que tengamos instalado, no solo para los convertidores de puertos, sino para cualquier otro uso.

1. Abrir el Command Prompt, ajustar la variable de ambiente devmgr_show_nonprsent_devices y abrir el Device Manager:

set devmgr_show_nonpresent_devices=1
devmgmt.msc

2.Desde el Device Manager habilitar la opción View > Show Hidden Devices.

3. Eliminar los dispositivos que ya no queremos

Ahora, debemos eliminar los paquetes de los controladores para que no se instalen automáticamente al volver a conectar el dispositivo:

1. Abrir el Command Prompt

2. Identificar los archivos INF de los controladores que nos interesa eliminar, mediante el comando pnputil:

C:\Users\Administrator>pnputil -e
Published name :            oem54.inf
Driver package provider :   FG
Class :                     Network adapters
Driver date and version :   07/14/2009 2009.7.14
Signer name :               Microsoft Windows Hardware Compatibility Publisher

Published name :            oem63.inf
Driver package provider :   FTDI
Class :                     Universal Serial Bus controllers
Driver date and version :   08/26/2014 2.12.00
Signer name :

Published name :            oem19.inf
Driver package provider :   Sierra Wireless Incorporated
Class :                     Network adapters
Driver date and version :   04/12/2012 12.4.1011.27
Signer name :               Microsoft Windows Hardware Compatibility Publisher

En este caso, el driver que quiero borrar es el FTDI, por lo tanto al archivo que me interesa es oem63.inf.

3. Eliminar el paquete de controladores:

pnputil -d oem63.inf

Con esto eliminamos por completo ese controalador y podemos hacer una instalación “limpia” de nuevo.

Instalar VMware ESXi 5.1 desde una memoria flash USB

Requisitos

  • SYSLINUX 3.86 (la versiones mas nuevas no funcionarán)
  • Archivo ISO para instalar VMware

Procedimiento

1. Insertar la memoria flash USB y darle formato con el sistema de archivos FAT-32

  1. FORMAT X: /Q /FS:FAT32

2. Instalar SYSLinux en la memoria flash USB

SYSLINUX X:

3. Montar el archivo ISO y copiar su contenido a la memoria flash.

4. En la memoria flash, renombrar el archivo ISOLINUX.CFG a SYSLINUX.CFG

5. Editar el archivo SYSLINUX.CFG y alterar la línea APPEND para que quede así:

APPEND -c boot.cfg -p 1

6. Conectar la memoria flash al servidor donde se instalará VMware e iniciar desde el dispositivo USB.

Galaxy Tab GT-P1000 y Android 4.2.1 con CyanogenMod 10.1 (Guía definitiva)

En un artículo anterior publiqué un procedimiento para actualizar la Galaxy Tab (GT-P1000) y éste generó muchísimos comentarios.

En este entrega tenemos un procedimiento mucho mas detallado y además una versión mas reciente del sistema operativo, estaremos instalando CyanogenMod 10.1 basado en Android 4.2.1 (Jelly Bean).

El procedimiento a grandes rasgos es el siguiente:

  1. Rootear la tablet
  2. Entrar como root y respaldar partición EFS
  3. Instalar Kernel nuevo
  4. Instalar la ROM de CyanogenMod
  5. Instalar las aplicaciones de Google para Android
  6. Restaurar respaldo de partición EFS (para conservar el IMEI del equipo)

Se asume que la computadora no tiene ningún controlador de Samsung instalado, y que está limpia. Si la máquina ya tiene drivers, es posible que algunos pasos puedan ser omitidos.

El procedimiento se probó en Windows 8 Pro de 64-bits pero debe funcionar en versiones de 32-bits tanto de Windows 7 como de Windows 8.

Requerimientos

  • Identificar el modelo de tu tablet (P1000, P1000N ó P1000L) ya que los kernels no son intercambiables entre ellos.
  • Respaldar tu información ya que la tablet será formateada (la tarjeta externa no se verá afectada)
  • Estar corriendo Android Gingerbread (2.3.3 – 2.3.6)

Descargas requeridas

Descargar ODIN (http://forum.xda-developers.com/showthread.php?t=1738841)
Descargar kernel cm-10.1-20121226-P1N-kernel.zip ( http://d-h.st/users/humberos/?fld_id=8870)
Descargar ROM cm-10.1-20121228-HumberOS-p1.zip ( http://www.humberos.com.br/2012/12/sgt-cm-101-20121228.html)
Descargar paquete de Google Apps para Android (http://wiki.cyanogenmod.org/w/Gapps)
Descargar DooMLoRD rooting toolkit (http://forum.xda-developers.com/attachment.php?attachmentid=841876&d=1325678726)

_

Rooteo de la Tablet

Antes de iniciar, es necesario habilitar la función de USB Debugging mediante estos pasos:

  • En la tablet, ir Settings > Applications > Development
  • Habilitar USB debugging

Iniciamos el proceso:

  1. Conectar Galaxy Tab a la computadora
  2. Descomprimir el archivo DooMLoRD_v4_ROOT-zergRush-busybox-su.zip
  3. Ejecutar el archivo runme.bat ubicado dentro de la carpeta de DooMLoRD y dar ENTER para continuar
  4. El proceso tarda unos 5 minutos, al finalizar aparece “ALL DONE!!!” y la tablet se reinicia.

_

Respaldar partición EFS (información IMEI)

Este paso es sumamente importante porque la instalación de CyanogenMod borra la partición EFS de la memoria flash que contiene el IMEI inhabilitando la capacidad de la tableta para conectarse a la red celular.

  1. Abrir el Símbolo de Sistema (Command Prompt) y navegar a <carpeta de DoomLord>/files
  2. Teclear adb shell [ENTER]
  3. Aparece el símbolo $, teclear su [ENTER]
  4. Teclear tar -cvf /sdcard/external_sd/efs.tar /efs
  5. Esto genera un respaldo del IMEI en el SD card
  6. Apagar tablet y extraer tarjeta SD

Ejemplo:

C:\Users\username>cd Downloads\DooMLoRD_v4_ROOT-zergRush-busybox-su\files
C:\Users\username\Downloads\DooMLoRD_v4_ROOT-zergRush-busybox-su\files>adb shell
$ su
# tar -cvf /sdcard/external_sd/efs.tar /efs

_

Preparación del Kernel para ODIN

  1. Abrir el archivo del Kernel cm-10.1-20121226-P1N-kernel.zip y extraer el archivo boot.img
  2. Renombrar boot.img a zImage
  3. Desde 7-Zip seleccionar zImage con el botón derecho y seleccionar 7-zip/Add to archive…
  4. En archive format selccionar tar y darle OK
  5. Esto genera el archivo zimage.tar

_

Instalación del Kernel

  1. Apagar la tablet y ponerla en modo Download (presioanr la tecla Power y VolDn simultánemente)
  2. Ejecutar ODIN
  3. Clic en el botón PDA y seleccionar el archivo zImage.tar creado anteriormente
  4. Clic en el botón Start
  5. Cuando la Tablet se reinicie, INMEDIATAMENTE se debe presionar y mantener el botón VolUp hasta que aparezca la leyenda SGT7 HumberOS Project (indicando que inició en modo Recovery)
  6. Si la tablet comienza un ciclo de reinicios continuos, mantener presionado el boton de Encendido hasta que este se apage y volverla a iniciar en modo recovery de la siguiente forma:
    1. Presionar Power y Volume Up hasta que encienda
    2. Cuando aparezca el logo de Samsung, soltar power y mantener la tecla de Volume Up.

_

Instalar controladores para Modo Recovery

Una vez en modo Recovery se requieren drivers adicionales al conectar la tablet a la computadora

  1. En Windows abrir el Administrador de Dispositivos y seleccionar Galaxy Tab
  2. Clic derecho y clic en Actualizar software del controlador
  3. Clic en Buscar software del controlador en el equipo
  4. Clic en Elegir en una lista de controladores de dispositivos
  5. Doble clic en ADB Interface
  6. Doble clic en SAMSUNG Android ADB Interface Versión 2.9.319.511
  7. Aparece una Advertencia de actualización de controladores. Clic en .
  8. Clic en Cerrar.

_

Instalación de la ROM de CyanogenMod

En la tablet, las teclas de volumen mueven la barra de selcción y el botón de encendido hace la selección

    1. En la tablet, seleccionar mounts and storage
    2. mount /sdcard
    3. +++++Go Back+++++
    4. En la computadora, abrir el Símbolo de Sistema (Command Prompt) y navegar a <carpeta de DoomLord>/files
    5. Teclear adb push <ruta>/cm-10.1-20121228-HumberOS-p1.zip /sdcard para transferir la ROM
    6. Teclear adb push <ruta>/gapps-jb-20121212-signed.zip /sdcard para transferir las aplicaciones de Google
    7. En la tablet, seleccionar install zip from sdcard
    8. choose zip from sdcard
    9. cm-10.1-20121228-HumberOS-p1.zip
    10. Yes – Install cm-10.1-20121228-HumberOS-p1.zip
    11. Aparece:
Installing update...
(tarda unos 3 o 4 minutos)
Install from sdcard complete.
    1. choose zip from sdcard
    2. gapps-jb-20121212-signed.zip
    3. Yes – Install gapps-jb-20121212-signed.zip
    4. Aparece:
************************
Google Apps for Android 4.2.1
************************
Mounting system
Copying files
Fixing permissions...
Unmounting filesystem...
Installation complete!
  1. +++++Go Back+++++
  2. wipe data/factory reset
  3. Yes — delete all user data
  4. Desconectar la tablet de la PC
  5. En la tablet, seleccionar reboot system now
  6. La tablet arranca con CyanogenMod. Como es el primer arranque puede tardar hasta 5 minutos.
  7. Los mensajes de inicio se pueden monitorear conectando la tablet a la computadora y ejecutando adb logcat.
  8. Aparece el mensaje “Warning! A problem was detected with your device. Your device IMEI number is invalid” . Es normal, ahora hay que recuperar el respaldo.

Restaurar respaldo de IMEI

    1. Insertar la tarjeta SD
    2. Ahora se debe volver a habilitar el USB debugging
    3. Ir a Settings > About tablet
    4. Tocar en Build number 7 veces.
    5. Regresar al menu anterior
    6. Tocar en Developer options > Android Debugging > Allow USB debuggin? OK
    7. Root access > Apps and ADB
    8. Abrir el Simbolo de Sistema (Command Prompt) y navegar a <carpeta de DoomLord>/files
    9. Teclear:
adb shell
su
tar -xvf /storage/sdcard1/efs.tar
reboot
  1. La tablet se reinicia
  2. Ya no aparece la advertencia del IMEI y la tablet puede realizar llamadas normalmente.

Galaxy Tab 7 corriendo Android 4.2

Actualización de la Galaxy Tab GT-P1000 a Android 4.1.2 con CyanogenMod 10

Galaxy Tab corriendo Android Gingerbread

Galaxy Tab corriendo Android Gingerbread

[Nueva versión disponible: Hay un nuevo artículo para instalar la versión 4.2 de Android con pasos mas detallados:
Galaxy Tab GT-P1000 a Android 4.2.1 con CyanogenMod 10.1 (Guía definitiva) ]

La última versión de Android (soportada oficialmente) para la tablet Samgung Galaxy Tab original de 7″ es la 2.3.3 (Gingerbread), sin embargo esta máquina es perfectamente capaz de ejecutar Jelly Bean sin problemas.

Al ser OpenSource, Android tiene la gran ventaja de que grupos de Hackers puedan modificarlo y hacer sus propias versiones mejoradas.

Una de estas versiones es CyanogenMod, un reemplazo de firmware OpenSource para teléfonos y tablets. Este firmware tiene muchas ventajas sobre los firmwares originales, entre ellas, no trae aplicaciones de los operadores, incluye características adicionales y hay quien dice que tiene mejor desempeño que el firmware original.

Desafortunadamente, la Galaxy Tab no está entre los dispositivos soportados oficialmente por este grupo de desarrolladores.

Nuevamente, al ser Open Source, permite que otras personas lo modifiquen para sus necesidades, y así es que Humberto Borba ha modificado a CyanogenMod para ejecutarse en las Galaxy Tab y Galaxy Nexus, bautizándola como HumberOS.

Al actualizar la Galaxy Tab al Android Jelly Bean, realmente le estamos dando una nueva vida al equipo, tiene mejor desempeño que de nuevo y una apariencia muy moderna, como la encontrada en el Galaxy Nexus o el Galaxy SII.

IMPORTANTE: Si tienes el adaptador HDMI para esta tablet, posiblemente no te convenga realizar este procedimiento, ya que CyanogenMod no soporta la decodificación por hardware, utilizada por aplicacioens como YouTube en la salida de video HDMI.

A continuación los requerimientos y pasos para instalar CyanogenMode 10 en la tablet. En esta guía estaré dando los links a las páginas de los autores originales, y no directamente a las páginas de descargas.

Requerimientos

  • Identificar el modelo de tu tablet (P1000, P1000N ó P1000L) ya que los kernels no son intercambiables entre ellos.
  • Respaldar tu información ya que la tablet será formateada (la tarjeta externa no se verá afectada)
  • Estar corriendo Android 2.3.3 Gingerbread con ROM versión BJP7 ó FJP6.
  • No tener miedo a usar la línea de comandos

Descargas necesarias
– Kernel CyanogenMod 9 para GT-P1000 de HumberOS
Archivo: CM9-Kernel-P1000N-20120428.tar.gz
Fuente: http://www.humberos.com.br/p/android-ics.html sección “Kernel Files”
– Ambiente CyanogenMod 10 para GT-P1000
Archivo: sgt7-cm10-20121118-HumberOS-p1n.zip
Fuente: http://www.humberos.com.br/2012/11/sgt7-cm10-20121118.html
– Ultima versión de Google Apps para Android
Archivo: gapps-jb-20121011-signed.zip
Fuente: http://wiki.cyanogenmod.org/wiki/Latest_Version/Google_Apps
– Herramienta ODIN para instalar el Android 2.3.3 (sólo si estas en una versión anterior)
– Herramienta Heindmall para actualizar el kernel (http://www.glassechidna.com.au/products/heimdall/)
– GNU tar o equivalente para leer archivos en formato tar.

Procedimiento
A grandes rasgos el procedimiento consiste en:
– Instalación del kernel de CyanogenMod 9
– Iniciar en modo recovery de ClockWorkMod para convertir los sistemas de archivos a formato ext4
– Copiar CyanogenMod 10 y Google Apps a la tarjeta SD
– Desde el ambiernte de recovery Instalar CyanogenMod 10 y Google Apps

A continuación el proceso detallado:

    1. Extraer el archivo boot.img del archivo CM9-Kernel-P1000N-20120428.tar.
tar -xvf CM9-Kernel-P1000N-20120428.tar boot.img
    1. Poner la tablet en modo download:
      • Apagar la tablet
      • Extraer la tarjeta externa SD (esto es muy importante)
      • Presionar el botón “Volume Down” y “Power” simultáneamente (tip: presiona primero el del volumen y mantenlo mientras presionas el de encendido). Debe aparecer un triángulo amarillo y la leyenda Downloading…

       

       

       

       

      Galaxy Tab in Download mode

      Galaxy Tab in Download mode

       

    2. Grabar el archivo boot.img tecleando lo siguiente en la linea de comandos:
heimdall flash --no-reboot --kernel boot.img
    1. Apagar la tablet y volverla a encender en modo recovery. (Estando apagada, presionar simultáneamente las teclas “Volume Up” y “Power” hasta que incie)
    2. Debe aparecer la leyenda HumberOS Recovery Project.
      2012-12-10 07.08.31
    3. Para navegar en la opciones, utiliza las teclas de volumen, para seleccionar utiliza la tecla de encendido
    4. Seleccionar la opción wipe data/factory reset. Esto es muy importante porque se queremos formatear la partición /data en formato ext4.
    5. Copiar los archivos del ambiente CyanogenMod y Google Apps a la tarjeta interna, tecleando lo siguiente desde la línea de comandos:
adb push sgt7-cm10-20121118-HumberOS-p1n.zip /sdcard
adb push gapps-jb-20121011-signed.zip
    1. En la tablet, seleccionar:
install menu
sgt7-cm10-20121118-HumberOS-p1n.zip
choose zip from internal sdcard
Yes
    1. Aparece una advertencia. Ingorarla y volver a instalar.
      2012-12-10 07.11.10
    2. La tablet se reinicia y comienza un proceso (está convirtiendo las particiones de formato RFS a ext4)
    3. La tablet vuelve a iniciar, ahora en modo CwM (ClockworkMod)
      2012-12-10 07.51.36 b
    4. Volver a instalar el mismo zip:
install zip from sdcard
choose zip from sdcard
sgt-cm10-20121118-HumberOS-p1n.zip
Yes
    1. Aparece la leyenda Installing updates… y tarda varios minutos así.
    2. Al finalizar, aparece Install from sdcard complete.
    3. Seleccionar:
++++ Go Back ++++
install zip from sdcard
choose zip from external sdcard
gapps-jb-20121011-signed.zip
Yes
++++ Go Back ++++
reboot system now
  1. CyanogenMod inicia el proceso de arranque. Esto tomará unos 5 minutos ya que está generando el cache nuevamente.

    2012-12-10 08.02.05

    Galaxy Tab corriendo CyanogenMod 10

Notas sobre el almacenamiento en la Samsung Galaxy Tab 7 (GT-P1000)

La Galaxy Tab 7 (GT-P1000) tiene 3 sistemas de almacenamiento:

  • Memoria flash interna
  • Tarjeta SD interna
  • Tarjeta SD externa (extraíble)

Desde el punto de vista del sistema operativo, estos dispositivos son visibles con los siguientes nombres respectivamente:

/dev/block/bml0
/dev/block/mmcblk0
/dev/block/mmcblk1

La memoria flash está dividida en áreas llamadas particiones. Algunas de ellas tienen sistemas de archivos y otras son para uso crudo. Las harramientas como ODIN o Heimdall, utilizadas para grabar custom ROMs o kernels graban en esta memoria.

La tabla de particiones de la memoria flash interna se organiza como sigue (se muestran los nombres de los dispositivos BML, así como el nombre del archivo que es grabado por ODIN en cada zona):

/dev/block/bml1   IBL+PBL:[boot.bin]           # Initial Boot Loader + Primary Boot Loader
/dev/block/bml2   PIT:[gt-p1000.pit]           # Partition Information Table
/dev/block/bml4   SBL:[sbl.bin]                # Secondary Boot Loader
/dev/block/bml5   SBL2:[sbl.bin]               # Secondary Boot Loader 2
/dev/block/bml6   PARAM:[param.lfs]            # param file system
/dev/block/bml7   KERNEL:[zImage]              # Kernel image
/dev/block/bml8   RECOVERY:[zImage]            # Kernel image for recovery
/dev/block/bml9   FACTORYFS:[factoryfs.rfs]    # Factory file system
/dev/block/bml10  DBDATAFS:[dbdata.rfs]        # dbdata file system
/dev/block/bml11  CACHE:[cache.rfs]            # cache file system
/dev/block/bml12  MODEM:[modem.bin]            # Modem firmware

Los dispositos BML (Block Management Layer) dan acceso crudo a la memoria flash, ya sea como un dispositivo único (bml0) o a por particion (bml1, bml2, etc.)

Debido a que la memoria flash se va dañando con el uso, existe una capa de software llamada STL (Sector Translation Layer) que gestiona la asignación de los bloques que “ven” los sistemas de archivos montados en la flash, y así poder balancear su uso. En los dispositivos llamados USB Drives, esta gestión se hace en la propia circuitería y no requiere intervención del sistema operativo.

Por lo anterior, el kernel expone algunas áreas de la flash como dispositivos STL (/dev/block/stlx), y sobre éstos van montados los sistemas de archivos de la siguiente manera:

/dev/block/stl3   /efs        rfs
/dev/block/stl6   /mnt/.lfs   j4fs #(verificar)
/dev/block/stl9   /system     rfs
/dev/block/stl10  /dbdata     rfs
/dev/block/stl11  /cache      rfs

La tarjeta SD interna (/dev/block/mmcblk0) también está dividida en 3 particiones:

mmcblk0p1 /mnt/sdcard    vfat
mmcblk0p2 /data          rfs
mmcblk0p3 /preload       vfat

La partición /mnt/sdcard es el área a la que el usuario tiene acceso desde las aplicaciones.

La tarjeta SD externa (/dev/block/mmcblk1) tiene una sola partición:

mmcblc1p1  /mnt/sdcard/external_sd

GlobcalScale Technologies DreamPlug

El DreamPlug de GlobalScale Technologies es un kit de desarrollo basado en el controlador SoC (“System-On-Chip”) Marvell® 88F6281 with Sheeva™. Estos dispositivos son, como su nombre lo indica, todo un “sistema en un chip” ya que integran en una sola pastilla lo siguiente:

  • CPU de arquitectura ARMv5TE con 256KB de cache L2
  • 2 puertos Ethernet Gigabit
  • 2 puertes SerialATA
  • Controlador USB 2.0
  • SDIO
  • Controlador DDR
  • Puerto PCI-E
  • 2 canales TDM
  • Audio y Video MPEG
  • Controlador NAND, 2 x UART, TWSI y SPI
  • 4 IDMA/XOR

DreamPlug de GlobalScale Technologies

DreamPlug de GlobalScale Technologies

Con el DreamPlug, obtenemos una poderosa computadora de bajo consumo lista para usarse.  Viene con Debian 6.0.5 “squeeze” pre-instalado. El plug trae:

  • 2 puertos USB
  • 1 puerto eSATA
  • 1 puerto óptico S/PDIF para audio digital
  • 1 puerto mini-jack para audífonos
  • 1 puerto mini-jack para micrófono
  • 1 puerto JTAG
  • 1 puerto para memoria SD
  • 512 MB DDR2 de 800 MHz
  • 2 MB de memoria serial flash SPI para uBoot
  • 1 microSD interna
  • 1 ranura SD de expansión

El puerto JTAG sirve para tener acceso a la consola y requiere la compra del módulo opcional JTAG, cosa que recomiendo mucho si se desean hacer cosas como cambiar el sistema operativo o modificar los valores de la memoria flash.

DreamPlug con el módulo JTAG conectado. La caja de CD es para dar una idea del tamaño real del dispositivo.

DreamPlug con el módulo JTAG conectado. La caja de CD es para dar una idea del tamaño real del dispositivo.

La memoria microSD interna es utilizada para el sistema operativo y tiene 3 particiones: la primera, de tipo FAT-16, contiene el núcleo del sistema operativo en formato uImage; la segunda partición tiene el sistema de archivos raiz y la tercera tiene una copia de respaldo del núclero y del fileystem en un archivo .tgz.

El hecho de tener el filesystem en una memoria microSD es una gran ventaja respecto a los plug anteriores que utilizaban memoria flash para el SO, lo que los hacía mas difíciles de actualizar.

Para empezar a utilizarlo, sólo se conecta el plug al módulo JTAG y éste a la computadora por el puerto USB. Debemos descargar los controladores del convertidor UART a USB, después iniciamos nuestro emulador de terminal preferido (en mi caso, PuTTY) y lo configurarmos a 115200,8,1,N y listo.

Al encender el plug, la terminal mostrará lo siguiente:

U-Boot 2011.06 (Oct 15 2011 - 02:02:08)
Marvell-DreamPlug

SoC:   Kirkwood 88F6281_A0
DRAM:  512 MiB
SF: Detected MX25L1606 with page size 256, total 1 MiB
In:    serial
Out:   serial
Err:   serial
Net:   egiga0, egiga1
88E1121 Initialized on egiga0
88E1121 Initialized on egiga1
Hit any key to stop autoboot:  0
Marvell>>

Hasta aquí como intruducción al DreamPlug. En los próximos artículos hablaremos sobre cómo crear un sistema de video vigilancia con el software ZoneMinder.

Configuración de Postfix con Yahoo! Mail Plus

El escenario consiste en un servidor con Ubuntu Server 10.4 que utilizará a los servicios de Yahoo! Mail Plus como relay host.

Lo que se debe hacer es lo siguiente:

# apt-get install postfix

Crear un nuevo archivo /etc/postfix/main.cf y con lo siguiente:

biff = on
append_dot_mydomian = yes
redme_direcotry = no
myhostname = tuhostname.dominio.tld
mydomain = dominio.tld
myorigin = /etc/mailname
mydestination = hostname.dominio.tld, localhost
smtp_use_tls = yes
smtp_tls_loglevel = 0 # Aumentar para diagnostico
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl-passwords
smtp_sasl_security_options = noanonymous
smtp_sender_dependent_authentication = yes
relayhost = [plus.smtp.mail.yahoo.com]:587
inet_protocols = ipv4

Se debe crear el archivo con las contraseñas SASL /etc/postfix/sasl-passwords:

usuario1@dominio.com usuario1@dominio.com:contraseña
usuario2@dominio.com usuario2@dominio.com:contraseña
...

Compilar el archivo de contraseñas:

# postmap hash:/etc/postfix/sasl-passwords

Finalmente, reiniciar el servicio de postfix:

# service postfix restart

Probar el envío de correos:

echo -e "Subject: Prueba\nEsta es una prueba" | sendmail -f usuario@yahoo.com destinatario@domino.com

En caso de problemas, verificar el archivo /var/log/syslog.