aVisor is a bare-metal hypervisor that runs on the Raspberry Pi 3. It can be used to learn about the basic concepts of ARM virtualization and the principles of hypervisors and operating systems.
DEMO
fig.1:aVisor Demo
Compilation and QEMU Simulation
./scripts/demo.sh // Compile and run the demo
./scripts/clean.sh // Clean the project
Operation In the Console
The above demo will run 4 Guest VMs on the Hypervisor. After startup, press Enter to go to the hypervisor’s console.
- echo: A baremetal binary that echoes keyboard input.
- lrtos: A miniature operating system that runs two user mode processes after startup, one prints “12345” and the other prints “abcde”. The lrtos kernel supports the process scheduling.
- uboot: The standard Das U-Boot Bootloader.
- FreeRTOS: The FreeRTOS VM runs two tasks, one prints “12345” and the other prints “ABCDE”. The tasks are scheduled by FreeRTOS.
help // Print the help
vml // Display the current Guest VMs info
vmc <vm id> // Switch from the hypervisor's console to a Guest VM's console
@+0 // Switch back to the hypervisor's console from a Guest VM's console
Running On The Physical Board
Fig.2:GPIO Pin connection
- Red:5V
- black:GND
- white:TXD
- green:RXD
Copy config.txt, bootcode.bin, start.elf, lrtos.bin, echo.bin, kernel8.img to the SD card, connect the USB serial port to the computer, and then you can access aVisor through the serial port.
References
-
aVisor now supports loading and running virtual machines dynamically
-
docker run --rm -it ssqre/avisor bash -c /home/aVisor/run.sh