¿Cómo emular Raspberry Pi Raspbian con QEMU?

Estoy tratando de emular una Raspberry Pi con el sistema operativo Raspian usando QEMU. He intentado varios enfoques descritos en Internet pero sin ningún éxito.

Descubrí que necesito parchear un kernel de Linux que se ajuste al sistema operativo deseado. En mi caso elegí Rasbian Lite con Kernel 4.4:

wget https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2016-05-31/2016-05-27-raspbian-jessie-lite.zip
unzip 2016-05-27-raspbian-jessie-lite.zip
rm 2016-05-27-raspbian-jessie-lite.zip

A continuación, cargo un kernel dehttps://www.kernel.org/:

wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.16.tar.gz
tar -xzf linux-4.4.16.tar.gz
rm linux-4.4.16.tar.gz

Ahora compilando de manera cruzada el Kernel:

export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
cd linux-4.4.16
make vexpress_defconfig
make all
cd ..

Ahora puedo copiar la imagen de arranque, que es una imagen de núcleo comprimida que se extrae automáticamente en la RAM, a mi espacio de trabajo:

cp linux-4.4.16/arch/arm/boot/zImage zImage

y ejecuta QEMU

qemu-system-arm -kernel zImage -M vexpress-a9 -m 1024 -cpu cortex-a9 -no-reboot -serial stdio -hda 016-05-27-raspbian-jessie-lite.img -append "root=/dev/sda2 rootfstype=ext4"

Pero todo lo que veo es una ventana QEMU llena de negro. :(

Creo que el problema es obtener el Kernel correcto. Copiar algunos de los Kernels de Internet nunca tuvo éxito porque no son aptos para el sistema operativo.

¿Cómo puedo construir / parchar un Kernel que se ajuste al SO (sin descargar uno existente) y cómo ejecutar QEMU correctamente?

Gracias por adelantado
Alex

Segundo enfoque

Yo cargo unkernel-qemu de aquíhttps://www.dropbox.com/s/g8u93xblz1v1ly0/kernel-qemu?dl=0 y correrQEMU con eso:

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2" -hda 2016-05-27-raspbian-jessie-lite.img

Esto me trae el siguiente resultado:Y tiene sentido para mí porque el Kernel es 3.10.25 y mayor que Raspbian Jessie con Kernel 4.4.16.

Con el qemu-kernel dehttps://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.4.12-jessie

qemu-system-arm -kernel kernel-qemu-4.4.12-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda 2016-05-27-raspbian-jessie-lite.img

Obtuve este resultado similar:

Un nuevo intento con un nuevo kernel-qemu 4.4.16:

Copiar build-kernel-qemu dehttps://github.com/dhruvvyas90/qemu-rpi-kernel/tree/master/tools y agregue la siguiente línea para verificar la versión de Kernel 4.4.16:

git checkout b05965f284db3e086022f4e318e46cb5bffb1376

correrbuild-kernel-qemu para construir el núcleo

sh build-kernel-qemu

correrQEMU

qemu-system-arm -kernel kernel-qemu -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda 2016-05-27-raspbian-jessie-lite.img

El resultado:

Respuestas a la pregunta(4)

Su respuesta a la pregunta