Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
socideas [2006/05/02 12:33] mdc |
socideas [2006/05/16 08:08] (current) |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Google Summer of Code ideas for Etherboot/gPXE ====== | + | ====== Summer of Code Home Page Moved ====== |
- | Here you will find some ideas and other useful information for projects for students wishing to particpate in Google Summer of Code with the Etherboot Project. | + | This page has been moved to [[soc]] |
- | ===== Background Information ===== | ||
- | First, a little background. | ||
- | |||
- | You should know that we, the [[http://etherboot.org/|Etherboot Project]], create network booting code, which allows computers to load their operating system from a network. Our code can be stored in a number of places, including BIOS Flash, EPROMs, floppy, CD, HD, or other bootable media. | ||
- | |||
- | The next version of our code will be called "gPXE". Up to this point, our code has been called "Etherboot", which is also the name of our project. Another piece of software we maintain is "mknbi", which creates files in ".nbi" format, or "Network Bootable Image" format. | ||
- | |||
- | Finally, we operate the [[http://rom-o-matic.net/]] website, which dynamically generates Etherboot (soon to also be gPXE) images in a variety of formats. | ||
- | |||
- | Since a lot of what we do is centered around our mailing list ([[https://lists.sourceforge.net/lists/listinfo/etherboot-discuss|Etherboot-Discuss]]) and SourceForge CVS ([[http://sourceforge.net/projects/etherboot/]]), we would expect anyone who wants to work with us to be comfortable having their code reviewed and commented on by others in our project community. We do endeavor to maintain an environment of open discourse, with a reasonable level of civility and mutual respect. Reading our mailing list archives may be useful for getting a sense of how we work together. | ||
- | |||
- | We have a number of areas we can use help with. Since our focus is creating network boot code, it is important that if you want to help with coding you be comfortable with low-level programming -- that is, C and possibly some x86 assembler (though this is not essential for many projects, and you can pick it up as you go along). You should also understand that efficiencies of code size, runtime size, and execution speed are important to us. Low-level, or "bare-metal" programming requires patience and focus, but the sense of control and deep understanding of what is happening, and why, can be very exhilarating. | ||
- | |||
- | You can download Etherboot code from our [[http://www.sourceforge.net/projects/etherboot|SourceForge Project Page]]. You may also wish to join the | ||
- | [[https://lists.sourceforge.net/lists/listinfo/etherboot-discuss|Etherboot-Discuss]] mailing list, or browse our | ||
- | [[http://sourceforge.net/mailarchive/forum.php?forum=etherboot-discuss|Archives]] to see what sorts of things we are doing. | ||
- | |||
- | ===== Information for Students ===== | ||
- | |||
- | Thank you for your interest in our project. In this section you will find resources you may find helpful when searching for a projects and when writing a proposal. | ||
- | |||
- | If you are interested in working with us, we would strongly recommend that you join the [[https://lists.sourceforge.net/lists/listinfo/etherboot-discuss|Etherboot-Discuss]] mailing list and introduce yourself. The mailing list is a good place to ask questions about potential projects and to receive advice. | ||
- | |||
- | ==== Google Summer of Code Links ==== | ||
- | |||
- | * Main page: [[http://code.google.com/soc/]] | ||
- | |||
- | * Student FAQ: [[http://code.google.com/soc/studentfaq.html]] | ||
- | |||
- | * Student Application: [[http://code.google.com/soc/student_step1.html]] | ||
- | |||
- | ==== Etherboot Project Links ==== | ||
- | |||
- | * Main page: [[http://etherboot.org/]] | ||
- | |||
- | * SourceForge Project Page: [[http://sourceforge.net/projects/etherboot/]] | ||
- | |||
- | ==== Example Student Applications ==== | ||
- | |||
- | Here are some examples of Student Applications from previous Google Summer of Code projects. These are just to give some idea of what sorts of information is interesting in proposals. | ||
- | |||
- | * http://summerofcode.xwiki.com/xwiki/bin/view/Main/ExampleApplications | ||
- | |||
- | * http://inkscape.org/wiki/index.php/SOC_Accepted_Proposals | ||
- | |||
- | ===== Mentors ===== | ||
- | |||
- | * Marty Connor, Project Leader, Developer | ||
- | * Michael Brown, Lead Developer | ||
- | * Georg Baum, Developer | ||
- | |||
- | ===== Project Ideas ===== | ||
- | |||
- | Here are some ideas for projects for Google Summer of Code students: | ||
- | |||
- | ==== Device Driver Related Ideas ==== | ||
- | |||
- | These projects would be coded primarily in C, and would require hardware (a suitable computer and Ethernet/NIC card) to do testing. In the case of network drivers, existing drivers and Linux kernel drivers are available as starting points. Data sheets are also generally available for most NIC variations, though such documentation is sometimes unreliable. | ||
- | |||
- | * Add a device driver for an unsupported network card to Etherboot/gPXE. This will require understanding the network card driver API for gPXE, and implementing the required routines to enable an Ethernet card to be controlled by gPXE. | ||
- | |||
- | * Finish the e1000 gigabit driver update which is in progress. | ||
- | |||
- | * Add PCMCIA network booting support to Etherboot/gPXE. This would include PCMCIA and Cardbus support, and at least one wireless network driver. | ||
- | |||
- | ==== New Protocol Related Ideas ==== | ||
- | |||
- | * Add a new network protocol, such as https, ftp or smb. | ||
- | |||
- | * Add secure network booting support for gPXE. This would involve creating a secure network connection between the network client and server, and/or loading signed binaries. | ||
- | |||
- | * Implement support for IPv6. | ||
- | |||
- | ==== General Improvements to gPXE ==== | ||
- | |||
- | * Add a command line interface to gPXE to allow interactive network booting and debugging of protocol negotiations and image downloading, as well as setting parameters to be used during booting operations. Design of command syntax and functionality is an important part of this project. | ||
- | |||
- | |||
- | * Port gPXE to a new CPU architecture, e.g. an embedded system. | ||
- | |||
- | ==== Toolchain, Build and Testing Improvements ==== | ||
- | |||
- | * Develop an automated regression test framework and initial suite of tests. | ||
- | |||
- | * Extend gcc's i386 backend to support 16-bit code. This would substantially reduce the size of gPXE's compiled binary, and would increase the range of object code environments for which gcc can be used. | ||
- | |||
- | * Investigate optimisations to further reduce the code size. We already use most of the obvious techniques, so this project would require some creativity. | ||
- | |||
- | * Implement an API for reading and writing non-volatile storage (Flash and EEPROM) on network cards. This would allow user preferences to be stored on the cards. | ||
- | |||
- | * Implement a user interface for setting preferences, such as static IP addresses, default boot protocol and filename, etc. | ||
- | |||
- | ==== Other Project Ideas ==== | ||
- | |||
- | * Implement an UNDI network device driver for Linux. This would enable Linux to boot from any PXE stack (including gPXE), and would greatly improve the ease of use of network-booted Linux. | ||
- | |||
- | ---- |