.. meta:: :description: compile QEMU :keywords: Linux, QEMU, KVM, virtualisation, Libvirt, virsh Compilation et installation de QEMU *********************************** .. admonition:: Résumé Installation de QEMU et compilation à partir des sources pour un système Debian ou Debian like comme Ubuntu. Compiler QEMU ------------- * Installation des packages nécessaires. .. code-block:: $ sudo apt-get install pip $ pip install tomli $ wget https://github.com/ninja-build/ninja/releases/download/v1.11.1/ninja-linux.zip $ unzip ninja-linux.zip $ sudo apt install unzip $ unzip ninja-linux.zip $ sudo mv ninja /usr/local/bin/ $ mv ninja-linux.zip ~/Downloads/ $ sudo apt install meson $ sudo apt install libglib2.0-dev * Clonage des sources Cloner et choisir le tag de la dernière version stable. Vous ne voulez pas travailler sur le master... .. code-block:: $ git clone https://github.com/qemu/qemu.git $ git tag ... v9.2.1 v9.2.2 v9.2.3 v9.2.4 $ git checkout v9.2.4 $ git switch -c v9.2.4-local Switched to a new branch 'v9.2.4-local' * Construire QEMU .. code-block:: $ cd qemu $ mkdir build $ cd build/ $ ../configure --target-list=aarch64-softmmu,arm-softmmu $ make -j 8 $ sudo make install * Démarrer avec u-boot sur une carte virtuelle .. code-block:: #!/bin/sh UBOOT=/.PATH.TO.UBOOT/u-boot [[ -e envstore.img ]] || qemu-img create -f raw envstore.img 64M [[ -e disk01.img ]] || qemu-img create -f qcow2 disk01.img 8M qemu-system-arm -machine virt \ -bios $UBOOT/u-boot/u-boot.bin \ -drive if=pflash,format=raw,index=1,file=envstore.img \ -netdev tap,id=net0 -device e1000,netdev=net0 \ -drive if=none,file=disk01.img,id=mydisk \ -device nvme,drive=mydisk,serial=foo \ -nographic Utilisation de QEMU avec une carte Vexpress ------------------------------------------- Démarrer QEMU avec Linux ++++++++++++++++++++++++ Choisir la carte Vexpress et compiler Linux .. code-block:: #!/bin/sh LINUX=/.PATH.TO.LINUX/linux qemu-system-arm --machine vexpress-a9 \ -kernel $LINUX/arch/arm/boot/zImage \ -dtb $LINUX/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb \ -append "console=ttyAMA0" \ -initrd initrd.gz \ -net nic -net tap \ -nographic Démarrer QEMU avec u-boot et charger Linux ++++++++++++++++++++++++++++++++++++++++++ * Préparer Linux Vexpress pour QEMU .. code-block:: $ cd linux $ make vexpress_defconfig $ export LOADADDR=0x62008000 $ make uImage * fabrication initrd pour uboot .. code-block:: $ mkimage -A arm -O linux -T ramdisk -C gzip -d initrd.gz initramfs.uImage * copie vers serveur .. code-block:: $ cp arch/arcm/boot/uImage /srv/tftp/ $ cp arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb /srv/tftp/ $ cp initramfs.uImage /srv/tftp/ * Démarrer avec u-boot sur une carte vexpress .. code-block:: # LINUX=/home/pmorel/Dev/linux # UBOOT=/home/pmorel/Dev/u-boot-master # qemu-system-arm --machine vexpress-a9 \ -kernel $UBOOT/u-boot \ -dtb $LINUX/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dtb \ -append "console=ttyAMA0" \ -net nic -net tap \ -m 1G \ -nographic * Lancer Linux depuis un serveur TFTP .. code-block:: qemu> set serverip 192.168.2.1 qemu> set ipaddr 192.168.2.2 qemu> tftp 0x90000000 uImage qemu> tftp 0x70000000 initramfs.uImage qemu> tftp 0x80000000 vexpress-v2p-ca9.dtb qemu> bootm 0x90000000 0x70000000 0x80000000 qemu> set bootcmd "set serverip 192.168.2.1; set ipaddr 192.168.2.2; tftp 0x90000000 uImage; tftp 0x70000000 initramfs.uImage; tftp 0x80000000 vexpress-v2p-ca9.dtb; bootm 0x90000000 0x70000000 0x80000000 " $ make vexpress_defconfig