evisor
1.0.0
eVisor是用C ++編寫的輕質裸金屬管理程序(1型)。該項目旨在用於嵌入式系統(ARM64設備)和教育目的。
EVISOR演示視頻 @ YouTube -Nuttx在Raspberry Pi4上運行

如果您有興趣,請隨時閱讀ゼロからのハイパーバイザ自作入門。這是一本關於創建自己的虛擬機管理程序的日本書。
建議將Ubuntu 22.04與Clang 14一起使用。目前,該軟件可能無法在Ubuntu 24或更高版本上構建。
sudo apt install cmake clang llvm該軟件不使用C ++ Standart庫(LIBSTDC ++),但是如果您達到以下CMAKE構建錯誤,請嘗試安裝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 . Rasberry PI4的設置SD卡(有關詳細信息,請參見Config/Raspi4/config.txt):
cp config/raspi4/config.txt < path_to_sdcard > /boot將nuttx圖像文件複製到SD卡:
cp examples/nuttx/nuttx.bin < path_to_sdcard > /boot將EVISOR圖像文件複製到SD卡:
cp build/kernel.bin < path_to_sdcard > /boot/kernel.bin串行控制台和輸出日誌分配給UART0(GPIO 14,GPIO 15),波特率為115200bps。
sudo minicom -D /dev/ttyUSB0
sudo apt install qemu-system-arm 請注意,QEMU 9.0或更高以上是運行此軟件的必要條件。請參閱下載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.log特別感謝以下內容,因為我在開發的早期階段特別提到了它們。