This is an old revision of the document!

Project Ideas

Here are some ideas for projects for Google Summer of Code students:

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.
  • Update Etherboot drivers to work with gPXE. This will require making API changes to allow existing drivers to work with the new gPXE API. All drivers are written in C, and it will be useful to have hardware (NIC Cards, Server and Client computers) to test driver changes.
  • 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

  • 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.
  • Rewrite the Etherboot NIC database at to make it more useful for testing Etherboot releases and getting feedback from users. Improve user interface, create better voting/polling mechanism. The database is written in using PHP and MySQL.

QR Code
QR Code soc:ideas (generated for current page)