Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
soc:2009:pravin:project_plan:start [2009/05/17 07:53]
127.0.0.1 external edit
soc:2009:pravin:project_plan:start [2009/06/03 14:48] (current)
less1
Line 1: Line 1:
 ====== Pravin Shinde: boot.kernel.org - Universal remote network booting for the masses ====== ====== Pravin Shinde: boot.kernel.org - Universal remote network booting for the masses ======
 +Project aims for creation of website, which can be used by any user for creating and downloading
 +customized boot images, system tools, utilities and network installation images based on needs.
 +It will also support HTTP based booting with PXELinux and allow users to customize the system using
 +the flexibility of interface provided be Syslinux and boot from it without installation. We plan to enable normal
 +users to experiment with different tools, utilities and system images without any hassles.
  
 ===== Project Plan ===== ===== Project Plan =====
 +
 +This project is about making the network boot process available to users on a large scale.
 +
 +The project aims to enable the creation of a site (say, boot.kernel.org) which can be used by
 +any person in multiple ways to get a customized system image, hardware diagnostics,​ utilities,
 +security and rescue tools and network installation images. This can be done either through any
 +web browser by creating and downloading custom images, or with tools like PXElinux which can
 +contact boot.kernel.org at boot time over HTTP for fetching a bootable image.
 +
 +The reasoning behind this project is to provide one stop location for user where he can
 +find and use most of the diagnostic, rescue tools and various system images without any
 +need for creation of dedicated media or installation. It will allow users to try out various systems
 +in painless way.
 +
 +This project is based on "PXE Knife" which let the user select and boot from various
 +system utilities using PXE. Currently PXE Knife works over TFTP. The first step of this
 +project will be to extend PXE Knife to work over HTTP. This project goes beyond "PXE Knife"
 +by supporting the hosting of actual applications on centralized server and giving out only
 +small stub to user which will boot the system and bring it to network. Then the stub will
 +contact central server for any application/​utilities. This way, initial download time is
 +significantly reduced and all applications can be always kept uptodate at central location
 +of server. This way, user will always get most updated and *working* application whenever he needs.
 +
 +Next immediate step will be about customizing PXELinux to use boot.linux.org.
 +This customized PXEClient is nothing but regular PXELinux with an embedded script that sets the "​next-server"​
 +to boot.kernel.org regardless of what the local DHCP server provides. This way, any user can use boot.linux.org without
 +having to (re)configure a dhcp server. [Done]
 +
 +Machines with static IP addresses can be handled by providing a separate embedded script which can be generated at
 +boot.kernel.org ​ by providing an IP-address, router and DNS server address corresponding to the user's machine. These
 +values will be hard-coded into the embedded script which will be bundled with PXEClient handed to the user.
 +User will be provided with web-interface at boot.linux.org where he will feed in his network setting, and customized
 +PXEClient embedded script for user's network will be automatically generated. [Currently working on]
 +
 +These customized PXElinux clients will start the machine and contact boot.kernel.org. boot.kernel.org will return a
 +Syslinux image with a menu providing the user with a list of various systems and tools/​utilities he/she wishes to select
 +for his/her system. Once the user makes his/her choices, boot.linux.org will create a new system image by bundling
 +together a precompiled kernel, a prepared initramfs and appending the selected tool/​packages/​stubs to it. This customized
 +system image returned by boot.linux.org will be used by the machine to boot.
 +
 +Syslinux will be used to provide the user with an interface where he/she can select which
 +kernel and which tools he wants to bundle into the image. Depending on the selection made
 +by the user, an image will be dynamically generated and made available to him/her. The default interface will be using
 +vesamenu.c32 giving simple navigation, and expert mode interface can be provided using menu.c32 giving more flexibility.
 +
 +The image generated by boot.kernel.org will consist of two major components:
 +the kernel itself and initramfs. The kernel portion will be common for all system images
 +generated for a particular architecture. Most of the device drivers will be compiled as modules
 +to reduce the hardware dependence and size of the kernel. These kernel modules will be part of
 +the initramfs component. The base system kernel will be designed on the lines of "​Ultimate boot CD" or
 +"​Knoppix"​ which are able to boot on most commodity hardware. But root filesystem will be entirely based
 +on initramfs and hence self sufficient for execution.
 +
 +To keep the size of the system image resonably small, base system will only provide minimal functionality.
 +However, the user will be provided with options to add any applications or utilities he/she wants
 +to bundle in the image. The application selected by users will be appended to initramfs base system
 +by exploiting the ability to append into CPIO as one more layer. This will provide semi-transparency to users
 +as when user selects any appliction/​tool,​ all the dependencies will be precomputed.
 +
 +After accepting the selection from a user's side, boot.kernel.org will dynamically append the
 +applications selected to the base initramfs system. It will also add any other appliction/​library needed
 +for selected application to work. As all the tools which will be will be pre-configured and kept ready for deployment,
 +only appending the binaries to the initramfs will be needed (in addition to changes in configuration of base system, if required).
 +As no compilation is involved, this step can be done with an acceptable response time.
 +
 +This system can be also extended beyond providing basic rescue facilities by providing the ability
 +to perform a network installation. Initially, the base system provided to the user will boot the machine,
 +after which the network installation is kickstarted using the repository available on boot.kernel.org.
 +By providing central repository and custom boot images Network installtion can be made possible.
 +Most distributions come with network boot support over TFTP. But with small modifications these destributions can
 +also support booting and installation over HTTP.
  
 ==== Summary ==== ==== Summary ====
Line 8: Line 84:
  
 ==== Milestones and Timeline ==== ==== Milestones and Timeline ====
 +Deliverables with Timeline (Duration = 12 weeks)
 +
 +[Week-0,1]
 +    1. PXE Knife on HTTP.
 +    2. PXE clients with embedded scripts.
 +
 +[Week-2,3]
 +    3. Web interface for customized PXE-client based on network configuration of the user.
 +    4. Web interface for PXE Knife images of HTTP.
 +
 +[Week-4]
 +    5. Detailed Syslinux menu from where user can choose which applications he wants add.
 +
 +[Week-5,6]
 +    6. Base system with generic kernel and base initrdfs which should boot on most of the systems.
 +
 +[Week-7,8]
 +    7. Precompiled applications and their respective configurations.
 +
 +[Week-9,10]
 +    8. scripts for dynamically appending above precompiled applications into initramfs,
 +        and reconfiguring the system so that appended application will work.
 +
 +[Week-11]
 +    9. Providing various Network installable distributions online.
 +    10. Documentation
 +[End]
  

Navigation

* [[:start|Home]] * [[:about|About our Project]] * [[:download|Download]] * [[:screenshots|Screenshots]] * Documentation * [[:howtos|HowTo Guides]] * [[:appnotes|Application Notes]] * [[:faq:|FAQs]] * [[:doc|General Doc]] * [[:talks|Videos, Talks, and Papers]] * [[:hardwareissues|Hardware Issues]] * [[:mailinglists|Mailing lists]] * [[http://support.etherboot.org/|Bugtracker]] * [[:contributing|Contributing]] * [[:editing_permission|Wiki Edit Permission]] * [[:wiki:syntax|Wiki Syntax]] * [[:contact|Contact]] * [[:relatedlinks|Related Links]] * [[:commerciallinks|Commercial Links]] * [[:acknowledgements|Acknowledgements]] * [[:logos|Logo Art]]

QR Code
QR Code soc:2009:pravin:project_plan:start (generated for current page)