Emulation

QEMU sur Ubuntu

Installation paquets

sudo apt-get install git qemu-system-arm qemu-kvm libvirt-clients libvirt-daemon-system bridge-utils virtinst libvirt-daemon virt-manager

Vérifications

Plateformes disponibles

Lister les plateformes ARM que QEMU peut émuler :

qemu-system-arm -machine help

Pour le Raspberry PI on doit trouver la ligne :

raspi2 Raspberry Pi 2

Processeurs supportés

Lister les processeurs ARM supportés :

qemu-system-arm -machine raspi2 -cpu help

Choix du processeur

Choisir le processeur en fonction du modèle que l'on souhaite émuler

processeur	Modèle
arm1176	Raspberry PI 1, Raspberry PI Zero
cortex-a7	Raspberry PI 2
cortex-a53 (non disponible actuellement)	Raspberry PI 3, Raspberry PI Zero 2
cortex-a72 (non disponible actuellement)	Raspberry PI 4, Raspberry PI 400

Préparation Machine

Récupérer l'image à utiliser

Télécharger une archive Raspberry PI legacy qui fonctionne sur tous les raspberry PI et décompresser l'archive pour récupérer le fichier img.

unzip 2022-01-28-raspios-buster-armhf-lite.zip

Récupérer un noyau compatible

git clone https://github.com/dhruvvyas90/qemu-rpi-kernel

Dans le répertoire qemu-rpi-kernel on trouvera plusieurs noyaux compatibles ainsi que des fichier .dtb qui décrivent le matériel disponible sur le raspberry PI.

Lancement machine

Démarrer le réseau en mode NAT

sudo virsh --connect=qemu:///system net-start default

ou de façon automatique :

sudo virsh --connect=qemu://system net-autostart default

Démarrage machine

sudo virt-install --name rpios2 --arch armv6l --machine versatilepb --cpu arm1176 --vcpus 1 --memory 256 --import --disk 2022-01-28-raspios-buster-armhf-lite.img,format=raw,bus=virtio --network bridge,source=virbr0,model=virtio --video vga --graphics spice --boot 'dtb=qemu-rpi-kernel/versatile-pb-buster.dtb,kernel=qemu-rpi-kernel/kernel-qemu-4.19.50-buster,kernel_args=root=/dev/vda2 panic=1' --events on_reboot=destroy

Source

https://linuxconfig.org/how-to-run-the-raspberry-pi-os-in-a-virtual-machine-with-qemu-and-kvm

Haut de page