eVisor هو فرط المعادن العارية خفيفة الوزن (النوع 1) مكتوب في C ++. هذا المشروع مخصص للاستخدام في الأنظمة المدمجة (أجهزة ARM64) ولأغراض تعليمية.
Evisor Demo Video @ youtube - يعمل Nuttx على Raspberry PI4

لا تتردد في قراءة ゼロからのハイパーバイザ自作入門 أيضًا إذا كنت مهتمًا. إنه كتاب ياباني عن إنشاء Hypervisor الخاص بك.
يوصى باستخدام 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 . قم بإعداد بطاقة SD لـ Rasberry PI4 (انظر 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) ، بمعدل باود 115200 بت في الثانية.
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شكر خاص للمتابعة منذ أن أشرت إليها بشكل خاص في المرحلة المبكرة من التطوير.