GSoC'18 @ Debian Report
Google Summer of Code'18 - Final Report
GSoC'18 project under the mentorship of Andrea Trentini and Giovanni Biscuolo for Debian. You can see the project on the official Debian website or browse the code repository.
BootTorrent: An Overview
Aptly named, the core idea is to enable network booting of a cluster of computers on a local network over BitTorrent protocol.
BootTorrent’s distributed peer-to-peer (P2P) approach to transferring files over the network draws a sharp contrast against the traditional Client-Server based solutions. The advantage of BootTorrent’s approach to network booting is that usage of BitTorrent protocol to transfer Operating System images over the network is significantly less strenuous on the central server and results in some amazing speedups in the process of bringing a large cluster fully functional.
Objectives
- Enable P2P network booting of any chosen OS.
- Provide a basic interface for the user to select OS.
- Package the solution as a Debian package.
- Integrate into the LTSP project.
What works?
Client GUI
The client TUI is implemented in Golang and is loaded when the client computer boot.
P2P transfers
BootTorrent implements downloads via BitTorrent protocol.
Server CLI
BootTorrent’s server package is implemented in Python 3. Below is the screenshot of the server package running on the computer.
OS Loader
BootTorrent is capable of loading any Linux based OS via Kexec and other OSs by using build in QEMU hypervisor.
Read more about it in the documentation.
Debian Packaging
It is possible to package BootTorrent as a Debian package with the provided packaging instructions.
What’s missing?
LTSP integration
Midway between the project, as BootTorrent was taking it’s shape, it was realized that LTSP and BootTorrent are incompatible with each other. So, LTSP integration was dropped.
You can read the full report on LTSP integration as well.
Additional Tasks
OpenTracker packaging
OpenTracker is a dependency of BootTorrent and it’s Debian packaging was not available. Hence, I decided to package OpenTracker for Debian as well.
You can browse my fork of OpenTracker on GitHub.
Python Packaging
BootTorrent, from the very beginning, was packaged as a valid Python package.
You can directly install it with Pip using this command:
$ pip install git+https://github.com/shreyanshk/boottorrent
Auto Docs Generation
BootTorrent is thoroughly documented and with the help of ReadTheDocs, the documentation is automatically generated after every commit.
The full documentation is currently live on the Internet.
Weekly reports
Week 1 | Week 2 | Week 3 | Week 4 |
---|---|---|---|
Week 5 | Week 6 | Week 7 | Week 8 |
Week 9 | Week 10 & 11 | Week 12 |
Further Reading
The full documentation is available on the Internet.
To get a better understand of where BootTorrent can be useful, consider reading the usecase documentation.
For details on the architecture of BootTorrent, you can read the included architectural documentation.
For implementation specific details, you can read the internals documentation.
Final Summary
The project was completed to the mentor’s satisfaction with all the requirements fulfilled except LTSP integration (as reasoned above). The documentation is live along with packaging.
Acknowledgment
I would like to thank Debian for giving me an opportunity to work on BootTorrent and Google for enabling my work.
I would also like to thank my mentors Andrea Trentini and Giovanni Biscuolo for believing in me and guiding me along the process.
Additionally, I am very thankful to all my dear ones for keeping me motivated.