Teléfono y Whatsapp: 675 18 68 80

Cómo emular arquitecturas ARM (Raspberry Pi) en GNU/Linux con Qemu

Linux y los programas que albergan sus repositorios son una maravilla, no me canso de decirlo. En increíble lo que se puede hacer con todos ellos.

Esta semana me ha tocado trabajar con una imagen de sistema operativo GNU/Linux Raspbian que trabaja sobre arquitectura armv6 mientras que mi PC es x64, por lo tanto no podía virtualizar la imagen con máquinas como Virtualbox o VMWare. La solución ha sido usar Qemu, un virtualizador de código abierto que si soporta arquitecturas ARM además de MIPS… etc.

Instalar Quemu

sudo apt-get install qemu

Crear la carpeta de trabajo

Creamos una carpeta virtualización donde vamos a tener todos los archivos que vamos a necesitar y después nos situamos en ella.

mkdir ~/virtualizacion
cd ~/virtualizacion

Obtener el Kernel

Descargamos el kernel Linux:

wget http://xecdesign.com/downloads/linux-qemu/kernel-qemu

Obtener Raspbian

wget http://downloads.raspberrypi.org/raspbian_latest
unzip wheezy-raspbian.zip

Comprobamos que soporte Arm

Ejecutamos el siguiente comando:

qemu-system-arm -cpu

y si nos devuelve arm1176 significa que soporta Arm y en concreto la arquitectura que usa la Raspberry Pi. Entonces continuamos. SI no fuese así, debemos de tener una versión más actualizada de Qemu.

Primer arranque

Ejecutamos el siguiente comando, teniendo en cuenta que el nombre de la imagen puede variar, en mi caso es wheezy-raspbian.img:

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw init=/bin/bash" -hda wheezy-raspbian.img

Nada más que arranque, editaremos el fichero ld.so.preload:

nano /etc/ld.so.preload

y añadimos una almohadilla en la línea:

#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so

guardamos, salimos y apagamos el sistema:

halt

todo este proceso sólo hay que hacerlo una vez.

Siguientes arranques

Ejecutamos el mismo comando anterior pero sin init=/bin/bash:

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw" -hda 2013-09-25-wheezy-raspbian.img

y.. ¡Voila! Ya tendremos nuestra imagen de Raspberry pi bajo plataforma ARM ejecuandose en un sistema anfitrión x86 o x64.

qemu-raspberry-pi

Fuente

  • pillabichos

    Yo he conseguido virtualizar pero tengo un 88% ocupado en la memoria SD virtual y no puedo instalar casi nada, ¿cómo la puedo hacer más grande?

    Otro problema es que cuando arranca sale un error porque no encuentra el archivo /lib/modules/3.10.26+ y tengo que teclear exit para continuar el arranque.

    Uso Ubuntu 14.04 de 64 bits.

    He probado aumentar la partición dentro del disco duro una vez aumentado con estos comandos:
    sudo losetup -f –show 8graspi.img
    sudo gparted /dev/loop0

    pero me sale el siguiente error:

    • walo

      sudo raspi-config y ahí hay un apartado para redimensionar la partición para que ocupe el 100% del disco.

  • testifyliveintokyo1985

    ¿solo funciona con raspbian? ¿no se puede probar pidora, lakka, retropie etc? :C