IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Experimentations linux

[Kde Neon] Compiler Qemu avec Virgil 3D

Noter ce billet
par , 26/06/2023 à 17h58 (184 Affichages)


note : ce tuto etait installe dans un forum. un blog est plus adapte. il a ete transfere ici tel quel. il faut lire ce post du debut a la fin pour une meilleure comprehension. ce tuto aborde la compilation de Qemu a partir de la version 4 avec les mises a jours pour les versions ulterieures. au fil du temps, certaines informations peuvent ne plus etre valides et necessiter une readaptation...

La version officielle de qemu (2.11.1) est depourvue de l'acceleration 3D ainsi que des nombreuses evolution du logiciel. j'ai decide de compiler la derniere version avec Virgil 3D et eventuellement quelques options. ces instructions sont uniquement adapte a la distribution linux Kde Neon. ca pourrait peut etre marcher pour les distribs basees sur ubuntu. il faudra surement lire la section dediee a LXD. pour ceux qui voudraient faire pareil, voici les etapes :

- la compilation se fera dans LXD pour eviter de polluer le systeme principal, j'ai clone le container de firefox (voir le post [Kde Neon] Installer LXD) que j'ai copie et renomme en dev.

- active le container : lxc start dev

- y entrer : lxc exec dev -- sudo --login --user ubuntu DISPLAY=:0

- creation repertoire qemu et y entrer : mkdir qemu ensuite cd qemu

- avec wget, telecharge la derniere version de qemu : wget https://download.qemu.org/qemu-4.0.0.tar.xz
'ne croyez personne sur parole, allez verifier par vous meme l'adresse de telechargement'

- extraire l'archive avec : tar xf qemu-4.0.0.tar.xz

- installation des dependances de qemu : sudo apt-get build-dep qemu

- autres dependances necessaires :

sudo apt install libgtk-3-dev libvte-2.91-dev libsdl2-dev libgbm-dev libvirglrenderer-dev libnfs-dev liblzo2-dev libbz2-dev libjemalloc-dev

note : qemu est un gros morceau, il faut beaucoup de patience, la premiere tentative s'est solde par un plantage parce que j'ai suivi une recommandation naze sur internet et active la compilation sur trop de coeurs cpu, ce qui a provoque l'utilisation de pratiquement toute la ram (malgre 32 go) avec blocage...

voila ce qui fonctionne. le parametre --prefix=/opt/qemu4 specifie le repertoire d'installation de qemu 4.0 pour pouvoir l'utiliser avec l'ancienne version sans conflit. nice -n 19 permet de reduire l'occupation cpu lors de la compilation pour pouvoir continuer a utiliser le systeme...

./configure --prefix=/opt/qemu4/ --enable-sdl --enable-opengl --enable-virglrenderer --enable-system --enable-modules --audio-drv-list=pa --enable-kvm --enable-gtk --enable-vte --enable-spice --enable-libiscsi --enable-libnfs --enable-curl --enable-jemalloc

nice -n 19 make -j3
a noter que le parametre nice -n 19 ralenti le traitement (environ 20 minutes) prix a payer pour preserver les ressources du systeme, l'option de compilation -j3 (utilisation de trois cpus, a modifier si votre processeur n'est pas adapte) ameliore la vitesse...

- installer checkinstall : sudo apt install checkinstall

- creer un package deb : sudo checkinstall --install=no --nodoc

tres important, modifier qemu en qemu4 pour que la nouvelle version n'entre pas en conflit avec l'ancienne.

- un package devrait avoir ete cree : qemu4_4.0.0-1_amd64.deb

- sortir du container : exit

- copier le package vers home (exemple) :

lxc file pull dev/home/ubuntu/qemu/qemu-4.0.0/qemu4_4.0.0-1_amd64.deb /home/nom_utilisateur/

- l'installer :

sudo dpkg -i qemu_4.0.0-1_amd64.deb

sudo apt install -f

sudo apt install libgtk-3-dev libvte-2.91-dev libsdl2-dev libgbm-dev libvirglrenderer-dev libnfs-dev liblzo2-dev libbz2-dev

- verifier : /opt/qemu4/bin/qemu-system-x86_64 --version

- verifier ancienne version : qemu-system-x86_64 --version

pour utiliser qemu 4, il faut specifier le chemin d'acces aux binaires. toutes les architectures cpus (arm, i386, x86_64, sparc64, riscv64...) se trouvent dans /opt/qemu4/bin et ont etees generees avec virgil 3d... pour les developpeurs multiplateformes, il sera possible de travailler sur toutes ces architectures sans devoir posseder le hardware (l'architecture risc-v est particulierement tres interessante parce qu'open source)...

ls /opt/qemu4/bin

