This is an old revision of the document!
====== Michael Decker: Driver Development ====== ===== Overview ===== My goals for the summer are: - To update a legacy Etherboot driver to the gPXE API - To port a Linux driver to gPXE ===== Status Log ===== The following is a log of steps I've taken. Note that I don't use Linux on a daily basis. Any terminal commands below are for my reference. * Installed libc6-dev, mtools, syslinux, & gitk with Synaptic Program Manager (SPM) * Cloned git tree into samba share <code>$ git clone git://git.etherboot.org/scm/gpxe.git</code> * Successfully built gpxe <code>$ make</code> * Wrote to usb key, booted successfully on target <code>$ dd if=bin/gpxe.usb of=/dev/sdb</code> * Installed dhcp3-server via SPM and configured * Added interface to ''/etc/default/dhcp3-server'' <code>INTERFACES="eth0"</code> * Modified ''/etc/dhcp3/dhcpd.conf'' <code> # dhcpd.conf # ddns-update-style none; not authoritative; default-lease-time 600; max-lease-time 7200; host h1 { hardware ethernet 00:11:d8:0e:93:7b; } host h2 { hardware ethernet 00:30:84:31:8f:b0; } shared-network "net" { subnet 192.168.2.0 netmask 255.255.255.0 { range 192.168.2.10 192.168.2.20; option subnet-mask 255.255.255.0; option routers 192.168.2.1; deny unknown-clients; option root-path "192.168.2.1:/tftpboot"; filename "test"; } }</code> This configuration was made utilizing [[:twodhcpservers|this page]] and [[http://linux.die.net/man/5/dhcpd.conf|man dhcpd.conf]]. Hosts ''h1'' and ''h2'' are two different ethernet ports on the target. After making changes: <code>$ /etc/init.d/dhcp3-server restart</code> * Installed tftpd-hpa via SPM and configured * Created ''/tftpboot'' directory * Modified ''/etc/inetd.conf'' <code>tftp dgram udp wait root /usr/sbin/in.tftpd /usr/sbin/in.tftpd -s /tftpboot</code> * :!: Install HTTP server. * :!: Play with git. ===== Build Environment ===== Consists of three machines: A target client, a development server, and a desktop for usability. //Last update: May 16, 2008// * Target client{{ :soc:2008:mdeck:target.jpg}} * A few PC parts on my desk: 2.8 GHz P4 / 512 MiB RAM * Awaiting a PCI NIC for development * Desktop for usability * Custom desktop PC: 2.4 GHz Core2 / 2 GiB RAM * Windows XP Pro x64 * [[http://www.chiark.greenend.org.uk/~sgtatham/putty/|putty]] 0.60 * [[http://www.crimsoneditor.com/|Crimson Editor]] w/ samba file access & [[http://the.earth.li/~sgtatham/putty/0.60/htmldoc/Chapter7.html#plink|plink]] script for remote building (hello, my name is Mike and I am a Windows addict) <code>plink -l USER -batch -m commands.txt 192.168.2.1</code> * Windows Media Player for tunes ;) * Development server{{ :soc:2008:mdeck:server.jpg}} * Laptop: 1.5 GHz Pentium-M / 512 MiB RAM * Ubuntu 8.04 w/ 2.6.24-16.30 kernel * gcc 4.2.3-2ubuntu7 * libc6-dev 2.7-10ubuntu3 * mtools 3.9.11-0ubuntu1 * syslinux 2:3.53-1ubuntu2 * gitk 1:1.5.4.3-1ubuntu2 ===== Reference Links ===== * [[http://code.google.com/soc/2008/etherboot/appinfo.html?csaid=607289E796D6ABA3|GSoC Application Information]] * [[dev:netdriverapi|gPXE Network Driver API Documentation]]