Montar imagen raw de máquina virtual virtualbox para kvm

He tenido que cacharrear estos días con una máquina virtual de VirtualBox que estaba en otra máquina y trabajar con ella en mi portatil y como VirtualBox no me va mucho y me está dando muchos problemas con losd módulo del kernel, he decidido pasar la máquina virtual a kvm.

Lo primero ha sido convertir la imagen de formato .vdi a .raw:
[shell]qemu-img convert -O raw imagen-virtual-box.vdi imagen-kvm.raw[/shell]
En principio con esto me hubiera valido… pero algún tipo de cosa ha pasado con los uuids de los discos y tampoco he tenido mucho tiempo para repararlo, así que mi plan era editar la configuración del grub a pelo. Para ello tenía que o bien usar un cd de arranque en la máquina virtual o montar el disco y tocar sin tanto rollo… así que he decidido el camino largo, el de montar el disco, pero que para mí es más cómodo.

Para montar la imagen lo vamos a hacer usando el dispositivo especial loopback

# buscamos el positivo loop libre
[shell]# losetup -f
/dev/loop0[/shell]
montamos el disco de la maquina virtual
[shell]losetup /dev/loop0 imagen-kvm.raw[/shell]
verificamos el montaje
[shell]#losetup -a
/dev/loop0: [fe01]:14778412 (/home/jorge/imagen-kvm.raw)[/shell]

Para ver las particiones que contiene usamos fdisk :
[shell]
#fdisk -l /dev/loop0

Disk /dev/loop0: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00043519

Device Boot Start End Blocks Id System
/dev/loop0p1 1 1044 8377344 82 Linux swap / Solaris
/dev/loop0p2 * 1044 5222 33564672 83 Linux
[/shell]

