Google Summer of Code'18 - Final Report Link to heading

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.

image

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

  1. Enable P2P network booting of any chosen OS.
  2. Provide a basic interface for the user to select OS.
  3. Package the solution as a Debian package.
  4. 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.

image

P2P transfers Link to heading

BootTorrent implements downloads via BitTorrent protocol.

image

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.

image

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.