github linkedin email
GSoC'18 @ Debian Report
Aug 12, 2018
3 minutes read

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.

/img/2018/gsoc/header.jpg

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

  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?

Client GUI

The client TUI is implemented in Golang and is loaded when the client computer boot.

/img/2018/gsoc/tui.png

P2P transfers

BootTorrent implements downloads via BitTorrent protocol.

/img/2018/gsoc/p2pdl.png

Server CLI

BootTorrent's server package is implemented in Python 3. Below is the screenshot of the server package running on the computer.

/img/2018/gsoc/cli.png

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.

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.


Back to posts