domingo, 12 de mayo de 2013

Extraer la BIOS Rom de un VMware ESXi 4 / 5 y Editar la tabla DMI

A continuación explicare como extraer el BIOS rom de VMware y luego editar la tabla DMI a fin de cambiar los string de System Manufacture, System Product Name y System Serial Number, luego con el BIOS modificado explicare como hacer para que una Virtual Machine arranque con nuestro custom BIOS rom.

Antes de proceder con los pasos voy a explicar porque he llegado a realizar  mi custom BIOS aunque seguro ya imaginaran el porque y de su utilidad.

En mi caso he buscado modificar los strings mencionados de la BIOS ya que necesitaba realizar una maqueta con un producto de la marca Juniper y las licencias de prueba limitaban al producto para solo uno días de uso y en otros casos la licencia de prueba habilitaba solo algunos features con lo cual me limitaba para poder realizar mis labs.

Es el caso de Juniper como de otras muchas marcas la manera que tienen sus productos de validar una licencia es macheando contra el System Serial Number que suele ser el Sserial Number del Producto, así que si tienes la licencia mas el numero de serie del producto con esta molificación ya sea en la rom de una VM o la rom propia de una caja podrás tener n cantidad de productos full para jugar.

Estas modificaciones fueron probadas en los productos: STRM, IC, SA Juniper, tomando los valores de cajas físicas y pasando los mismos a la rom de una VM para los productos en formato Virtual, y he podido comprobar que los BIOS Rom de ESXi 4 son compatibles con ESXi 5 y las versiones de VMware Workstation.

Nota: Nadie pierda el tiempo en pedirme o intentar comprarme licencias y serials ya que no respondere a tal solicitud por mas gustosa que sea la oferta.


Se requiere:

Una PC con Linux.
Phoenix BIOS Editor Pro v2.2.1.3.tgz (6.5 MB) o mas reciente
Una PC o VM con Windows para instalar el BIOS Editor


Pasos:

Para revisar la tabla DMI del BIOS de nuestra PC o de cualquier otra podemos usar el comando de linux dmidecode.


# dmidecode | more
# dmidecode 2.7
SMBIOS 2.51 present.
34 structures occupying 1064 bytes.
Table at 0xE7EEA000.

Handle 0x0000, DMI type 0, 24 bytes.
BIOS Information
Vendor: Phoenix Technologies LTD
Version: 1.13
Release Date: 10/06/2008
Address: 0xE6B70
Runtime Size: 103568 bytes
ROM Size: 1024 kB
Characteristics:
ISA is supported
PCI is supported
PNP is supported
BIOS is upgradeable
BIOS shadowing is allowed
ESCD support is available
Boot from CD is supported
Selectable boot is supported
EDD is supported
3.5"/2.88 MB floppy services are supported (int 13h)
ACPI is supported
USB legacy is supported
LS-120 boot is supported
ATAPI Zip drive boot is supported
BIOS boot specification is supported

Handle 0x0001, DMI type 1, 27 bytes.
System Information
Manufacturer: Juniper Networks
Product Name: STRM 2500
Version: 1.0
Serial Number: 025006201000····
UUID: 80491C00-AD90-DF11-9F77-FD4FFE01····
Wake-up Type: Power Switch
SKU Number: Not Specified
Family: Not Specified

