Virtualisation de Raspberry Pi OS avec Qemu.

Distribution de travail : Ubuntu 18.04 Architecture : x86_64

I/ Installation de Qemu.

Lien : https://www.qemu.org/

1/ Installation des paquets de développement.

util01@station66:~$ sudo apt-get install libsdl2-dev libsdl2-gfx-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-net-dev libsdl2-ttf-dev

2/ Création du répertoire de travail.

util01@station66:~$ mkdir -p VIRTRP/lib util01@station66:~$ cd VIRTRP/ util01@station66:~/VIRTRP$

3/ Téléchargement du code source.

util01@station66:~/VIRTRP$ wget https://download.qemu.org/qemu-5.2.0-rc1.tar.xz

4/ Décompression de l'archive.

util01@station66:~/VIRTRP$ tar xvJf qemu-5.2.0-rc1.tar.xz util01@station66:~/VIRTRP/$ cd qemu-5.2.0-rc1

5/ Configuration de la compilation.

util01@station66:~/VIRTRP/qemu-5.2.0-rc1$ ./configure --enable-virglrenderer --enable-opengl --enable-sdl --enable-system --enable-modules --enable-libusb --target-list=x86_64-softmmu,arm-softmmu --enable-kvm --audio-drv-list=alsa

6/ Compilation.

util01@station66:~/VIRTRP/qemu-5.2.0-rc1$ make -j 4

7/ Installation du script de copie de bibliothèque partagé et/ou statique.

Lien : https://github.com/COMBINE-lab/matryoshka/blob/master/scripts/cpld.bash util01@station66:~/VIRTRP/qemu-5.2.0-rc1$ cd ../lib util01@station66:~/VIRTRP/lib$ wget https://raw.githubusercontent.com/COMBINE-lab/matryoshka/master/scripts/cpld.bash util01@station66:~/VIRTRP/lib$ chmod +x cpld.bash

8/ Copie des bibliothèques partagéess et/ou statiques.

util01@station66:~/VIRTRP/lib$ bash ./cpld.bash ../qemu-5.2.0-rc1/build/x86_64-softmmu/qemu-system-x86_64 . util01@station66:~/VIRTRP/lib$ bash ./cpld.bash ../qemu-5.2.0-rc1/build/arm-softmmu/qemu-system-arm . util01@station66:~/VIRTRP/lib$ cd ..

II/ Préparation de l'image Raspberry Pi OS.

1/ Téléchargement de Raspberry Pi OS.

Lien : https://www.raspberrypi.org/downloads/raspberry-pi-os/ Version : Raspberry Pi OS (32-bit) with desktop Image with desktop based on Debian Buster Version: August 2020 Release date: 2020-08-20 Kernel version: 5.4 Size: 1133 MB util01@station66:~/VIRTRP$ wget https://downloads.raspberrypi.org/raspios_armhf_latest

2/ Décompression de l'archive.

util01@station66:~/VIRTRP$ mv raspios_armhf_latest raspios_armhf_latest.zip util01@station66:~/VIRTRP$ unzip raspios_armhf_latest.zip

3/ Vérification.

util01@station66:~/VIRTRP$ ls -l 2020-08-20-raspios-buster-armhf.img -rw-r--r-- 1 util01 util01 3821010944 août 20 12:54 2020-08-20-raspios-buster-armhf.img

III/ Virtualisation de Raspberry Pi OS.

Lien : http://codingadventures.org/2020/09/19/raspberry-pi-qemu-and-network-access/

1/ Téléchargement des kernels.

Lien : https://github.com/dhruvvyas90/qemu-rpi-kernel util01@station66:~/VIRTRP$ git clone https://github.com/dhruvvyas90/qemu-rpi-kernel.git

2/ Conversion de l'image 'img' en 'qcow2'.

util01@station66:~/VIRTRP$ qemu-5.2.0-rc1/build/qemu-img convert -f raw -O qcow2 2020-08-20-raspios-buster-armhf.img 2020-08-20-raspios-buster-armhf.qcow2

3/ Vérification.

util01@station66:~/VIRTRP$ ls -l *.qcow2 -rw-r--r-- 1 util01 util01 3028680704 nov. 11 22:50 2020-08-20-raspios-buster-armhf.qcow2 util01@station66:~/VIRTRP$ qemu-5.2.0-rc1/build/qemu-img info 2020-08-20-raspios-buster-armhf.qcow2 ... virtual size: 3.56 GiB (3821010944 bytes) disk size: 2.82 GiB ...

4/ Redimensionnement de l'image.

util01@station66:~/VIRTRP$ qemu-5.2.0-rc1/build/qemu-img resize 2020-08-20-raspios-buster-armhf.qcow2 +6G

5/ Vérification.

Lien : https://www.ibm.com/support/knowledgecenter/linuxonibm/com.ibm.linux.z.ldva/ldva_r_qemu-imgCommand.html util01@station66:~/VIRTRP$ qemu-5.2.0-rc1/build/qemu-img info 2020-08-20-raspios-buster-armhf.qcow2 ... virtual size: 9.56 GiB (10263461888 bytes) disk size: 2.82 GiB ...

6/ Lancement de l'image avec Qemu.

Note : 'qemu arm' est limité à 256 Mo de Ram et à 1 processeur. util01@station66:~/VIRTRP$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/home/util01/VIRTRP/lib \ qemu-5.2.0-rc1/build/qemu-system-arm \ -M versatilepb \ -cpu arm1176 \ -m 256 \ -smp 1 \ -drive "file=2020-08-20-raspios-buster-armhf.qcow2,if=none,index=0,media=disk,format=qcow2,id=disk0" \ -device "virtio-blk-pci,drive=disk0,disable-modern=on,disable-legacy=off" \ -net "user,hostfwd=tcp::5022-:22" \ -dtb qemu-rpi-kernel/versatile-pb-buster.dtb \ -kernel qemu-rpi-kernel/kernel-qemu-5.4.51-buster \ -append 'root=/dev/vda2 panic=1' \ -no-reboot

7/ Capture d'écran.

8/ Accélération de la virtualisation.

Selon la machine hôte :

  • activer l'accélération matériel de la virtualisation.
  • activer l'accélération logiciel de la virtualisation : util01@station66:~/VIRTRP$ sudo modprobe kvm-amd util01@station66:~/VIRTRP$ sudo adduser $USER kvm L'utilisateur « util01 » appartient déjà au groupe « kvm ». util01@station66:~/VIRTRP$ sudo chown root:$USER /dev/kvm