agregar particiones al mapper
[shell]#kpartx -a /dev/loop0[/shell]
Verificamos las particiones
[shell]#kpartx -l /dev/loop0
loop0p1 : 0 16754688 /dev/loop0 2048
loop0p2 : 0 67129344 /dev/loop0 16756736[/shell]
y montamos la particion que queremos
[shell]mount /dev/mapper/loop0p2 /mnt/vm[/shell]
verficamos que está montada
[shell]# mount
/dev/mapper/debian-root on / type ext3 (rw,errors=remount-ro,user_xattr)
tmpfs on /lib/init/rw type tmpfs (rw,nosuid,mode=0755)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
udev on /dev type tmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=620)
/dev/sda1 on /boot type ext2 (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
/dev/mapper/loop0p2 on /mnt/vm type ext4 (rw)[/shell]He tenido que cacharrear estos días con una máquina virtual de VirtualBox que estaba en otra máquina y trabajar con ella en mi portatil y como VirtualBox no me va mucho y me está dando muchos problemas con losd módulo del kernel, he decidido pasar la máquina virtual a kvm.

Lo primero ha sido convertir la imagen de formato .vdi a .raw

recuperar linksys wrt54gl de la muerteunbrick wrt54gl

unbrick wrt54gl
wrt54gl

Lo primero bajarse el firmware de la página de linksys

http://support.linksys.com/es-eu/support/routers/WRT54GL

y luego seguir estos pasos :

  1. quitar el cable de corriente del router
  2. conectarnos al router con un cable ethernet
  3. configurar nuestro pc con la ip 192.168.1.2
  4. escribir este comando en consola pero no ejecutar aun :
    [shell]tftp 192.168.1.1 <<EOF
    binary
    trace
    put FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin
    EOF[/shell]
  5. Enchufar la corriente sin soltar el botón de reset
  6. ejecutar el comando de arriba rápidamente

Debería aparecer algo como esto :
[shell]tftp 192.168.1.1 <<EOF
binary
trace
put FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin
EOF
tftp> tftp> Packet tracing on.
tftp> sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>

sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>
sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>
sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>
sent WRQ <file=FW_WRT54GL_4.30.16.002_ETSI_20121205_code.bin, mode=octet>
received ACK <block=0>
sent DATA <block=1, 512 bytes>
received ACK <block=1>
sent DATA <block=2, 512 bytes>
received ACK <block=2>
sent DATA <block=3, 512 bytes>
received ACK <block=3>
….
[/shell]

Cuando termine le dejamos un ping continuo a 192.168.1.1 y cuando responda es que el router ya ha cargado el nuevo firmware !

Activar 04f2:b1aa Chicony Webcam-101 en linux 3.6

Hoy he tenido que hacer una video conferencia y hacía mucho que no activaba la webcam, así que hasta ahora no me había dado cuenta que con el kernel actual no funcionaba…

Mi cámara es la que viene con mi portatil del curro ( HP G62 ):

Bus 001 Device 003: ID 04f2:b1aa Chicony Electronics Co., Ltd Webcam-101

Estuve recompilando el kernel para usar una version 3.6.8 y no activé el soporte de video , así que hay que activarlo siguiendo estas opciones :

video-device-support-webcam
[shell][*] Device drivers,
-> <m> Multimedia support
–> [*] Cameras/video grabbers support,
–> [*] Video Capture Adapters.
–> [*] V4L USB devices
—-> [m] USB Video Class (UVC)[/shell]

Zaapa 2832U fc2850

Hace unos meses me compré en Mediamarkt un ‘DVB USB DONGLE’, lo que se viene llamando ‘un pincho pa ver la tele en el ordena’ de la marca Zaapa ( ZTDVBTUSB ). El caso es que el modulo del kernel para linux rula solo con la version 2.6.3x y no estaba funcionando para la version 3.x. Quería asegurarme que funcionara al menos en
Windows y le pedía gente que usa windows que lo probara, por el tema de la garantía más que nada 😀

Pues resultó que con el cd que venía el pincho, no rulaba con ninguna versión de windows ni bajando de la web oficial el driver, así que estaba un poco mosqueao ya. Hoy he hecho una última intentona identificando directamente el hardware que lleva :
[shell]
FCI 2580 9CBM
RTL 2832 U 9CE76S1 GA04D
[/shell]

y buscando en linuxtv.org ,y concretamente en este enlace : http://linuxtv.org/wiki/index.php/DVB-T_USB_Devices veo lo siguiente :

[shell]
MSI DIGIVOX mini II V3.0 (RTL2832 version) also. DigiVox mini deluxe
Realtek RTL2832U, FCI FC2580
[/shell]

Uuuuuuuuuuu esto tiene una pinta muy rica…. así que decidí buscar los drivers en la web de MSI… es triste y común encontrarse con que grandes compañías pasan de los usuarios y como es el caso no existe ni la ficha de producto ni driver para descargar ni nada de nada. Despuésssss de mucho tiempo buscando y buscando encontré esto :

La url del producto en msi pero en Alemania
[shell]
<a href=»http://www.msi-computer.de/product/mm/DigiVox-mini-Deluxe.html» target=»_blank»>http://www.msi-computer.de/product/mm/DigiVox-mini-Deluxe.html</a>
<a href=»http://www.msi-computer.de/service/download/driver-1000067.html» target=»_blank»>http://www.msi-computer.de/service/download/driver-1000067.html</a>
DigiVox_Mini_Deluxe_64.1.1028.2009.zip
[/shell]

Este driver funciona para Zaapa, al menos lo detecta en Windows y escanea canales, lo demás se está probando en este momento ….

ASIX AX88772A USB 2.0 Ethernet

La tarjeta Asix, es una tarjeta usb ethernet. No está soportada correctamente en todos los kernels, al menos en la rama 2.6.26-2-686, pero se puede hacer funcionar facilmente.

Al pincharla, el fichero /var/log/syslog solo muestra esta información:

[shell]
servidor kernel: [22913341.057945] usb 1-4: new high speed USB device using ehci_hcd and address 8
servidor kernel: [22913341.203827] usb 1-4: configuration #1 chosen from 1 choice
servidor kernel: [22913341.204143] usb 1-4: New USB device found, idVendor=0b95, idProduct=772a
servidor kernel: [22913341.204153] usb 1-4: New USB device strings: Mfr=1, Product=2, SerialNumber=3
servidor kernel: [22913341.204161] usb 1-4: Product: AX88x72A
servidor kernel: [22913341.204167] usb 1-4: Manufacturer: ASIX Elec. Corp.
servidor kernel: [22913341.204173] usb 1-4: SerialNumber: 000002
[/shell]

vemos que el kernel la identifica con lsusb
[shell]
#lsusb

Bus 001 Device 008: ID 0b95:772a ASIX Electronics Corp.
..
[/shell]

Pero no está siendo detectada como interface de red. Para ello nos bajamos el código fuente del módulo de la página del fabricante. Aquí hay un copy paste para bajarlo, compilarlo y copiarlo al directorio de los módulos del kernel correspondiente:

[shell]
mkdir /usr/src/asix
cd /usr/src/asix
wget http://www.asix.com.tw/FrootAttach/driver/AX88772B_772A_760_772_178_LINUX2.6.35_Driver_v3.5.0_Source.tar.bz2
tar jxvf AX88772B_772A_760_772_178_LINUX2.6.35_Driver_v3.5.0_Source.tar.bz2
make
cp asix.ko /lib/modules/2.6.26-2-686/kernel/drivers/net/usb/
modprobe asix
[/shell]

Para el paso previo es necesario tener las herramientas de compilacion: gcc, kernel-headers, etc…

En este momento y sin reiniciar la máquina, ya tenemos el interface activado según el /var/log/syslog :

[shell]
servidor kernel: [23062348.758014] http://www.asix.com.tw<6>eth1: register ‘asix’ at usb-0000:00:04.1-4, ASIX AX88772A USB 2.0 Ethernet, 00:80:8e:8a:01:35
[/shell]

y aparece al usar el comando ifconfig -a

Comtrend ct-536+ dead

Acabo de recuperar del mundo de los muertos un viejo router Comtrend ct-536+. Lo guardé en la caja por que actualicé mal el firm y no tuve tiempo para recuperarlo.

Para traer el router al mundo de los vivos he decidido meterle un OpenWRT concretamente este http://downloads.openwrt.org/backfire/10.03/brcm63xx/openwrt-96348GW-11-squashfs-bc300-cfe.bin. Los pasos a seguir son sencillos:

  1. Conecta el pc vía cable ethernet a uno de los puertos del router
  2. Apaga el router
  3. Presiona y mantén presionado el botón de reset
  4. Enciende el router
  5. Espera a que apague el luz de power y soltar el reset
  6. Ahora tenemos el router accesible en la 192.168.1.1 y podemos subir el firm usando el navegador.
  7. Esperamos unos minutos a que escribra el firm y listo, otra vez vivo

UPDATE:

Si hay dudas de si se está haciendo bien, lo mejor es antes de nada, abrir el wireshark y poner a capturar paquetes en el eth0 ( si es que es nuestra tarjeta con la que vamos a conectarnos al router ) y hacer los pasos de arriba. En cuanto soltemos el botón de reset, si todo ha ido bien , aparecerá un paquete ARP con 192.168.1.1. Ese es nuestro router diciendo que está vivo y que podemos cargar el firmware.

UPDATE 2:

Estaba mi router medio muerto, se colgaba al acceder vía web y he borrado ejecutado este comando para borrar ficheros de configuraciones del router :
[shell]mtd -r erase rootfs_data

y ahora funciona bien ![/shell]Acabo de recuperar del mundo de los muertos un viejo router Comtrend ct-536+. Lo guardé en la caja por que actualicé mal el firm y no tuve tiempo para recuperarlo.

Para traer el router al mundo de los vivos he decidido meterle un OpenWRT concretamente este http://downloads.openwrt.org/backfire/10.03/brcm63xx/openwrt-96348GW-11-squashfs-bc300-cfe.bin. Los pasos a seguir son sencillos:

  1. Conecta el pc vía cable ethernet a uno de los puertos del router
  2. Apaga el router
  3. Presiona y mantén presionado el botón de reset
  4. Enciende el router
  5. Espera a que encienda el luz de power y soltar el reset
  6. Ahora tenemos el router accesible en la 192.168.1.1 y podemos subir el firm usando el navegador.
  7. Esperamos unos minutos a que escribra el firm y listo, otra vez vivo

Notas sobre ALSA

# cat /proc/asound/cards
0 [CX8811         ]: CX88x – Conexant CX8811
Conexant CX8811 at 0xeb000000
1 [ICH5           ]: ICH4 – Intel ICH5
Intel ICH5 with ALC850 at irq 21

pcm.!default {
type hw
card ICH5
}
ctl.!default {
type hw
card ICH5
}

ZyDAS WLA-54L WiFi ( zd1211 )

Si consigues tener una antena wifi-usb ZyDas zd1211 recuerda instalar el paquete que tiene el firmware para que funcione !!!

[shell]
apt-get install zd1211-firmware
[/shell]

o en tu /var/log/syslog tendrás algo como esto:

[shell]
[ 202.306069] usb 1-3: new high speed USB device using ehci_hcd and address 5
[ 202.438366] usb 1-3: configuration #1 chosen from 1 choice
[ 202.439081] usb 1-3: New USB device found, idVendor=0ace, idProduct=1215
[ 202.439096] usb 1-3: New USB device strings: Mfr=16, Product=32, SerialNumber=0
[ 202.439103] usb 1-3: Product: USB2.0 WLAN
[ 202.439108] usb 1-3: Manufacturer: ZyDAS
[ 202.628837] usb 1-3: reset high speed USB device using ehci_hcd and address 5
[ 202.760887] phy1: Selected rate control algorithm ‘pid’
[ 202.761853] zd1211rw 1-3:1.0: phy1
[ 202.761906] usbcore: registered new interface driver zd1211rw
[ 206.682645] firmware: requesting zd1211/zd1211b_ub
[ 206.792675] usb 1-3: Could not load firmware file zd1211/zd1211b_ub. Error number -2
[ 206.792675] zd1211rw 1-3:1.0: couldn’t load firmware. Error number -2
[/shell]

Ejemplo de configuracion de ipmi

Algunos servidores ofrecen la posibilidad de usar IPMI 1.0 o 2.0 para manejar algunas características o información del hardware.

Aquí dejo una chuleta corta para ver la información de los interfaces y configurar uno de ellos copiando y pegando.

Inforamcion del channel 1 ( interface )

ipmitool> channel info 1
Channel 0x1 info:
  Channel Medium Type   : 802.3 LAN
  Channel Protocol Type : IPMB-1.0
  Session Support       : multi-session
  Active Session Count  : 0
  Protocol Vendor ID    : 7154
  Volatile(active) Settings
    Alerting            : enabled
    Per-message Auth    : enabled
    User Level Auth     : enabled
    Access Mode         : disabled
  Non-Volatile Settings
    Alerting            : enabled
    Per-message Auth    : enabled
    User Level Auth     : enabled
    Access Mode         : disabled

Configuración del interface

 sudo ipmitool shell 
lan set 1 access on
lan set 1 ipsrc static
lan set 1 ipaddr 10.10.10.1
lan set 1 netmask 255.0.0.0.0
lan set 1 defgw ipaddr 10.10.10.0

lan set 1 arp respond on
lan set 1 arp generate on
lan set 1 arp interval 5

Solo falta crear un usuario

set user pepe plain-text password

sencillo y rápido.

Muy recomendable también las herramientas freeipmi

reset drac dell server / cuando el control remoto se queda colgado

Lo mejor que uno puede hacer al adquirir un servidor dedicado es añadirle un control remoto ( KVM, Drac, BMC, IPMI, Megarac … ) Con este hardware tenemos la tranquilidad de que sea la hora que sea y sin tener que esperar al servicio técnico, podemos reinstalar la máquina, reiniciarla, chequearla, actualizar firmware… como si la máquina la tuvieramos delante de nosotros.

De todos los controles remotos que he podido probar, me quedo con el DRAC4 de Dell, practicamente no da problemas y corre bajo java. Drac5 sí da problemas y ademas requiere instalar un OCX.

El caso crítico en que tu servidor se cuelge y el DRAC esté completamente costado y no se pueda visualizar el arranque, desespera y mucho. El problema de DRAC5 si no recuerdo mal viene dado de un bug que no ha sido corredigo con el que se pueden tostar los DRAC5 de Dell. No es demasiado problema si accedemos a nuestro hardware de control remoto via ssh y lanzamos el comando racadm racreset. Podeis consultar este enlace http://hostingaldescubierto.com/wordpress/2008/04/11/error-unable-to-connect-to-vkvm-press-ok-to-exit/

En unos segundos el drac habrá reiniciado y será totalmente operativo de nuevo.

En cuanto a los servicios de control remoto de otras marcas como Fujitsu, no están mal, pero son bastante más lentos y dan algún que otro problema con el video. Creo que alguna acutalización reciente en el firm ha subsanado estos problemas.


Aparte está Supermicro que usa un kvm exactamente identico al que usan en lantronix ( spider ). En el caso de lantronix es externo y el de supermicro interno con un hardware adicional sus servidores y muy importante, funcionan bajo java.

Para los más valientes, con impi quizás os sirva, tan solo servirá para hacer ping y reiniciar el servidor, más alguna funcionalidad como temperaturas, etc…

Lo que si hay que tener en cuenta es que casi todos dan problemas con el teclado a la hora de marcar algunos caracteres.