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.


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.