En algunas ocasiones los monitores VGA no pueden comunicarse correctamente con la computadora para indicar sus capacidades. Esta comunicación es conocida como Display Data Channel (DDC), sin embargo en ocasiones debido a la tarjeta de video utilizada, adaptadores y otras causas, la falla de comunicación DDC provoca que el sistema operativo no reconozca las capacidades del monitor analógico VGA y entonces se inicializa en baja resolución.
En Linux se puede ajustar rápidamente este problema con el comando xrandr. Digamos que nuestro monitor tiene una resolución nativa de 1920 x 1080 pixeles, el comando sería:
xrandr --addmode ID 1920x1080
En este caso habrá que susituir ID por el identificador asociado al monitor. Este se pude obtener corriendo el comando xrandr sin parámetros.
Pero esta solución se pierde al siguiente reinicio. Para obtener una solución permanente debemos modificar la configuración Xorg agregando un archivo en /etc/X11/Xorg.conf.d con los parámetros Modeline del monitor.
Los números Modeline se pueden obtener con el comando xrandr -verbose (después de haber hecho el ajuste a la resolución deseada), buscando la sección *current:
Screen 0: minimum 320 x 200, current 3840 x 1080, maximum 16384 x 16384
DP-2 connected primary 1920x1080+0+0 (0x47) normal (normal left inverted right x axis y axis) 0mm
x 0mm
Identifier: 0x41
Timestamp: 2780250
Subpixel: unknown
Gamma: 1.0:1.0:1.0
Brightness: 1.0
[... salida eliminada ...]
1920x1080 (0x47) 148.500MHz +HSync +VSync *current +preferred
h: width 1920 start 2008 end 2052 total 2200 skew 0 clock 67.50KHz
v: height 1080 start 1084 end 1089 total 1125 clock 60.00Hz
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*
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:
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:
Romper el arreglo RAID-1 para formatear uno de los discos en NTFS y dejar ahi los discos virtuales
Transformar los VMDK a VHDX y copiarlos el NTFS
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:
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:
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.
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.
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.
6. Conectar el adaptador JTAG a un puerto USB. Aparecen los siguientes dispositivos en el Device Manager:
7. Seleccionar el primero y dar clic derecho en Update Driver Software…
8. Dar la ubicación que creamos en el paso #3
9. Aparece una advertencia. Instalar el software de todas maneras.
10. La instalación termina exitosamente.
11. Ahora el segundo dispositivo aparece así:
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:
18. Aparecerá una advertencia. Dar clic en Yes:
19. El dispositivo ahora se instala correctamente:
20. Ya tenemos nuestro convertidor puertos del JTAG configurado correctamente.
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.infDriver package provider : FTDIClass : Universal Serial Bus controllersDriver date and version : 08/26/2014 2.12.00Signer 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.
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:
Rootear la tablet
Entrar como root y respaldar partición EFS
Instalar Kernel nuevo
Instalar la ROM de CyanogenMod
Instalar las aplicaciones de Google para Android
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)
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:
Conectar Galaxy Tab a la computadora
Descomprimir el archivo DooMLoRD_v4_ROOT-zergRush-busybox-su.zip
Ejecutar el archivo runme.bat ubicado dentro de la carpeta de DooMLoRD y dar ENTER para continuar
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.
Abrir el Símbolo de Sistema (Command Prompt) y navegar a <carpeta de DoomLord>/files
Teclear adb shell [ENTER]
Aparece el símbolo $, teclear su [ENTER]
Teclear tar -cvf /sdcard/external_sd/efs.tar /efs
Esto genera un respaldo del IMEI en el SD card
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
Abrir el archivo del Kernel cm-10.1-20121226-P1N-kernel.zip y extraer el archivo boot.img
Renombrar boot.img a zImage
Desde 7-Zip seleccionar zImage con el botón derecho y seleccionar 7-zip/Add to archive…
En archive format selccionar tar y darle OK
Esto genera el archivo zimage.tar
_
Instalación del Kernel
Apagar la tablet y ponerla en modo Download (presioanr la tecla Power y VolDn simultánemente)
Ejecutar ODIN
Clic en el botón PDA y seleccionar el archivo zImage.tar creado anteriormente
Clic en el botón Start
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)
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:
Presionar Power y Volume Up hasta que encienda
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
En Windows abrir el Administrador de Dispositivos y seleccionar Galaxy Tab
Clic derecho y clic en Actualizar software del controlador
Clic en Buscar software del controlador en el equipo
Clic en Elegir en una lista de controladores de dispositivos
Doble clic en ADB Interface
Doble clic en SAMSUNG Android ADB Interface Versión 2.9.319.511
Aparece una Advertencia de actualización de controladores. Clic en Sí.
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
En la tablet, seleccionar mounts and storage
mount /sdcard
+++++Go Back+++++
En la computadora, abrir el Símbolo de Sistema (Command Prompt) y navegar a <carpeta de DoomLord>/files
Teclear adb push <ruta>/cm-10.1-20121228-HumberOS-p1.zip /sdcard para transferir la ROM
Teclear adb push <ruta>/gapps-jb-20121212-signed.zip /sdcard para transferir las aplicaciones de Google
En la tablet, seleccionar install zip from sdcard
choose zip from sdcard
cm-10.1-20121228-HumberOS-p1.zip
Yes – Install cm-10.1-20121228-HumberOS-p1.zip
Aparece:
Installing update...
(tarda unos 3 o 4 minutos)
Install from sdcard complete.
choose zip from sdcard
gapps-jb-20121212-signed.zip
Yes – Install gapps-jb-20121212-signed.zip
Aparece:
************************
Google Apps for Android 4.2.1
************************
Mounting system
Copying files
Fixing permissions...
Unmounting filesystem...
Installation complete!
+++++Go Back+++++
wipe data/factory reset
Yes — delete all user data
Desconectar la tablet de la PC
En la tablet, seleccionar reboot system now
La tablet arranca con CyanogenMod. Como es el primer arranque puede tardar hasta 5 minutos.
Los mensajes de inicio se pueden monitorear conectando la tablet a la computadora y ejecutando adb logcat.
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
Insertar la tarjeta SD
Ahora se debe volver a habilitar el USB debugging
Ir a Settings > About tablet
Tocar en Build number 7 veces.
Regresar al menu anterior
Tocar en Developer options > Android Debugging > Allow USB debuggin? OK
Root access > Apps and ADB
Abrir el Simbolo de Sistema (Command Prompt) y navegar a <carpeta de DoomLord>/files
Teclear:
adb shell
su
tar -xvf /storage/sdcard1/efs.tar
reboot
La tablet se reinicia
Ya no aparece la advertencia del IMEI y la tablet puede realizar llamadas normalmente.
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.
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:
Extraer el archivo boot.img del archivo CM9-Kernel-P1000N-20120428.tar.
tar -xvf CM9-Kernel-P1000N-20120428.tar boot.img
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
Grabar el archivo boot.img tecleando lo siguiente en la linea de comandos:
heimdall flash --no-reboot --kernel boot.img
Apagar la tablet y volverla a encender en modo recovery. (Estando apagada, presionar simultáneamente las teclas “Volume Up” y “Power” hasta que incie)
Debe aparecer la leyenda HumberOS Recovery Project.
Para navegar en la opciones, utiliza las teclas de volumen, para seleccionar utiliza la tecla de encendido
Seleccionar la opción wipe data/factory reset. Esto es muy importante porque se queremos formatear la partición /data en formato ext4.
Copiar los archivos del ambiente CyanogenMod y Google Apps a la tarjeta interna, tecleando lo siguiente desde la línea de comandos:
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):
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:
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
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.
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.