BeagleBoard/GSoC/2019Proposal/Xen on BeagleBoard-x15
The project idea is to make Xen hypervisor available and easy to use on beagleboard-x15. To achieve this, it is planned to write Xen-supporting code and tutorials for Xen setup on the board. Another project goal is to improve user experience by working on optimizations for Beagleboard's kernel virtualization support code and/or on user-space tools.
Previously, the problem was discussed in xen mailing list and in beagleboard mailing list. The general solution wasn't provided and it seems that the problem still does exist.
The virtualization will make prototyping of virtualization-based security solutions easier in such areas like automotive computing and mobile privacy (BYOD problems).
A patch required for application is here.
Student: Denis Obrezkov
Mentors: Jason Kridner, Stefano Stabellini, Julien Grall, Iain Hunter
Most of the project goals were achieved.
School: University of Bremen
Primary language: Russian
Typical work hours: 9AM-5PM UTC
Previous GSoC participation: previous participation (RTEMS port for HiFive1). The main reason for participation is to make embedded virtualization available for users and to enhance my skills in embedded Linux, Xen and improve my knowledge of ARM architecture.
About your project
Project name: Xen on BeagleBoard-x15
In my project I want to provide a working implementation of Xen hypervisor on BeagleBoard-x15. This implementation will allow users to experiment on embedded virtualization and in related fields like automotive, critical systems prototyping and processor's resources sharing. It might also provide very interesting possibilities for heterogeneous resources' utilization. Another important outcome for both Xen and Beagleboard communities is a set of documentation on installation and usage processes. I hope that the project will also allow to make both this projects (beagleboard and xen) more popular among open-source and industrial developers.
My own motivation for this project is to improve open-source embedded virtualization. The knowledge obtained during the project will simplify my work in the field of embedded and mobile security.
The technology stack in this project involves arm architecture, Linux kernel, Xen virtualization and bootloading. The main programming language is C and assembler will likely be used. Also, some C++ might be used for writing utilities. The hardware needed for this project is Beagleboard-X15 and xds-200 debugger. The gdb debugger will probably be used in this project.
Provide a development timeline with a milestone each of the 11 weeks and any pre-work. (A realistic timeline is critical to our selection process.)
to find out what exactly I want to accomplish to collect all required documentation (ARM, Xen, Linux) to make introductory Youtube video
2019-06-03: Milestone #1
to set up a working environment and document Xen for Qemu experience
2019-06-10: Milestone #2
to start implementing interrupt controller support for Xen to start a small report on it (wiki page)
2019-06-17: Milestone #3
to make the first naive implementation of interrupt controller
2019-06-24: First evaluation milestone
to allow a dom0 machine to run on Xen (task switching, timer interrupts) to document it properly
2019-07-01: Milestone #5
to allow a dom0 machine to run on Xen (further improvements) change documentation
2019-07-08: Milestone #6
to add uart interrupts support
- to add documentation on debugging
2019-07-15: Milestone #7
to provide better uart support to add documentation
2019-07-22: Second evaluation milestone
to add other periphery support to allow dom0 run on Xen without serious problems to document periphery
2019-08-05: Milestone #9
- to allow both dom0 and domU to run simultaneously
2019-08-12: Milestone #10
- to check xen-tools support
- to document xen-tools support
to improve code quality
2019-08-19: Coding completion milestone
to improve code quality
- Completion Youtube video
Some milestones weren't achieved and some of them turned out to be redundant. For example, though documentation on debugging (with a jtag-debugger) was planned, it didn't contribute directly to the main goal, so the decision was taken to omit the step. At the same time, domU-related milestones weren't achieved at all. Since, the support of domU more or less trivial and should work almost "out of box", I decided to work more on the code for better dom0 support.
Experience and approach
Currently, I am a PhD student in the University of Bremen, Germany. In my PhD project I am working on security mechanisms for embedded and mobile systems. Currently, I am developing a simple mechanisms for managing SELinux attributes in a natural way for both Android and Linux systems with Qt (the work is in a very initial state).
Before this study, I was working with OMAP-L137 (with both ARM and C6x cores) for two years in a R&D company. My main duties were writing bare metal code (UART and SPI drivers) and embedded Linux user-space utilities, mostly, parsers.
In 2017, I have participated in GSoC with RISC-V on RTEMS project. My goal was to make a port of RTEMS for the HiFive1 board. The port was done till the end of the GSoC. Though, it wasn't merged (because of a very small memory on the board (32 KB) while RTEMS required at least 64 KB) it still might be used for future SiFive SoCs.
I am pretty optimistic about my chances on successful implementation with the proposed project. On the one hand, I will work on the board that already had few revisions and has an established community. On the other hand, I will be supported by mentors from different organizations (ARM, Xen, 3rd Party). And since I have no problems with requesting help I assess my chances on successful completion of the project as pretty high.
What will you do if you get stuck on your project and your mentor isn’t around?
Most of the time, when I get stuck I go to the related IRC channels and ask for help. If I don't receive any help I ask people in mailing lists and on related forums.
If successfully completed, what will its impact be on the BeagleBoard.org community? Include quotes from BeagleBoard.org community members who can be found on http://beagleboard.org/discuss and http://bbb.io/gsocchat.
The main benefit from my project is opening of a new area of Beagleboard's application. At I stated in the description of the project it'll allow to explore with BeagleBoard such fields as automotive and embedded security.
I think that your proposed port of Xen is a good and useful project for GSoC. The X15 has a lot of processing power, lending itself well to topics (like virtualization) that have historically not been a focus in ARM-based hobbyist/maker platforms. It is good to see that there might be a chance that expertise in the community can support virtualization on the board and provide a starting point for containers for security and the like..
It is an ambitious and non-trivial project, but you've done much of the background exploration on it and appear to have a good grasp on how much effort it will take.
Is there anything else we should have asked you?