MilvusVisor is a thin hypervisor that runs on aarch64 CPUs.
The features of the MilvusVisor are the following.
MilvusVisor allows providing functions OS-independently without the overhead of device virtualization. We are currently developing MilvusVisor as a research activity to achieve HPC environments that provide root privilege to the users without virtualization overhead.
Currently, MilvusVisor provides the following function.
You can build with enabling some functions by cargo xtask build -f feature1,feautre2,....(featureN is described
like Feature Name: feature_name in each section.)
If you want to build with extra features, you can build by cargo xtask build -f default,feature1,feature2,....
If you want to build without any features, you can build by cargo xtask build -f minimum.
i210)mt27800)smmu)fast_restore)acpi_table_protection)advanced_memory_manager)contiguous_bit)a64fx)tftp)raspberrypi)virtio_net)embed_kernel)We have tested MilvusVisor on the following machines.
raspberrypiThe following table shows which feature worked on which machines.
| Test items (o: works, -: Not works, ?: Not tested) \ Machine | FX700 | FX1000 | E252-P30 | QEMU | Bluefield-2 | RPi4B | RPi5 |
|---|---|---|---|---|---|---|---|
| Booting Linux on MilvusVisor (Multi-core) | o | o | o | o | o | o | o |
| Protecting non-volatile data of Intel I210 | o | - | - | ? | - | - | ? |
| Protecting firmware update of Mellanox Technologies MT27800 | o | - | - | ? | - | - | ? |
| Protecting MilvusVisor itself against DMA attack | o | - | - | - | - | - | - |
| Fast Restore | o | o | - | o | - | - | o |
| Virtio Network | - | - | ? | o | o | - | - |
cd path/to/repo-root/src
cargo xtask build # Debug Build
cargo xtask build -r # Release build
To customize build options, please see cargo xtask help.
Next How to run the hypervisor
Docker version 20.10.8, build 3967b7d28e)cd path/to/repo-root/src
./build_by_docker.sh # You can add arguments to pass the cargo xtask command, like as `-f ...`
For more detail, please see the scripts.
First, please install QEMU that supports emulating QEMU ARM Virtual Machine, a64fx CPU.
Then, you should build the hypervisor by the above method.
After that, run the following command to run the built hypervisor.
cd path/to/repo-root/src
cargo xtask run --bios /usr/share/qemu-efi/QEMU_EFI.fd #Please set the path of your QEMU_EFI.fd
For more options, please see cargo xtask help.
/EFI/BOOT/ directory. Please confirm that there is no
important file in the partition./dev/sdX1 is the EFI partition).cargo xtask write -d /dev/sdX1 to copy the binary.
!! Please be careful not to specify a wrong partition as DEVICE because the script mount/unmount the partition and
copies the binary file with root privilege.!!BOOTAA64.EFI in the EFI partition as the EFI application to boot.cargo xtask write uses sudo command.
If you can access the target device without the root privilege, you can add the -u option.
For more options, please see cargo xtask help.
Modify each PATH in src/common/src/lib.rs.
HYPERVISOR_TFTP_PATH : The absolute path of hypervisor_kernel at the tftp serverUEFI_PAYLOAD_PATH : The absolute path of payload UEFI Application like OS bootloader at the tftp serverThe default settings assume that files are deploy on tftp server likes below.
(tftp root)
`-- uefi
|-- BOOTAA64.EFI
|-- grubaa64.efi
`-- hypervisor_kernel
cargo xtask build -f default,tftpBOOTAA64.EFI and hypervisor_kernel on tftp server.(you can rename BOOTAA64.EFI)BOOTAA64.EFI(if you renamed, adjust the name).You can generate the document by cargo doc in each cargo project directory.
If you want to see bootloader's document, please run the following command.
cd path/to/repo-root/src/hypervisor_bootloader
cargo doc --open # Browser will open
If you want to see kernel's document, please run the following command.
cd path/to/repo-root/src/hypervisor_kernel
cargo doc --open # Browser will open
This work was supported by JSPS KAKENHI Grant Number 21K17727.
$ claude mcp add MilvusVisor \
-- python -m otcore.mcp_server <graph>