Handle 0x0002, DMI type 2, 8 bytes.
Base Board Information
Manufacturer: Supermicro
Product Name: PDSMP-JN1
Version: PCB Version
--More--

  1. Tomamos nota de la sección System Information:

    Manufacturer: Juniper Networks
    Product Name: STRM 2500
    Version: 1.0
    Serial Number: 025006201000····
    UUID: 80491C00-AD90-DF11-9F77-FD4FFE01····
  2. Pasos para extraer el BIOS Rom de VMware:
     
    En un ESXi 4 el archivo que debemos buscar es s.z y en ESXi 5 es s.v00
    Copiar el archivo a nuestra maquina por scp el archivo s.v00 que se encuentra en /bootbank (ESXi5):

    mkdir -p ~/tmp/BIOS

    scp root@172.16.1.10:/bootbank/s.v00 ~/tmp/BIOS

    Descomprimir el archivo s.v00

    cd ~/tmp/BIOS

    file s.v00

    tar xfv s.v00




    Para chequear si se encuentra el bios440 en versiones de ESXi 4 debemos buscar el archivo vmx y para ESXi 5 el archivo se llama vmware-vmx

    objdump --headers vmware-vmx | grep -i 440


    Extraer el bios440

    objcopy vmware-vmx --output-target=binary --only-section=bios440 --set-section-flags bios440=alloc bios440.rom.zl


    Descomprimir el .zl

    perl -e 'use Compress::Zlib; my $v; read STDIN, $v, '$(stat -c%s "./bios440.rom.zl")'; $v = uncompress($v); print $v;' < bios440.rom.zl > bios440.rom

  3. Ahora que tenemos el archivo bios440.rom vamos a editarlo con el Phoenix BIOS Editor

    Abrir el Phoenix BIOS Editor
    Abrir el bios440.rom e ir a la tabla DMI



    Modificar los strings: System Manufacture, System Product Name y System Serial Number, UUID.
    Luego de realizar los cambios hacer clic en File y Build BIOS... para guardar nuestro custom BIOS.


  4. Para indicar a la VM que arranque con el BIOS custom hay que copiar nuestro BIOS rom por scp al ESXi junto al archivo .vmx de la VM que busquemos customizar.

    Editar con el vi el .vmx de la VM elegida y agregar las siguientes lineas:

    bios440.fileName = "BIOS440_STRM_JUNIPER.ROM"
    isolation.tools.PatchSMBIOS.disable = "TRUE"
    isolation.tools.getUUId.disable = "TRUE"
  5. Para los que quieran un bios440 rom sin modificar les dejo un link:

    bios440.rom ESXi5.tgz (207 KB)
    bios440.rom ESXi4.tgz (207 KB)

    Nota: Para los que quiera hacer un backup de su BIOS pueden usar la tool flashrom
    # flashrom -r BkpBios.rom
    # flashrom -wv UpdateBios.rom
Saludos!

Hernan

miércoles, 1 de mayo de 2013

Instalar VMware Workstation 9 en Fedora 18 y Como Iniciar las VM por consola (nogui)

Como comente en otra entrada, tengo que aprovechar al máximo los recursos del sistema, así que estoy solo por consola sin el gestor gráfico para eso cambie de runlevel 5 a 3, luego procedí a instalar VMware Workstation y a buscar la forma de Iniciar mi VM desde modo texto.

Los pasos son:

Para instalar VMware Workstation 9


  1. Bajar el paquete de VMware, del siguiente link, sera necesario registrarse:
    https://my.vmware.com/group/vmware/details?productId=293&downloadGroup=WKST-902-LX
  2. Instalar los paquetes necesarios para la instalación de VMware Workstation:

    yum install -y kernel-devel kernel-headers gcc
  3. Para que no falle la instalación de VMware hay que hacer un copy del archivo version.h:

    cp /usr/src/kernels/`uname -r`/include/generated/uapi/linux/version.h /lib/modules/`uname -r`/build/include/linux/
  4. Instalar VMware Workstation:

    chmod +x VMware-Workstation-Full-9.0.2-1031769.x86_64.bundle
    ./VMware-Workstation-Full-9.0.2-1031769.x86_64.bundle --console


    Aceptar el contrato de licencia y todos los demas parametros por defecto.
  5. Agregar los módulos de VMware al Kernel:

    vmware-modconfig --console --install-all
    Aceptar todos los parámetros por defecto
  6. Con respecto a licencia gooleando un poco siempre se encuentran, en thepiratebay hay unas cuantas:

    /usr/lib/vmware/bin/vmware-vmx --new-sn TU-LICENCIA
Para Iniciar la VM en modo texto (sin interface gráfica)

  1. Para Inciar las vm, usamos el comando vmrun con la opcion start y nogui apuntando al .vmx:

    vmrun start vmware/SPE-InfranetController/SPE-InfranetController.vmx nogui
  2. Para ver las vm encendidas:

    vmrun list
  3. Para ver todas las opciones del vmrun:

    vmrun --help | more



