Boot many machines via bittorrent
Description of the project: Network booting is widely used today: for thin-client computing, cluster computing, operating system installation and context switching in classrooms (i.e., for exams or different lessons). Currently available netboot protocols are the "trivial file transfer protocol" (TFTP) and "hypertext transfer protocol" (HTTP). When a group of machines need to simultaneously boot, the boot server becomes a bottleneck and it is very easy to reach the server network capacity, thus grinding the whole system to a halt. P2P network booting could relieve the server burden and some solution already "exists", but they are either too complicated, very O.S. specific or even "described in a paper but unavailable"... At Università di Milano (Italy) I supported a thesis that succeded in creating a (GPL-licensed) BitTorrent based two-phase booting system, implemented in a less-than-a-hundred-lines script achieving an almost flat boot time with respect to the number of nodes booting together. This project proposal aims at (at least) "packaging" it into a standard Debian package, then expanding it into a more automated e user-friendly product, maybe also integrating it into the famous LTSP project.
Confirmed Mentor: Andrea Trentini (Università degli Studi di Milano, Italy)
How to contact the mentor: http://atrent.it
Confirmed co-mentors: Giovanni Biscuolo
Deliverables of the project (in random order):
- debian package for the current (already developed) system
integration into LTSP project (maybe creating a "plugin" package for LTSP, e.g. something such as ltsp-server-boottorrent)
- doc translation into English (this would be done by the mentor, don't worry)
- creation of a "GUI" (ncurses accepted!) to let the use choose (and optionally download) ISO images to be served for boot
Desirable skills:
critical thinking
disciplined development/admin skills
SCM tools (i.e. git, nothing else)
- network knowledge (above all PXE, bootp, TFTP, etc.)
What the intern will learn:
- creating Debian packages
- documenting projects
- advanced shell scripting
Application tasks:
- git commit, merge, solve conflicts, etc.
- command line operations (filesystem, processes, etc.)
- create small shell script
- NOT using the mouse
Related projects:
- Debian packages (some of these will be a dependency for this project): ltsp*, tftp|bootp|pxe packages