Emular la Raspberry Pi con Raspbian utilizando QEMU

Introducción

raspbianEs posible ejecutar Raspbian (ARM 1176) desde un PC (x86) mediante el uso de QEMU.

La emulación no es perfecta ya que aún no incluye todos los componentes ni es muy rápida, sin embargo será útil para efectos de experimentación.

Instalación de QEMU

$ sudo aptitude install qemu-system-arm qemu-system-common qemu-utils

Verificar que se cuenta con el soporte necesario para la CPU 1176 o la 1136-r2.

$ qemu-system-arm -cpu help | grep 1176

$ qemu-system-arm -cpu help | grep 1136

Si su distribución no cuenta con el soporte necesario, es posible compilar QEMU con soporte para ARM desde fuentes.

Si se desea utilizar Windows, es posible obtener una versión reciente de la distribución binaria de QEMU.

Obtener Raspbian

Descargar la versión mas reciente disponible en el sitio web oficial.

$ wget http://downloads.raspberrypi.org/raspbian_latest

Verificar la integridad del paquete descargado comparando su hash SHA1 con el especificado en el sitio de descargas oficial.

$ sha1sum 2014-01-07-wheezy-raspbian.zip

9d0afbf932ec22e3c29d793693f58b0406bcab86  2014-01-07-wheezy-raspbian.zip

Descomprimir el paquete descargado para obtener la imagen del sistema operativo.

$ unzip 2014-01-07-wheezy-raspbian.zip

Obtener el kernel

Para poder realizar la emulación de ARM desde x86 es necesario obtener un kernel compatible.  Al parecer el kernel mas utilizado para este tipo de emulación es el construido por xecdesign.com.

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

Primer boot

En este primer inicio del sistema operativo será necesario realizar algunos ajustes al sistema operativo.

$ 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 2014-01-07-wheezy-raspbian.img

Tenga en cuenta las siguientes recomendaciones.

  • Ajuste el nombre del archivo de la imagen del sistema operativo según la versión descargada.
  • No asigne mas de 256MB de memoria RAM a la emulación.

Comentar la siguiente línea en el archivo ld.so.preload.

$ vi /etc/ld.so.preload

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

De manera opcional, crear el archivo 90-qemu.rules con el siguiente contenido con el fin de crear enlaces a los dispositivos de los discos con nombres iguales a los utilizados por la Raspberry Pi.

$ vi /etc/udev/rules.d/90-qemu.rules

    KERNEL=="sda", SYMLINK+="mmcblk0"
    KERNEL=="sda?", SYMLINK+="mmcblk0p%n"
    KERNEL=="sda2", SYMLINK+="root"

Reiniciar la emulación.

$ shutdown -t now

 Iniciar la emulación

$ 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 2014-01-07-wheezy-raspbian.img

Recursos

Leave a Reply

Your email address will not be published. Required fields are marked *