note : il est possible de remplacer l'ancienne version en l'ecrasant (deconseille). il vaut mieux attendre un package officiel parce que qemu est etroitement lie au gestionnaire de machine virtuels et a de nombreuses librairies. si vous voulez le faire, il faut enlever le parametre --prefix=/opt/qemu4 dans ./configure. le package deb sera cree avec le repertoire d'installation par defaut. lors de l'utilisation de checkinstall ne pas changer le nom...

resultas : j'ai teste qemu 4 intensivement et constate une tres bonne stabilite...

pour compiler la version 3, meme topo sauf qu'il faut :

- remplacer qemu4 par qemu3
- utilise le meme ./configure avec --prefix=/opt/qemu3/
- installer le package qemu3_3.0.1-1_amd64.deb
- chemins d'acces des binaires dans /opt/qemu3/bin

j'ai garde la version 4 pour d'autres tests mais je vais plutot utiliser la version 3...

note : avec cette methode, il est possible d'utiliser plusieurs versions de qemu sans conflit. la prochaine etape sera de compiler la version 2.x pour comparer les performances..

exemple de ligne de commande :

/opt/qemu3/bin/qemu-system-x86_64 -enable-kvm -cpu host -m 2048 -device virtio-vga,virgl=on -display sdl,gl=on -netdev user,id=ethernet.0 -device rtl8139,netdev=ethernet.0 -soundhw ac97 ~/nom.qcow2 -boot c

j'avais oublie un detail important, pour desinstaller proprement par exemple la version 4 :

sudo dpkg -r qemu4

ou la version 3

sudo dpkg -r qemu3

avant d'utiliser /opt comme destination, le repertoire etait vide dans kde neon. s'il y'a un seul package, la desinstallation de ce dernier provoque bizarrement son effacement total. il faut donc le regenerer avec la commande sudo mkdir /opt parce qu'il pourrait etre utilise par le systeme ulterieurement...

Mise a jour : Compilation de Qemu (4.1.0)

J'ai recompile la nouvelle version de qemu (4.1.0). voici les instructions :

Revoir eventuellement les instructions en debut de post, elles sont toujours valables, il est donc inutile de les repeter ici.

checkinstall qui permet de generer un package deb ne fonctionne pas dans cette version, il va falloir proceder manuellement :

apres lancement de :

./configure --prefix=/opt/qemu4/ --enable-sdl --enable-opengl --enable-virglrenderer --enable-system --enable-modules --audio-drv-list=pa --enable-kvm --enable-gtk --enable-vte --enable-spice --enable-libiscsi --enable-libnfs --enable-curl --enable-jemalloc

nice -n 19 make -j3

si la compilation a reussi, taper :

sudo make install

- qemu sera installe dans le repertoire /opt/qemu4

- compresser ce repertoire au format tar par exemple sous le nom de qemu.4.1.0.tar et deplacer le dans /home/ubuntu.

- apres etre sorti du container lxd, copier le fichier dans home (exemple) :

lxc file pull dev/home/ubuntu/qemu.4.1.0.tar /home/nom_utilisateur/

ensuite se placer dans le repertoire /opt et decompresser en mode sudo le fichier qemu.4.1.0.tar

verifier : /opt/qemu4/bin/qemu-system-x86_64 --version

pour desinstaller, effacer le repertoire /opt/qemu4.

Conclusion : J'ai teste cette nouvelle version en virtualisant Windows 7. ca marche tres bien. c'est plus reactif. c'est peut etre une impression mais ca a l'air plus stable. j'ai utilise la vm pendant quelque heures. je n'ai releve aucun probleme. Qemu est vraiment etonnant... dans la documentation, cette nouvelle version permet apparement d'activer la 3D en gerant directement la carte graphique materiellement (il faut en avoir deux), ce qui devrait donner de tres bonnes performances. je n'ai pas vraiment besoin de cette fonctionnalitee pour l'instant mais qui sait...

Mise a jour : Compilation de Qemu (5.0.0)

J'ai recompile la nouvelle version de qemu (5.0.0). voici les instructions :

Revoir eventuellement les instructions en debut de post, elles sont toujours valables, il est donc inutile de les repeter ici.

apres lancement de :

./configure --prefix=/opt/qemu5/ --enable-sdl --enable-opengl --enable-virglrenderer --enable-system --enable-modules --audio-drv-list=pa --enable-kvm --enable-gtk --enable-vte --enable-spice --enable-libiscsi --enable-libnfs --enable-curl --enable-jemalloc

au cas ou il manque des librairies, utiliser la commande apt search nom_librairie pour les trouver et les installer.

compiler :

nice -n 19 make -j3

si la compilation a reussi, taper :

sudo make install

- qemu sera installe dans le repertoire /opt/qemu5

- compresser ce repertoire au format tar par exemple sous le nom de qemu.5.0.0.tar et deplacer le dans /home/ubuntu.

- apres etre sorti du container lxd, copier le fichier dans home (exemple) :

