eVisor est un hyperviseur en métal nu léger (type 1) écrit en C ++. Ce projet est destiné à être utilisé dans les systèmes intégrés (appareils ARM64) et à des fins éducatives.
Evisor Demo Video @ YouTube - Nuttx fonctionne sur Raspberry PI4

N'hésitez pas à lire aussi si vous êtes intéressé. C'est un livre japonais sur la création de votre propre hyperviseur.
Il est recommandé d'utiliser Ubuntu 22.04 avec Clang 14. Actuellement, ce logiciel peut ne pas être construit sur Ubuntu 24 ou plus.
sudo apt install cmake clang llvm Ce logiciel n'utilise pas les bibliothèques de standart C ++ (libstdc ++), mais si vous appuyez sur une erreur de construction CMake suivante, essayez d'installer libstdc++-12-dev .
/usr/bin/ld: cannot find -lstdc++: No such file or directorymkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/cross-toolchain-clang-aarch64.cmake
-DCMAKE_BUILD_TYPE={Debug | Release}
-DBOARD={raspi4 | qemu}
-DTEST_GUEST={serial | test_app | nuttx | linux}mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE={Debug | Release}
-DBOARD={raspi4 | qemu}
-DTEST_GUEST={serial | test_app | nuttx | linux}mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/cross-toolchain-clang-aarch64.cmake
-DCMAKE_BUILD_TYPE=Release -DBOARD=raspi4 -DTEST_GUEST=nuttx
cmake --build . Configuration de la carte SD pour Rasberry PI4 (voir config / raspi4 / config.txt pour les paramètres détaillés):
cp config/raspi4/config.txt < path_to_sdcard > /bootCopiez le fichier image NUTTX sur la carte SD:
cp examples/nuttx/nuttx.bin < path_to_sdcard > /bootCopiez le fichier d'image Evisor sur la carte SD:
cp build/kernel.bin < path_to_sdcard > /boot/kernel.binLa console série et les journaux de sortie sont attribués à UART0 (GPIO 14, GPIO 15), avec un taux de bauds de 115200bps.
sudo minicom -D /dev/ttyUSB0
sudo apt install qemu-system-arm Notez que QEMU 9.0 ou plus est nécessaire pour exécuter ce logiciel. Veuillez consulter le téléchargement Qemu.
mkdir build && cd build
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cmake/cross-toolchain-clang-aarch64.cmake
-DCMAKE_BUILD_TYPE=Release -DBOARD=qemu -DTEST_GUEST=nuttx
cmake --build . qemu-system-aarch64
-machine virt,virtualization=on,gic-version=2
-cpu cortex-a72 -smp 4
-m 4G
-nographic -net none
-chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline
-kernel ./kernel.elf
-drive file=../examples/nuttx/nuttx.bin,format=raw,id=drive0,if=none
-device virtio-blk-device,drive=drive0,bus=virtio-mmio-bus.0qemu-system-aarch64
-machine virt,virtualization=on,gic-version=2
-cpu cortex-a72 -smp 4
-m 4G
-nographic -net none
-chardev stdio,id=con,mux=on -serial chardev:con -mon chardev=con,mode=readline
-kernel ./kernel.elf
-drive file=../examples/nuttx/nuttx.bin,format=raw,id=drive0,if=none
-device virtio-blk-device,drive=drive0,bus=virtio-mmio-bus.0
-d mmu,in_asm,guest_errors,int,exec,page -D qemu_trace.logDes remerciements particuliers qui ont suivi depuis que je les ai particulièrement référés au début du développement.