Boot many machines via BitTorrent(draft)
Doğukan ÇELİK
Contact/Email/IRC nick:
Email addresses: dogukan.celik@itu.edu.tr, celikd@itu.edu.tr IRC nick: dogukan github: github.com/dgkncelik debian-wiki: https://wiki.debian.org/DogukanCelik salsa: https://salsa.debian.org/dogukan-guest time zone: UTC +3
Background:
I am currently studying at Istanbul Technical University(ITU , Istanbul Teknik Universitesi) / TURKEY in major of Astronautic and Aerospace Engineering (3rd year). At the same time i am working at university's IT head office as part time with system administration team(4 day in a month , for almost 2 years). We are having mixed infrastructure that includes both Windows and Linux/GNU based services. With this experience i am able to install and manage Linux/gnu and windows infrastructure services such as Apache web, MySQL, PostgreSQL, dhcp, active directory and dns. In addition to that, programing languages also in my interest area. Java as may main programing language, i also have experience in php(and it's frameworks like code igniter, laravel). ?GitHub: github.com/dgkncelik, also contributing in IT office's organization: github.com/ITUBIDB. We are also having terminal services in our services. In laboratories -which are almost ~800 computer, ITU is pretty crowded ~25.000 enrolled student,- and administration office diskless computers booting Ubuntu image on network and users connects terminal services with RDP session. Which makes me experienced person about network booting infrastructure. My Linux/GNU experience started while i was in high school with Pardus -Turkish government supported Linux distribution-. After the day i install my first Linux distribution, i am trying to learn new things every day. It will be my first community experience on global scale if selected.
Project title: Boot many machines via BitTorrent.
Project details:
As mentioned in http://sl-lab.it/dokuwiki/lib/exe/fetch.php/tesi:tesi_bruschi.pdf having single source of booting is jam. However, including clients for distributing necessary files has significant effect on tftp server's network traffic load. Every client wants exactly the same files which distributing by server.So, server is sending same files (which are Linux kernel and initramfs for netboot) over and over again to different clients. BitTorrent is a protocol that aims to distribute files over network without centralize manner. If the client have any part of a resource,it can share it's part to other clients which this protocol helps to reduce server's load and faster boot time. But this project also have some drawbacks. Besides UDP's lack of encryption, device's firmware only supports TFTP for network booting. To workaround the problem, minimal Linux distribution can be use for middleware before downloading necessary files via BitTorrent(e.g. ?SliTaz, ?PuppyLinux). Other drawback is that for booting via TFTP client needs local network DHCP server to response with proper entry.
Simply the workflow will be;
- 1- Client requests IP address via DHCP; 2- Server response DHCP package with "filename" field (which is the name of boot loader on server); 3- Client downloads kernel and initramfs from server via TFTP; 4- Minimal distro boots;
5- Minimal distro runs scripts that downloads different kernel and OS via BitTorrent; 5- Minimal distro boots new OS (with kexec -kernel exec-);
This project can also use by LTSP(Linux Terminal Server Project). A plugin -which has GUI or TUI- can help Linux terminal server to deliver bootable media via BitTorrent protocol. Basically what plugin does will be present interface for terminal server. The interface simply implements that which operation system will be delivered to clients as middle-ware while network booting via BitTorrent to connect Linux terminal server.
Synopsis:
This project aims to deliver a Debian package which help users network boot an operation system via BitTorrent protocol. Project also covers plugin which integrates that project with LTSP(Linux Terminal Server Project).
Benefits to Debian
Especially institutions like universities, hospitals, companies have multiple devices using by workers, students etc. Converting all these device into centralize, diskless and network bootable form will help to manage devices with less effort and reduce end-user's device cost. Making this project a part of LTSP will make LTSP more efficient system. For system administrators who use Debian, this project help them to manage and configure their end-user devices more easily. In addition to that, a global Debian distribution service -a system which i named- can deliver Debian OS to any internet user with little help of their local DHCP server.
Deliverables:
A Debian package which help users to boot Debian OS (or any other distro) via BitTorrent(scripts for this operation already exists)s
- An interface for choosing what ISO -which served by server- to boot
Integrating "boot many machines via BitTorrent" project to LTSP(Linux Terminal Server Project). Covers developing a package for LTSP.
Project schedule:
- Community Bonding Period (23rd April - 14th May)
- Understand how Debian Community works. Which tools and ways are using to communicate. Understand the decision making flow inside the community.
- Decide way of communication with mentors.
- Learning which state a package passing through until releasing
- Learning how LTSP works under the hood (installing example LTSP server).
- Learning how to create Debian package (creating simple .deb package).
- [15th May - 21th May]
- Discussing work flow for booting operation with mentors
Proof-of-concept for booting via BitTorrent
- Generalizing script with parameters (e.g.: server's IP address should not be static it should be parameterize via configuration)
- Having a decision about last form of scripts
- [22th May - 28th May]
- Creating repository for project and implementing script.
- Installing test environment and testing script on test infrastructure.
- [29th May - 3rd June]
- I will not be available due to the university's final exams
- [4th June - 15th June]
- Discussing about possible improvements
- Testing and debugging
- Submitting evaluation-1 content
- [16th June - 22nd June]
- Discussing about GUI/TUI which will help user to select ISO for booting
- Creating repository and implementing GUI/TUI
- Checking integrity of interface with possible Debian package content
- [23th June - 29th June]
- Testing and debugging for interface
- Creating Debian package
- Writing document and man page for Debian package
- [30th June - 6th July]
- Testing and installing package on freshly installed system.
- [7th July - 13th July]
- Discussing work flow of plugin
- Establishing simple LTSP infrastructure via multiple clients
- Submitting evaluation-2 content
- [14nd June - 20th June]
- Going deep in LTSP to understand how plugin works in LTSP
- Creating repository for projects this part and start implementing the plugin
- [21th June - 31th June]
- Implementing plugin
- [1st Aug - 6th Aug]
- I will not be available due to the university's summer school exams
- [7th Aug - 14th Aug]
- Checking integrity of plugin with existing debian package which created by during project
- Testing and debugging
- Creating documentation and man page for plugin
- Submitting evaluation-3 content
- Community Bonding Period (23rd April - 14th May)
Tools:
- I am using Ubuntu 16.04 LTS on my personal computer which has 5th generation i5 Intel processor and 16RAM. I am using vim ,notepad++, intelliJ community edition(which is opensource) with OpenJDK for editing and developing.
- I have unlimited 24/7 internet access in home and school (bandwidth: +100Mbit/s).
- The office that i work is supporting opensource and using open source projects and they also let me access test environments like kvm server(for creating test virtual machines) and computer labs.
Exams and other commitments:
- Yes, I have and i already put them in program schedule.
Other summer plans:
- I do not have any plans
* Why Debian?:
- In any kind of discipline computers have unavoidable place.As everybody knows computers without operation systems are not possible. With this point of view giving computers freedom is the key thing to have freedom in every parts of life. That is what Debian ensures. Freedom! and i also believe that "programmers of today are the wizards of future."
My previous Debian contributions:
- Unfortunately, i do not have any.
Are you applying for other projects in SoC?:
Yes, i am also applying a project on GSoC 2018 which name is ?"A calendar database of social events and conferences" on Debian
Other resources: