Differences
This shows you the differences between two versions of the page.
| 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] | ||