lxc file pull dev/home/ubuntu/qemu.5.0.0.tar /home/nom_utilisateur/

cela suppose que le nom du container est dev...

ensuite se placer dans le repertoire /opt et decompresser en mode sudo le fichier qemu.5.0.0.tar

verifier : /opt/qemu5/bin/qemu-system-x86_64 --version

pour desinstaller, effacer le repertoire /opt/qemu5.

conclusion : cette version est plus reactive et comporte de nombreuses fonctions suplementaires (voir le changelog). par defaut ubuntu 18.04 utilise gcc version 7.5, j'ai installe la derniere version 9.2.1 dans le container lxd et je l'ai utilise pour compiler qemu. le resultas est sans appel. qemu est clairement plus rapide.

Mise a jour : Compilation de Qemu (5.2.0)

Faire un sudo apt update et eventuellement sudo apt upgrade pour mettre a jour le container...

Les instructions pour la compilation de la version 5.0.0 restent valables a part qu'il faut installer egallement ce package :

sudo apt install ninja-build

conclusion : cette version est de mieux en mieux. comporte de nombreuses fonctions suplementaires (voir le changelog). teste avec des vms linux et windows (archlinux, manjaro, centos, deepin, debian, win7, winxp...). ca fonctionne tres bien. gcc version 9.3.0 a ete utilise pour la compilation...

Mise a jour (23-12-2021) : Compilation de Qemu (6.2.0)

Faire un sudo apt update et eventuellement sudo apt upgrade pour mettre a jour le container...

Les instructions pour la compilation de la version 6.2.0 sont les memes que pour la 5.0.0

A noter que pour lancer Qemu avec Virgil 3D, il faut specifier le parametre -device virtio-vga-gl -display sdl,gl=on, l'ancien -device virtio-vga,virgl=on ne fonctionne plus...

Cette version de Qemu avec Virgil 3D est plus rapide, Batocera par exemple est beaucoup plus fluide...

Mise a jour (25-06-2023) : Compilation de Qemu (8.0.2)

Pour plus d'explications, se referer aux instructions precedentes...

Les instructions pour la compilation sont les meme pour cette version a part qu'il faut :

desactive le parametre --enable-jemalloc dans ./configure ...

installe :

sudo apt install flex
sudo apt install bison
sudo apt install libslirp-dev


et ajoutez le parametre --enable-slirp a ./configure ...

Exemple :

./configure --prefix=/opt/qemu8/ --enable-sdl --enable-opengl --enable-virglrenderer --enable-system --enable-modules --audio-drv-list=pa --enable-kvm --enable-gtk --enable-vte --enable-spice --enable-libiscsi --enable-libnfs --enable-curl --enable-libusb --enable-strip --enable-slirp

Optimise la compilation avec le parametre -O3

./configure --prefix=/opt/qemu8/ --extra-cflags=-O3 --extra-cxxflags=-O3 --enable-sdl --enable-opengl --enable-virglrenderer --enable-system --enable-modules --audio-drv-list=pa --enable-kvm --enable-gtk --enable-vte --enable-spice --enable-libiscsi --enable-libnfs --enable-curl --enable-libusb --enable-strip --enable-slirp

compiler (j3=utilisation de trois processeurs) :

make -j3

note : j'entend ici et la que les options d'optimisations de gcc peuvent generer des instabilitees et que le gain est minime. ce n'est pas ce que j'ai constate lors de mes tests avec qemu et d'autres programmes. le gain de vitesse est clairement visible et la stabilitee est satisfaisante.

par exemple Batocera qui est installe dans une vm est visiblement beaucoup plus rapide.

cela dit il est possible d'utiliser le parametre -O2 au lieu de -O3 si la securite est recherche a tout prix, par exemple je compile QB64 avec le parametre -O2 ou -Os (parce que les fichiers executables generes sont plus legers). en -O3 cet outil de developpement generent certe des executables plus rapides mais au prix d'un temps de compilation beaucoup plus important...

Envoyer le billet « [Kde Neon] Compiler Qemu avec Virgil 3D » dans le blog Viadeo Envoyer le billet « [Kde Neon] Compiler Qemu avec Virgil 3D » dans le blog Twitter Envoyer le billet « [Kde Neon] Compiler Qemu avec Virgil 3D » dans le blog Google Envoyer le billet « [Kde Neon] Compiler Qemu avec Virgil 3D » dans le blog Facebook Envoyer le billet « [Kde Neon] Compiler Qemu avec Virgil 3D » dans le blog Digg Envoyer le billet « [Kde Neon] Compiler Qemu avec Virgil 3D » dans le blog Delicious Envoyer le billet « [Kde Neon] Compiler Qemu avec Virgil 3D » dans le blog MySpace Envoyer le billet « [Kde Neon] Compiler Qemu avec Virgil 3D » dans le blog Yahoo

Catégories
Sans catégorie