Saludos
Hernan

PD: En otra oportunidad agregare una entrada al blog donde mostrare como extraer y editar la BIOS rom de un ESX para modificar por ejemplo el Product Name y el Serial Number del System Information de la tabla DMI.

Como tener Mouse en una Consola Linux sin las X

Resulta que estoy usando un Notebook donde le quedan justos los recursos para virtualizar un apliance con el cual tengo que hacer un lab y dar un curso, así que para ahorrar al máximo los recursos decidi cambiar de runlevel 5 a 3 y quedarme solo con la consola de Linux, con lo cual mejoro muchisimo la performance de VM y del host en general.

Luego surgió la necesidad de usar links para navegar por consola pero extrañaba mucho el mouse para moverme en las paginas, así que encontré la solución instalando GPM, General Purpose Mouse.

Básicamente lo que hay que hacer es instalar el paquete gpm y habilitar el servicio.


Pasos:


  1. Instalar gpm

    yum install -y gpm

  2. Habilitar e iniciar el servicio gpm

    En Fedora: systemctl enable gpm.service; systemctl start gpm.service
    En CentOS: chkconfig gpm on; service gpm start

  3. Para ver el estado del servicio:

    Fedora: systemctl status gpm.service
    CentOS: service gpm status

Saludos!
Hernan

Boton Print Screen no funciona en Fedroa LXDE Security Edition

Hace unos días que estoy probando la Edición Security de Fedora la cual me satisface mucho, en primer lugar porque la distro es una de los hermanitos de Red Hat (a la cual estoy acostumbrado) y trae un set de apps que uso amenudo y en segundo lugar porque el sistema es muy ligero, al traer lo justo y necesario y LXDE como Entorno de Escritorio super ligero.

El problema surgió cuando intente sacar un screenshot con el acostumbrado botón "Print Scr", para mi asombro esto no funcionaba con lo cual empecé a investigar y el sistema no trae nada asociado a dicha tecla asi que a mi juego me llamaron! 

La solución que encontré es bastante sencilla, se trata de agregar dos hotkey al interprete LXDE para la tecla "Impr pant" y Alt+"Impr pant", estos hotkey a su vez ejecutaran dos script que crearemos a continuación, uno correrá el comando "scrot" para sacar un screenshot y el otro ejecutara el comando "import" que sacara un screenshot de la ventana activa.

Pasos: 
  1. Instalar scrot e ImageMagick

    yum install -y scrot ImageMagick
  2. Crear los script dentro de /usr/local/bin

    vim /usr/local/bin/PrtScn.sh

    Copiamos y pegamos:

    #!/bin/bash
    scrot -e 'mv $f ~/Pictures/`date +%F_%H%M%S_%N`.screenshot.png'



    vim /usr/local/bin/Alt+PrtScn.sh

    Copiamos y pegamos:

    #!/bin/bash
    activeWinLine=$(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)")
    activeWinId=${activeWinLine:40}
    import -window "$activeWinId" ~/Pictures/$(date +%F_%H%M%S_%N).screenshot.png

  3. Damos permisos de ejecución a los scripts:

    chmod a+x /usr/local/bin/*PrtScn.sh
  4. Agremos los hotkey para el interprete de LXDE en el archivo lxde-rc.xml dentro de la seccion <keyboard> del xml:

    vim ~/.config/openbox/lxde-rc.xml
    <!-- Take screenshots -->
    <keybind key="A-Print">
    <action name="Execute">
    <command>Alt+PrtScn.sh</command>
    </action>
    </keybind>
    <keybind key="Print">
    <action name="Execute">
    <command>PrtScn.sh</command>
    </action>
    </keybind>
    <!-- End Take screenshots -->

    Si queremos que estos cambios se apliquen para todos los usuarios repetimos el paso 4 pero modificamos: /usr/share/lxde/openbox/rc.xml
  5. Para que los cambios tomen efecto reiniciamos la sesión o ejecutamos:

    openbox --reconfigure

Esto es todo!
Saludos Hernan