This is an old revision of the document!

Project Ideas

On this page we suggest 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. Some project could be developed using an x86 emulator such as Bochs or QEMU.

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.

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 gPXE device driver for an unsupported network card to 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. (We may be able to provide some of the required cards for development and testing).
  • Add a new network protocol, such as smb.
  • Implement support for IPv6.

General Improvements to gPXE

  • Port gPXE to a new CPU architecture, e.g. an embedded system. improvements

  • Add a SYSLINUX floppy download option to allow mountable floppy types.

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