Google Summer of Code'18 - Final Report Link to heading
BootTorrent: An Overview Link to heading
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 Link to heading
- 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? Link to heading
Client GUI Link to heading
The client TUI is implemented in Golang and is loaded when the client computer boot.
P2P transfers Link to heading
BootTorrent implements downloads via BitTorrent protocol.
Server CLI Link to heading
BootTorrent’s server package is implemented in Python 3. Below is the screenshot of the server package running on the computer.
OS Loader Link to heading
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 Link to heading
It is possible to package BootTorrent as a Debian package with the provided packaging instructions.
What’s missing? Link to heading
LTSP integration Link to heading
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 Link to heading
OpenTracker packaging Link to heading
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 Link to heading
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 Link to heading
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 Link to heading
|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 Link to heading
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 Link to heading
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 Link to heading
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.